欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告

      時(shí)間:2019-05-14 04:41:53下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告》。

      第一篇:嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告

      南京郵電大學(xué)通信與信息工程學(xué)院

      實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)名稱(chēng):實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的設(shè)計(jì)

      實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立 實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)

      課程名稱(chēng)嵌入式系統(tǒng)B

      班級(jí)學(xué)號(hào)B13010711 姓名馬俊民

      開(kāi)課時(shí)間 2015/2016學(xué)年第1學(xué)期

      實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、學(xué)習(xí)ADS開(kāi)發(fā)環(huán)境的使用;

      2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語(yǔ)言及C語(yǔ)言程序設(shè)計(jì);

      3、學(xué)習(xí)和掌握匯編語(yǔ)言及C語(yǔ)言的混合編程方法。

      二、實(shí)驗(yàn)內(nèi)容

      1、編寫(xiě)和調(diào)試匯編語(yǔ)言程序;

      2、編寫(xiě)和調(diào)試C語(yǔ)言程序;

      3、編寫(xiě)和調(diào)試匯編語(yǔ)言及C語(yǔ)言的混合程序;

      4、編寫(xiě)程序測(cè)試多寄存器傳送指令的用法。

      三、實(shí)驗(yàn)原理

      ADS全稱(chēng)為ARM Developer Suite,是ARM公司推出的新一代ARM集成開(kāi)發(fā)工具?,F(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。

      ADS用于無(wú)操作系統(tǒng)的ARM系統(tǒng)開(kāi)發(fā),是對(duì)裸機(jī)(可理解成一個(gè)高級(jí)單片機(jī))的開(kāi)發(fā)。ADS具有極佳的測(cè)試環(huán)境和良好的偵錯(cuò)功能,它可使硬件開(kāi)發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計(jì)打基礎(chǔ),為BootLoader的編寫(xiě)和調(diào)試打基礎(chǔ)。

      1.ADS軟件的組成

      ADS由命令行開(kāi)發(fā)工具、ARM運(yùn)行時(shí)庫(kù)、GUI開(kāi)發(fā)環(huán)境(CodeWarrior和AXD)、實(shí)用程序、支持軟件等組成。

      2.GUI開(kāi)發(fā)環(huán)境

      ADS GUI開(kāi)發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開(kāi)發(fā)工具,而AXD是調(diào)試工具。

      使用匯編語(yǔ)言進(jìn)行編程簡(jiǎn)單、方便,適用于初始化硬件代碼、啟動(dòng)代碼等。匯編語(yǔ)言具有一些相同的基本特征:

      1.一條指令一行。

      2.使用標(biāo)號(hào)(label)給內(nèi)存單元提供名稱(chēng),從第一列開(kāi)始書(shū)寫(xiě)。3.指令必須從第二列或能區(qū)分標(biāo)號(hào)的地方開(kāi)始書(shū)寫(xiě)。4.注釋必須跟在指定的注釋字符后面,一直書(shū)寫(xiě)到行尾。

      在ARM匯編程序中,每個(gè)段必須以AREA作為段的開(kāi)始,以碰到下一個(gè)AREA作為該段的結(jié)束,段名必須唯一。程序的開(kāi)始和結(jié)束需以ENTRY和END來(lái)標(biāo)識(shí)。嵌入式C語(yǔ)言設(shè)計(jì)是利用基本的C語(yǔ)言知識(shí),面向嵌入式工程實(shí)際應(yīng)用進(jìn)行程序設(shè)計(jì)。為了使單獨(dú)編譯的C語(yǔ)言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。

      四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析

      1.創(chuàng)建項(xiàng)目工程

      在File菜單中選擇New命令,打開(kāi)一個(gè)新建工程對(duì)話框。在Project選項(xiàng)卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項(xiàng)目名稱(chēng),點(diǎn)擊確定。彈出工程窗口。

      選擇File菜單中的New命令,選擇File標(biāo)簽頁(yè),在File name文本框中輸入要?jiǎng)?chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。

      2.用匯編語(yǔ)言設(shè)計(jì)程序?qū)崿F(xiàn)10的階乘

      AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在這個(gè)程序中,我們首先對(duì)R0和R1賦值,將R0作為一個(gè)變量,而R1作為一個(gè)存貯階乘值的寄存器。在每進(jìn)行一次乘法之后,將R0減1。同時(shí)在做完減法后進(jìn)行判斷,如果此時(shí)R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。

      3.用調(diào)用子程序的方法實(shí)現(xiàn)1!+2!+3!+?+10!,代碼如下: asmp.s

      AREA JC, CODE, READONLY

      EXPORT JCP

      ENTRY JCP

      ADD R3, R0, #1

      MOV R2, #1

      MOV R1, #1 LOOP MUL R0, R1, R2

      MOV R1, R0

      ADD R2, R2, #1

      CMP R2, R3

      BNE LOOP

      NOP

      NOP

      MOV PC, LR

      END

      PROGC.c #include Extern int JCP(int N)

      int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)

      res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在這個(gè)程序中,主程序由c語(yǔ)言完成作求和,子程序由匯編語(yǔ)言寫(xiě)成作階乘。

      5.實(shí)現(xiàn)字符串的逆序復(fù)制TEXT1=“HELLO”=>TEXT2=“OLLEH”

      AREA invstring, CODE, READONLY start

      ADR R1,TEXT1

      ADR R2,TEXT2

      MOV R3, #0 LOOP

      LDRB R0,[R1], #1

      ADD R3,R3,#1

      CMP R0,#0

      BNE LOOP

      SUB R1,R1,#2

      LOOP1

      LDRB R0,[R1], #-1

      STRB R0,[R2], #1

      SUB R3,R3, #1

      CMP R3,#1

      BNE LOOP1

      MOV R5,#&55

      TEXT1

      TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END

      五、實(shí)驗(yàn)小結(jié)

      在這次實(shí)驗(yàn)中,學(xué)會(huì)了如何使用匯編程序進(jìn)行編程。對(duì)匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語(yǔ)言的語(yǔ)法和在其中調(diào)用匯編程序的方法。學(xué)會(huì)了利用CodeWarrior IDE開(kāi)發(fā)C和ARM匯編代碼。學(xué)會(huì)了在AXD中進(jìn)行代碼調(diào)試的方法和過(guò)程,對(duì)AXD的調(diào)試有初步的了解。,實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、掌握嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立方法

      2、學(xué)習(xí)和掌握Linux常用命令

      3、學(xué)習(xí)和掌握vi編輯器的使用

      二、實(shí)驗(yàn)內(nèi)容

      1、搭建嵌入式Linux交叉開(kāi)發(fā)環(huán)境

      2、熟悉Linux的常用命令

      3、熟悉vi編輯器的常用命令

      三、實(shí)驗(yàn)原理

      Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機(jī)版。Linux具有異常豐富的驅(qū)動(dòng)程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對(duì)稱(chēng)所處理器、多用戶支持等。

      Vi編輯器是所有UNIX和Linux下的標(biāo)準(zhǔn)編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專(zhuān)用的計(jì)算機(jī)系統(tǒng),它對(duì)系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴(yán)格的要求。大部分嵌入式系統(tǒng)沒(méi)有大容量存儲(chǔ)設(shè)備,一般不能安裝大型開(kāi)發(fā)軟件,系統(tǒng)的開(kāi)發(fā)需要采用交叉開(kāi)發(fā)模式。

      四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析

      實(shí)驗(yàn)用的是UP-NetARM2410-S試驗(yàn)箱,里面配有三星的芯片S3c2410X。打開(kāi)電腦上VMWare軟件,在Windows系統(tǒng)下啟動(dòng)虛擬機(jī)里的Linux系統(tǒng)。接著需要

      1.宿主機(jī)的環(huán)境搭建

      下載并運(yùn)行VMWare,根據(jù)向?qū)?chuàng)建一臺(tái)新虛擬機(jī)并選擇Linux作為客戶操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。

      2.虛擬機(jī)中啟動(dòng)Linux操作系統(tǒng)

      使用root登陸,用戶名為root,密碼為123456。之后對(duì)共享文件設(shè)置進(jìn)行調(diào)整:打開(kāi)settings界面,打開(kāi)shared folders功能,同時(shí)將路徑設(shè)置到有課前下載的軟件的目錄下。

      3.開(kāi)發(fā)工具軟件的安裝(1)安裝gcc 打開(kāi)Linux后,打開(kāi)終端窗口,在共享的目錄下找到install.sh并運(yùn)行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣?dòng)建立/arm2410s目錄,并將所有的開(kāi)發(fā)軟件包安裝到/arm2410s 目錄下,同時(shí)自動(dòng)配置編譯環(huán)境,建立合適的符號(hào)鏈接。安裝完成后在目錄/opt/host/armv4l/bin/下應(yīng)該能看到主編譯器。(2)配置PATH路徑

      vi.bash.profile 將里面PATH變量改為PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盤(pán)后執(zhí)行

      source.bash_profile 以后armv4l-unknown-linux-gcc將被自動(dòng)搜索到

      4.宿主機(jī)上的開(kāi)發(fā)環(huán)境配置(1)配置IP地址

      ifconfig eth0 192.168.0.121 命令配置了宿主機(jī)的IP地址。然后打開(kāi)網(wǎng)絡(luò)配置窗口,重新探測(cè)MAC地址。重新激活。(2)關(guān)閉防火墻

      單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級(jí)別”→打開(kāi)“安全級(jí)別配置”窗口,選擇“無(wú)防火墻選項(xiàng)?!保?)配置NFS。

      單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開(kāi)始”(4)NFS設(shè)置

      單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開(kāi)“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。

      然后在NFS服務(wù)器中增加主機(jī)IP地址的鏈接許可和目錄。完成配置。

      5.目標(biāo)機(jī)的信息輸出

      Windows系統(tǒng)下,“開(kāi)始”→“所有程序”→“附件”→“通訊”→“超級(jí)終端”,新建一個(gè)通信終端。區(qū)號(hào)、電話號(hào)碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無(wú)奇偶校驗(yàn),停止位為“1”,無(wú)數(shù)據(jù)流控制。單擊“確定”。

      6.程序的運(yùn)行

      打開(kāi)超級(jí)終端,啟動(dòng)Linux,屏幕顯示:

      [/mnt/yaffs] 在超級(jí)終端上執(zhí)行掛載命令:

      [/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。

      五、實(shí)驗(yàn)小結(jié)

      在這次實(shí)驗(yàn)中,學(xué)會(huì)建立Linux交叉開(kāi)發(fā)環(huán)境,學(xué)會(huì)了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時(shí)知道了如何在搭建失敗時(shí)尋找錯(cuò)誤進(jìn)行排錯(cuò)。

      實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、掌握嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法

      2、學(xué)會(huì)編寫(xiě)Makefile文件

      二、實(shí)驗(yàn)內(nèi)容

      1、熟悉嵌入式教學(xué)實(shí)驗(yàn)箱的使用

      2、編寫(xiě)C程序和Makefile文件

      3、編譯程序產(chǎn)生可執(zhí)行程序

      4、完成主機(jī)的掛載和程序的執(zhí)行

      三、實(shí)驗(yàn)原理

      在嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法有一下幾個(gè)步驟:

      1.編寫(xiě)源程序

      2.編寫(xiě)Makefile文件 3.編譯程序

      4.運(yùn)行和調(diào)試程序

      5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。

      前三個(gè)步驟在宿主機(jī)上完成,后面的步驟在目標(biāo)機(jī)上完成。

      四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析

      1.建立工作目錄

      mkdir hello cd hello

      2.編寫(xiě)源程序

      用vi編輯器編輯Hello.c文件

      vi Hello.c 在Vi中輸入源程序如下:

      #include main(){

      printf(“hello world n”);}

      3.編寫(xiě)Makefile文件

      vi Makefile 在vi中編輯Makefile文件如下:

      CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:

      -rm –f $(EXEC)*.elf *.gdb *.o

      4.編譯程序

      在hello目錄下運(yùn)行“make”來(lái)編譯程序。

      make clean

      make 編譯成功后,生成可執(zhí)行文件Hello.o。

      5.下載調(diào)試

      在宿主機(jī)上啟動(dòng)nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來(lái)啟動(dòng)超級(jí)終端,建立通訊,掛載。

      [/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進(jìn)入/mnt/nfs,再進(jìn)入/mnt/nfs/hello,直接運(yùn)行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運(yùn)行結(jié)果

      cd hello./hello 可以看見(jiàn)“Hello world”

      只需要掛載一次便可,只要實(shí)驗(yàn)箱沒(méi)有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過(guò)。

      6.可執(zhí)行文件加入文件系統(tǒng)

      程序調(diào)試通過(guò)后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當(dāng)系統(tǒng)啟動(dòng)后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實(shí)驗(yàn)小結(jié) 在這次實(shí)驗(yàn)中,學(xué)會(huì)了在嵌入式Linux環(huán)境下設(shè)計(jì)程序。同時(shí)知道了如何對(duì)目標(biāo)機(jī)進(jìn)行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯(cuò)誤進(jìn)行修改。另外在編譯文件時(shí)需要注意的也都有所了解。

      實(shí)驗(yàn)四多線程程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?、2、二、實(shí)驗(yàn)內(nèi)容1、2、3、4、三、實(shí)驗(yàn)原理

      四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析

      五、實(shí)驗(yàn)小結(jié)

      3+

      第二篇:ARM與嵌入式實(shí)驗(yàn)報(bào)告

      ARM與嵌入式技術(shù)

      實(shí)驗(yàn)報(bào)告

      專(zhuān)業(yè)班級(jí):通信工程

      姓名:**** 學(xué)號(hào):******

      實(shí)驗(yàn)日期:2012年6月7日 指導(dǎo)老師:*****

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器;

      2.掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)對(duì)嵌入式的熟悉和了解。

      二、實(shí)驗(yàn)設(shè)備

      硬件:PC 機(jī)

      軟件:Embest IDE 開(kāi)發(fā)環(huán)境

      三、實(shí)驗(yàn)內(nèi)容

      例3:實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 例2:編寫(xiě)程序?qū)2的高8位傳送到R3的低8位(不考慮R3的其它位); 例7:編寫(xiě)一段程序計(jì)算10?。?/p>

      例8:串拷貝(R1指向源數(shù)據(jù)串的首地址,R0指向目的數(shù)據(jù)串的首地址)。

      四、實(shí)驗(yàn)步驟

      1)新建工程:

      運(yùn)行Embest IDE 集成開(kāi)發(fā)環(huán)境,選擇菜單項(xiàng)File → New Workspace,如圖一,系統(tǒng)彈出一個(gè)對(duì)話框,鍵入文件名“沈”,如圖二,點(diǎn)擊OK 按鈕。將創(chuàng)建一個(gè)新工程,并同時(shí)創(chuàng)建一個(gè)與工程名相同的工作區(qū)。此時(shí)在工作區(qū)窗口將打開(kāi)該工作區(qū)和工程.。

      2)建立源文件:

      點(diǎn)擊菜單項(xiàng)File → New,如圖三,系統(tǒng)彈出一個(gè)新的文本編輯窗,輸入源文件代碼。編輯完后,保存文件“沈.s”后綴,如圖四。

      3)添加源文件:

      選擇菜單項(xiàng)Project → Add To Project → Files,在工程目錄下選擇剛才建立的源文件.s后綴文件,如圖五,圖六。

      4)基本配置:

      選擇菜單項(xiàng)Project → Settings,彈出工程設(shè)置對(duì)話框。在工程設(shè)置對(duì)話框中。① 選擇Processor 設(shè)置對(duì)話框,按照?qǐng)D七所示,進(jìn)行配置:

      圖七

      ② 選擇Remote設(shè)置對(duì)話框,按照下圖八所示,進(jìn)行配置:

      圖八 ③ 選擇最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。

      圖九

      ④ 選擇Project → Settings → Debug設(shè)置對(duì)話框,按照?qǐng)D十所示,進(jìn)行配置:

      圖十 ⑤

      選擇

      5)選擇菜單項(xiàng)Debug →Remote Connect 進(jìn)行連接軟件仿真器,將存儲(chǔ)器地址改為0x1000,如圖十一,執(zhí)行Debug →Download 命令下載程序,并打開(kāi)寄存器窗口。打開(kāi)memory 窗口,按F10進(jìn)行單步跟蹤,觀察寄存器的數(shù)據(jù)變化并分析。最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。

      圖十一

      五、各實(shí)驗(yàn)的參考程序及運(yùn)行結(jié)果

      實(shí)驗(yàn)一:(例3)實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 1.程序代碼如下:

      .global _start

      .text _start:

      mov R0,#11

      /*R0=11*/ mov R1,#22

      /*R1=22*/ mov R2,#33

      /*R2=33*/ mov R3,#44

      /*R3=44*/ ADDS R0,R0,R2

      /*R0等于低32位相加,并影響標(biāo)志位*/

      ADC R1,R1,R3

      /*R1等于高32位相加,并加上低位進(jìn)位*/ stop:

      b stop.end

      2.分析調(diào)試:

      ①download下載:

      ② 讀入數(shù)據(jù):

      ③ r0+r2→r0(低32位):

      ④ r1+r3→r1(帶進(jìn)位的加法):

      實(shí)驗(yàn)二:(例2)編寫(xiě)程序?qū)2高8位傳送到R3的低8位(不考慮R3的其它位);

      1.程序代碼如下:

      .global _start _start: ldr r2,=0x23453401 ldr r3,=0xabcd1200 and r2,r2,#0xff000000 /*保留R2的高8位,屏蔽低24位*/ and r3,r3,#0xffffff00 /*保留R3的高24位,屏蔽低8位*/

      orr r3,r3,r2,lsr #24

      /*將R2的高8位傳送到R3的低8位*/ stop:

      b stop.end

      2.分析調(diào)試:

      ①download下載:

      ②保留r2的高8位,屏蔽低24位:

      ③保留r3的高24位,屏蔽低8位:

      ④將R2的高8位傳送到R3的低8位:

      實(shí)驗(yàn)三:(例7)編寫(xiě)一段程序計(jì)算10!

      1.程序代碼如下:

      .global _start.text.equ num,10 _start: mov r0,#num mov r1,r0 s1: subs r1,r1,#1

      /*把r1-1放入r1*/ mul r0,r1,r0

      /*r0*r1放入r0*/ cmp r1,#1

      /*比較R1與1的大小*/ beq stop

      bne s1 stop: b stop.end

      2.分析調(diào)試:

      ① download下載:

      ② 第一次執(zhí)行S1,r1=10-1=9,10*9=90,換成16進(jìn)制是5a。

      ③ 第二次執(zhí)行S1,r1=9-1=8,10*9*8=720,換成16進(jìn)制是2d0。

      ④ 依次執(zhí)行S1,到r1=1,停止,10*9*8??*1=3628800,換成16進(jìn)制是375f00。

      實(shí)驗(yàn)四:(例8)串拷貝(R1指向源數(shù)據(jù)串首地址,R0指向目的數(shù)據(jù)串的首地址)。1.程序代碼如下:.global _start.text.EQU NUM,8 _start:

      LDR R0,=srcstr

      /*指向源數(shù)據(jù)串R0*/

      LDR R1,=dststr

      /*指向目標(biāo)數(shù)據(jù)串R1*/

      mov R3,#NUM

      /*R3=8*/

      mov LR,PC

      /*返回*/

      B strcopy

      /*調(diào)用串拷貝子程序*/ stop: b stop

      strcopy:

      LDRB R2,[R0],#1

      /*裝載字節(jié)同時(shí)更新地址*/

      STRB R2,[R1],#1

      /*存儲(chǔ)字節(jié)同時(shí)更新地址*/

      SUBS R3,R3,#1

      CMP R3,#0

      /*判斷是否結(jié)束*/

      BNE strcopy

      /*不是,則繼續(xù)*/

      MOV PC,LR

      /*返回*/.data

      srcstr:.long 1,2,3,4,5,6,7,0

      /*定義源數(shù)據(jù)串*/

      dststr:.long 5,3,2,1,4,6,8,0

      /*定義目的字符串*/

      2.分析調(diào)試:

      ①單步跟蹤后的結(jié)果及存儲(chǔ)器的結(jié)果顯示:

      ②寄存器的結(jié)果顯示:

      六、實(shí)驗(yàn)心得

      今天在實(shí)驗(yàn)室里,學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器,掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)了對(duì)嵌入式的熟悉和了解。鄭老師在兢兢業(yè)業(yè)的向我們傳授實(shí)踐知識(shí)的同時(shí)也向我們提問(wèn)相關(guān)理論問(wèn)題,讓我們?cè)趯W(xué)習(xí)的過(guò)程加深對(duì)實(shí)踐和理論兩者之間的聯(lián)系,知道每一個(gè)步驟的發(fā)生的原因及產(chǎn)生相應(yīng)的結(jié)果,即對(duì)實(shí)驗(yàn)的來(lái)龍去脈有了更清楚的認(rèn)識(shí),為今后的學(xué)習(xí)打下了一定的基礎(chǔ)。相信在接下來(lái)的實(shí)驗(yàn)中,我們會(huì)在鄭老師的引導(dǎo)下,做起實(shí)驗(yàn)來(lái)更能得心應(yīng)手,輕車(chē)熟駕!

      第三篇:嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

      嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

      學(xué)

      號(hào):

      名:

      級(jí):13電子信息工程

      指導(dǎo)老師:

      蘇州大學(xué) 電子信息學(xué)院

      2016年12月

      實(shí)驗(yàn)一:一個(gè)燈的閃爍

      1、實(shí)驗(yàn)要求

      實(shí)現(xiàn)PF6-10端口所連接的任意一個(gè)LED燈點(diǎn)亮

      2、電路原理圖

      圖1 LED燈硬件連接圖

      3、軟件分析

      RCC_Configuration();/* 配置系統(tǒng)時(shí)鐘 */

      GPIO_Configuration();

      /* 配置GPIO IO口初始化 */

      for(;;)

      {

      GPIOF->ODR = 0xfcff;

      /* PF8=0--> 點(diǎn)亮D3 */

      Delay(1000000);

      GPIOF->ODR = 0xffff;

      /* PF8=1--> 熄滅D3 */

      Delay(1000000);

      4、實(shí)驗(yàn)現(xiàn)象

      通過(guò)對(duì)GPIOF8的操作,可以使LED3閃爍

      5、實(shí)驗(yàn)總結(jié)

      這是第一次使用STM32開(kāi)發(fā)板,主要內(nèi)容是對(duì)IO端口進(jìn)行配置,點(diǎn)亮與IO端口相連接的LED燈,閃爍周期為2S。通過(guò)本實(shí)驗(yàn)對(duì)STM32開(kāi)發(fā)板的硬件原理有了初步了解。

      實(shí)驗(yàn)二:流水燈

      1、實(shí)驗(yàn)要求

      實(shí)現(xiàn)PF6-10端口所連接的5個(gè)LED燈順次亮滅

      2、電路原理圖

      圖1 流水燈硬件連接圖

      3、軟件分析

      int main(void){

      RCC_Configuration();/* 配置系統(tǒng)時(shí)鐘 */

      GPIO_Configuration();/* 配置GPIO IO口初始化 */

      for(;;)

      {

      GPIOF->ODR = 0xffbf;

      /* PF6=0--> 點(diǎn)亮LED1 */ Delay(5000000);GPIOF->ODR = 0xff7f;

      }

      /* PF7=0--> 點(diǎn)亮LED2 */ Delay(5000000);

      GPIOF->ODR = 0xfeff;

      /* PF8=0--> 點(diǎn)亮LED3 */ Delay(5000000);

      GPIOF->ODR = 0xfdff;

      /* PF9=0--> 點(diǎn)亮LED4 */ Delay(5000000);

      GPIOF->ODR = 0xfbff;

      /* PF10=0--> 點(diǎn)亮LED5 */ }

      4、實(shí)驗(yàn)現(xiàn)象

      LED1~LED5依次點(diǎn)亮,亮滅的時(shí)間間隔都為1S。

      5、實(shí)驗(yàn)總結(jié)

      本次實(shí)驗(yàn)對(duì)STM32開(kāi)發(fā)板的GPIO端口進(jìn)行進(jìn)一步學(xué)習(xí),通過(guò)程序可以實(shí)現(xiàn)流水燈的閃爍。

      實(shí)驗(yàn)三:?jiǎn)渭?jí)外部中斷

      1、實(shí)驗(yàn)要求

      按下某個(gè)按鍵,觸發(fā)中斷,中斷服務(wù)程序改變LED燈狀態(tài)

      2、電路原理圖

      圖3 SW1硬件原理圖

      3、軟件分析

      int main()

      {

      RCC_Configuration();

      GPIO_Configuration();

      GPIO_Write(GPIOF,0xffff);Delay(5000);

      while(1)

      {

      }

      /* 配置系統(tǒng)時(shí)鐘 */

      /* IO口初始化 */

      /* 全滅 */

      if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0)/* 如果SW1 PA8=0 */ {

      GPIO_SetBits(GPIOF, GPIO_Pin_6);

      /* LED1點(diǎn)亮 */

      Delay(0x1FFFFF);

      GPIO_ResetBits(GPIOF, GPIO_Pin_6);

      /* LED1 熄滅 */ Delay(0x1FFFFF);} }

      4、實(shí)驗(yàn)現(xiàn)象

      原來(lái)5個(gè)LED燈都處于熄滅狀態(tài),按下SW1,觸發(fā)中斷程序,LED1點(diǎn)亮。

      5、實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),可以對(duì)某一狀態(tài)通過(guò)外部中斷,改變其當(dāng)前狀態(tài)。

      實(shí)驗(yàn)四:多中斷嵌套

      1、實(shí)驗(yàn)要求

      按下某個(gè)按鍵,觸發(fā)中斷,中斷服務(wù)程序改變LED燈狀態(tài)

      2、電路原理圖

      圖4 SW1,SW2,SW3硬件原理圖

      3、軟件分析

      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;

      //設(shè)定中斷源為PA0 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//中斷占優(yōu)先級(jí)為0 NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;

      //設(shè)定中斷源為PD3 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//中斷占優(yōu)先級(jí)為1 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;//設(shè)定中斷源為PA8 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中斷占優(yōu)先級(jí)為2 void EXTI0_IRQHandler(void){ int i=0;if(EXTI_GetITStatus(EXTI_Line0)!= RESET){ for(i=0;i<10;i++){

      GPIO_Write(GPIOF,0xffff);

      GPIO_SetBits(GPIOF, GPIO_Pin_6);/* LED1 點(diǎn)亮 */ Delay(0x5fFFFF);GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1 熄滅 */

      Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line0);} } }

      void EXTI3_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line3)!= RESET){ {

      int i=0;for(i=0;i<10;i++){

      GPIO_Write(GPIOF,0xffff);

      GPIO_SetBits(GPIOF, GPIO_Pin_7);/* LED2 點(diǎn)亮 */ Delay(0x5fFFFF);GPIO_ResetBits(GPIOF, GPIO_Pin_7);/* LED2 熄滅 */ Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line3);} } } void EXTI9_5_IRQHandler(void){ int i=0;

      if(EXTI_GetITStatus(EXTI_Line8)!= RESET){

      for(i=0;i<10;i++){

      GPIO_Write(GPIOF,0xffff);

      GPIO_SetBits(GPIOF, GPIO_Pin_8);/* LED3 點(diǎn)亮 */

      Delay(0x5fFFFF);

      GPIO_ResetBits(GPIOF, GPIO_Pin_8);/* LED3 熄滅 */

      Delay(0x5fFFFF);

      EXTI_ClearITPendingBit(EXTI_Line8);} } }

      4、實(shí)驗(yàn)現(xiàn)象

      中斷優(yōu)先級(jí)從高到低依次為:SW3,SW2,SW1 原來(lái)5個(gè)LED燈都處于熄滅狀態(tài),按下SW1,LED3應(yīng)該閃爍10次,當(dāng)其閃爍5次后按下SW2,LED2也應(yīng)該閃爍10次,當(dāng)其閃爍4次后按下SW3,LED1也應(yīng)該閃爍10次,則當(dāng)LED1閃爍完10次后,LED2繼續(xù)閃爍6次,之后LED1繼續(xù)閃爍5次。

      5、實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),可以對(duì)LED狀態(tài)實(shí)行中斷嵌套,由以上實(shí)驗(yàn)現(xiàn)象,得出以下結(jié)論:高中斷優(yōu)先級(jí)可以打斷低優(yōu)先級(jí),中斷系統(tǒng)正在執(zhí)行一個(gè)中斷服務(wù)時(shí),有另一個(gè)優(yōu)先級(jí)更高的中斷提出中斷請(qǐng)求,這時(shí)會(huì)暫時(shí)終止當(dāng)前正在執(zhí)行的級(jí)別較低的中斷源的服務(wù)程序,去處理級(jí)別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務(wù)程序繼續(xù)執(zhí)行,反之,低中斷優(yōu)先級(jí)不可以打斷高優(yōu)先級(jí)。

      實(shí)驗(yàn)五:TIM2的基本應(yīng)用

      1、實(shí)驗(yàn)要求

      TIM2定時(shí)器將LED燈定時(shí)點(diǎn)亮和熄滅一定的時(shí)間

      2、電路原理圖

      3、軟件分析

      TIM_Cmd(TIM2, ENABLE);

      /* TIM2 enable counter */ TIM_TimeBaseStructure.TIM_Period = 1999;

      TIM_TimeBaseStructure.TIM_Prescaler = 35999;

      //定時(shí)時(shí)間為1s void TIM2_IRQHandler(void){ TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

      GPIO_WriteBit(GPIOF, GPIO_Pin_6,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_6)));}

      4、實(shí)驗(yàn)現(xiàn)象

      LED1燈按照1S的定時(shí)時(shí)間不斷閃爍

      5、實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),可以實(shí)現(xiàn)對(duì)LED燈進(jìn)行定時(shí)控制其閃爍,而不需要延時(shí)函數(shù)控制了,定時(shí)時(shí)間較為精準(zhǔn)。實(shí)驗(yàn)六:TIM2,TIM3,TIM4多定時(shí)器的應(yīng)用

      1、實(shí)驗(yàn)要求

      利用TIM2,TIM3,TIM4定時(shí)器使LED燈以不同的頻率閃爍

      2、電路原理圖

      3、軟件分析

      NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;此處比上一個(gè)實(shí)驗(yàn)增加了2個(gè)定時(shí)器,同時(shí)又增加了一個(gè)優(yōu)先級(jí)

      4、實(shí)驗(yàn)現(xiàn)象

      中斷優(yōu)先級(jí)從高到低依次為:TIM2,TIM3,TIM4 首先LED1以1S的定時(shí)時(shí)間閃爍5次,之后LED2以2S的定時(shí)時(shí)間閃爍5次,最后LED3以3S的定時(shí)時(shí)間閃爍5次

      5、實(shí)驗(yàn)總結(jié)

      利用定時(shí)器可以同時(shí)使LED燈按照不同的頻率閃爍,但是為了現(xiàn)象明顯,可以加一個(gè)優(yōu) 先級(jí),分別觀察現(xiàn)象。

      實(shí)驗(yàn)七:串口USART1讀取CPU的ID號(hào)

      1、實(shí)驗(yàn)要求

      通過(guò)USART1讀取 CPU 的 96 bit ID

      2、電路原理圖

      圖 開(kāi)發(fā)板USART原理圖

      3、軟件分析

      void Get_ChipID(void)/* 獲取芯片ID */ { ChipUniqueID[0] = *(u32 *)(0X1FFFF7F0);/* 高字節(jié) */ ChipUniqueID[1] = *(u32 *)(0X1FFFF7EC);

      ChipUniqueID[2] = *(u32 *)(0X1FFFF7E8);/* 低字節(jié) */ } void USART_Configuration(void){

      USART_InitTypeDef USART_InitStructure;

      USART_InitStructure.USART_BaudRate = 115200;

      USART_InitStructure.USART_WordLength = USART_WordLength_8b;

      USART_InitStructure.USART_StopBits = USART_StopBits_1;

      USART_InitStructure.USART_Parity = USART_Parity_No;

      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

      USART_Init(USART1, &USART_InitStructure);

      USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

      USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

      USART_ClearFlag(USART1, USART_FLAG_TC);

      USART_Cmd(USART1, ENABLE);

      /* Enable USART1 */ }

      4、實(shí)驗(yàn)現(xiàn)象

      PA9連接的是USART1 Tx,PA10連接的是USART1 Rx,再通過(guò)串口調(diào)試助手就可 以在電腦上面顯示出CPU的ID以及flash容量大小。

      5、實(shí)驗(yàn)總結(jié)

      本次實(shí)驗(yàn)實(shí)現(xiàn)了串口和PC機(jī)的傳輸,可以通過(guò)USART1將CPU的ID在電腦上顯示出來(lái)。

      實(shí)驗(yàn)八:異步通信USART2的重映射

      1、實(shí)驗(yàn)要求

      實(shí)現(xiàn)異步通信USART2的重映射,將數(shù)據(jù)傳送到PC機(jī)上

      2、電路原理圖

      圖 開(kāi)發(fā)板USART原理圖

      3、軟件分析

      void GPIO_Configuration()

      /* IO口初始化 */ {

      GPIO_InitTypeDef GPIO_InitStructure;

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

      /* USART2 Tx--> PD05 */

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/* PD05--> JP7 WR */

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

      GPIO_Init(GPIOD, &GPIO_InitStructure);

      GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

      /* USART2 Rx--> PD06 */

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

      GPIO_Init(GPIOD, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);} 該程序?qū)SART2重映射到PD05,PD06引腳

      4、實(shí)驗(yàn)現(xiàn)象

      PD05連接的是USART2 Tx,PD06連接的是USART2 Rx,通過(guò)串口調(diào)試助手就可以在電腦上面顯示Program Running!

      5、實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),可以實(shí)現(xiàn)對(duì)異步通信USART2的重映射,再通過(guò)串口調(diào)試助手在電腦上顯示出來(lái)。

      第四篇:嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

      嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告

      班 級(jí): 學(xué) 號(hào): 姓 名: 成 績(jī): 指導(dǎo)教師:

      1.實(shí)驗(yàn)一

      1.1 實(shí)驗(yàn)名稱(chēng)

      博創(chuàng)UP-3000實(shí)驗(yàn)臺(tái)基本結(jié)構(gòu)及使用方法

      1.2 實(shí)驗(yàn)?zāi)康?/p>

      1.學(xué)習(xí)嵌入式系統(tǒng)開(kāi)發(fā)流程。

      2.熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的核心硬件電路和外設(shè)。

      3.增加對(duì)各個(gè)外設(shè)的了解,為今后各個(gè)接口實(shí)驗(yàn)打下基礎(chǔ)。

      1.3 實(shí)驗(yàn)環(huán)境

      博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)

      1.4 實(shí)驗(yàn)內(nèi)容及要求

      (1)嵌入式系統(tǒng)開(kāi)發(fā)流程概述

      (2)熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的核心硬件電路和外設(shè)(3)ARM JTAG的安裝與使用

      (4)通過(guò)操作系統(tǒng)自帶的通訊軟件超級(jí)終端,檢驗(yàn)各個(gè)外設(shè)的工作狀態(tài)(5)通過(guò)本次課程對(duì)各個(gè)外設(shè)的了解,為今后各個(gè)接口實(shí)驗(yàn)打下基礎(chǔ)

      1.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.硬件安裝 2.軟件安裝

      (1)超級(jí)終端:

      運(yùn)行Windows 系統(tǒng)下的超級(jí)終端(HyperTerminal)應(yīng)用程序,新建一個(gè)通信終端;在接下來(lái)的對(duì)話框中選擇 ARM開(kāi)發(fā)平臺(tái)實(shí)際連接的PC機(jī)串口;完成新建超級(jí)終端的設(shè)置以后,可以選擇超級(jí)終端文件菜單中的保存,將當(dāng)前設(shè)置保存為一個(gè)特定超級(jí)終端到桌面上,以備后用。

      (2)JTAG 驅(qū)動(dòng)程序的安裝:

      執(zhí)行armJtag目錄下armJtagSetup.exe程序,選擇安裝目錄,安裝 JTAG 軟件。

      1.6 實(shí)驗(yàn)過(guò)程與分析

      (1)了解嵌入式系統(tǒng)開(kāi)發(fā)流程(2)對(duì)硬件的安裝(3)對(duì)軟件的安裝

      1.7 實(shí)驗(yàn)結(jié)果總結(jié)

      通過(guò)本次實(shí)驗(yàn)對(duì)嵌入式系統(tǒng)開(kāi)發(fā)流程進(jìn)行了了解,并且對(duì)硬件環(huán)境和軟件環(huán)境進(jìn)行了安裝配置,通過(guò)本次實(shí)驗(yàn)對(duì)以后的接口實(shí)驗(yàn)打了基礎(chǔ)。

      1.8 心得體會(huì)

      通過(guò)本次實(shí)驗(yàn)對(duì)嵌入式實(shí)驗(yàn)有了初步的了解,對(duì)基本開(kāi)發(fā)流程也有了初步的了解。

      2.實(shí)驗(yàn)二

      2.1 實(shí)驗(yàn)名稱(chēng)

      ADS1.2軟件開(kāi)發(fā)環(huán)境使用方法

      2.2 實(shí)驗(yàn)?zāi)康?/p>

      熟悉ADS1.2開(kāi)發(fā)環(huán)境,學(xué)會(huì) ARM仿真器的使用。使用 ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開(kāi)發(fā)的基本思想和過(guò)程。

      2.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      2.4 實(shí)驗(yàn)內(nèi)容及要求

      本次實(shí)驗(yàn)使用ADS 集成開(kāi)發(fā)環(huán)境,新建一個(gè)簡(jiǎn)單的工程文件,并編譯這個(gè)工程文件。學(xué)習(xí)ARM仿真器的使用和開(kāi)發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。

      2.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)運(yùn)行ADS1.2開(kāi)發(fā)環(huán)境(2)新建工程文件(3)編譯工程文件

      (4)下載編譯好的文件到嵌入式控制器中運(yùn)行

      2.6 實(shí)驗(yàn)過(guò)程與分析

      (1)實(shí)現(xiàn)Hello World!

      最終在輸出了Hello World(2)編程實(shí)現(xiàn)ARM 和計(jì)算機(jī)之間的串行通訊

      實(shí)現(xiàn)了串口通信,用ARM監(jiān)視串口,接收到的字符串由ARM通過(guò)串口發(fā)送給超級(jí)終端,最終在超級(jí)終端上顯示了按下的鍵。學(xué)習(xí)了串行通訊原理,了解串行通訊控制器,閱讀ARM 芯片文檔,掌握ARM 的UART相關(guān)寄存器的功能,熟悉ARM 系統(tǒng)硬件的UART 相關(guān)接口。

      2.7 實(shí)驗(yàn)結(jié)果總結(jié)

      對(duì)ADS 1.2開(kāi)發(fā)環(huán)境使用和AXD Debugger使用方法有了初步的了解,基本成功運(yùn)行了編譯好的工程文件。

      2.8 心得體會(huì)

      學(xué)習(xí)了ADS1.2開(kāi)發(fā)環(huán)境的使用方法和調(diào)試方法。使用 ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解了嵌入式開(kāi)發(fā)的基本思想和過(guò)程。

      3.實(shí)驗(yàn)三

      3.1 實(shí)驗(yàn)名稱(chēng)

      鍵盤(pán)控制方法及LED驅(qū)動(dòng)設(shè)計(jì)

      3.2 實(shí)驗(yàn)?zāi)康?/p>

      熟悉ZLG7289芯片的內(nèi)部結(jié)構(gòu),掌握用ZLG7289驅(qū)動(dòng)鍵盤(pán)和LED的方法,掌握ARM匯編語(yǔ)言和C語(yǔ)言的編程方法編寫(xiě)出一段程序,要求能在LED上顯示出小鍵盤(pán)上按下的4位數(shù)字。

      3.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      3.4 實(shí)驗(yàn)內(nèi)容及要求

      通過(guò)ZLG7289芯片驅(qū)動(dòng)17鍵的鍵盤(pán)和8個(gè)共陰極LED,將按鍵值在LED 上顯示出來(lái)。

      3.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)新建工程,將“Exp3鍵盤(pán)及LED 驅(qū)動(dòng)實(shí)驗(yàn)”中的文件添加到工程。(2)定義ZLG7289 寄存器(3)編寫(xiě)ZLG7289 驅(qū)動(dòng)函數(shù)(4)定義鍵盤(pán)映射表(5)定義鍵值讀取函數(shù)

      (6)編寫(xiě)主函數(shù)

      3.6 實(shí)驗(yàn)過(guò)程與分析

      (1)定義ZLG7289寄存器 #define ZLG7289_CS #define ZLG7289_KEY #define ZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)#define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;rSIOCON=ZLG7289SIOCtrl;}while(0)(2)主函數(shù)中需要在開(kāi)始初始化zlg7289。編寫(xiě)驅(qū)動(dòng)和鍵值映射之后,在一個(gè)循環(huán)里面從鍵盤(pán)中讀取按鍵的號(hào)碼,根據(jù)鍵值映射讀出按鍵的值。然后在主函數(shù)中,將讀出的按鍵值在數(shù)碼管上顯示出來(lái)。

      (3)Main函數(shù)的主要功能部分,GetKey()函數(shù)得到按鍵值是調(diào)用zlg7289獲取鍵盤(pán)事件和核心。

      3.7 實(shí)驗(yàn)結(jié)果總結(jié)

      通過(guò)實(shí)驗(yàn)最終LED燈上能顯示數(shù)字,即實(shí)現(xiàn)了通過(guò)鍵值控制LED燈

      3.8 心得體會(huì)

      通過(guò)本次實(shí)驗(yàn)對(duì)ZLG7289芯片的內(nèi)部結(jié)構(gòu)有了更進(jìn)一步的了解,對(duì)ZLG7289驅(qū)動(dòng)鍵盤(pán)和LED的方法也更進(jìn)一步的進(jìn)行了學(xué)習(xí)。

      4.實(shí)驗(yàn)四

      4.1 實(shí)驗(yàn)名稱(chēng)

      電機(jī)轉(zhuǎn)動(dòng)控制及中斷實(shí)驗(yàn)

      4.2 實(shí)驗(yàn)?zāi)康?/p>

      (1)熟悉ARM本身自帶的六路即三對(duì)PWM,掌握相應(yīng)寄存器的配置

      (2)編程實(shí)現(xiàn) ARM系統(tǒng)的PWM 輸出和I/O 輸出,前者用于控制直流電機(jī),后者用于控制步進(jìn)電機(jī)。

      (3)了解直流電機(jī)和步進(jìn)電機(jī)的工作原理,學(xué)會(huì)用軟件的方法實(shí)現(xiàn)步進(jìn)電機(jī)的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。

      (4)掌握帶有PWM 和I/O 的CPU 編程實(shí)現(xiàn)其相應(yīng)功能的主要方法。

      4.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      4.4 實(shí)驗(yàn)內(nèi)容及要求

      學(xué)習(xí)步進(jìn)電機(jī)和直流電機(jī)的工作原理,了解實(shí)現(xiàn)兩個(gè)電機(jī)轉(zhuǎn)動(dòng)對(duì)于系統(tǒng)的軟件和硬件要求。學(xué)習(xí)ARM知識(shí),掌握PWM 的生成方法,同時(shí)也要掌握I/O 的控制方法。

      (1)編程實(shí)現(xiàn)ARM芯片的一對(duì)PWM 輸出用于控制直流電機(jī)的轉(zhuǎn)動(dòng),通過(guò)A/D 旋鈕控制其正反轉(zhuǎn)及轉(zhuǎn)速

      (2)編程實(shí)現(xiàn)ARM的四路I/O 通道實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),通過(guò)A/D 旋鈕轉(zhuǎn)角控制步進(jìn)電機(jī)的轉(zhuǎn)角。

      (3)通過(guò)超級(jí)終端來(lái)控制直流電機(jī)與步進(jìn)電機(jī)的切換。4.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)新建工程,將“電機(jī)轉(zhuǎn)動(dòng)控制實(shí)驗(yàn)”中的文件添加到工程(2)編寫(xiě)直流電機(jī)初始化數(shù)(MotorCtrl.c)(3)控制直流電機(jī)與步進(jìn)電機(jī)

      4.6 實(shí)驗(yàn)過(guò)程與分析

      (1)通過(guò)把從串口中得到控制信息的代碼修改成從zlg7289芯片中讀取小鍵盤(pán)信息,從而利用試驗(yàn)臺(tái)的小鍵盤(pán)來(lái)控制步進(jìn)電機(jī)和直流電機(jī)的切換

      (2)A/D轉(zhuǎn)換可以把電信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)來(lái)控制電機(jī)的轉(zhuǎn)速。for(;;)

      { loop:

      //if((rUTRSTAT0 & 0x1))//有輸入,則返回

      if(rPDATG&ZLG7289_KEY)//17鍵小鍵盤(pán)控制電機(jī)

      {

      *Revdata=RdURXH0();

      goto begin;

      }

      Delay(10);ADData=GetADresult(0);

      if(abs(lastADData-ADData)<20)

      goto loop;Delay(10);count=-(ADData-lastADData)*3;

      //(ADData-lastADData)*270/1024為ad旋鈕轉(zhuǎn)過(guò)的角度,360/512為步距角,//由于接了1/8減速器,兩者之商再乘以8為步進(jìn)電機(jī)相應(yīng)轉(zhuǎn)過(guò)的角度

      if(count>=0)

      {//轉(zhuǎn)角大于零

      for(j=0;j

      {

      for(i=0;i<=7;i++)

      {

      SETEXIOBITMASK(stepdata[i], 0xf0);

      Delay(200);

      }

      }

      }

      else

      {//轉(zhuǎn)角小于零

      count=-count;

      for(j=0;j

      {

      for(i=7;i>=0;i--)

      {

      SETEXIOBITMASK(stepdata[i], 0xf0);

      Delay(200);

      }

      }

      } lastADData=ADData;

      } }

      (3)S3C44B0X 具有6 個(gè)16bit定時(shí)器,每個(gè)定時(shí)器可以基于中斷模式或 DMA模式運(yùn)行。在定時(shí)中斷服務(wù)程序中寫(xiě)需要定時(shí)處理的程序,每隔一段時(shí)間就會(huì)運(yùn)行一次。

      4.7 實(shí)驗(yàn)結(jié)果總結(jié)

      利用A/D轉(zhuǎn)換器實(shí)現(xiàn)了對(duì)直流電機(jī)和步進(jìn)電機(jī)的控制,利用實(shí)驗(yàn)設(shè)備上自帶的小鍵盤(pán)實(shí)現(xiàn)了A/D轉(zhuǎn)換器對(duì)兩個(gè)電機(jī)控制的切換。

      4.8 心得體會(huì)

      通過(guò)本次實(shí)驗(yàn),熟悉了ARM自帶的六路(三對(duì))PWM,并對(duì)直流電機(jī)和步進(jìn)電機(jī)的工作原理有了進(jìn)一步的了解。

      5.實(shí)驗(yàn)五

      5.1 實(shí)驗(yàn)名稱(chēng)

      LCD驅(qū)動(dòng)及觸摸屏實(shí)驗(yàn)

      5.2 實(shí)驗(yàn)?zāi)康?/p>

      掌握LCD顯示原理及顯示驅(qū)動(dòng)的嵌入式系統(tǒng)編程實(shí)現(xiàn)方法;學(xué)習(xí)基于ARM的LCD 顯示驅(qū)動(dòng)控制方法,通過(guò)對(duì)ARM 內(nèi)置的LCD 控制器進(jìn)行編程實(shí)現(xiàn)驅(qū)動(dòng)LCD顯示屏;學(xué)習(xí)觸摸屏基本原理,理解觸摸屏的輸出標(biāo)定以及與LCD 顯示器配合的過(guò)程,編程對(duì)觸摸屏進(jìn)行控制。

      5.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境(2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      5.4 實(shí)驗(yàn)內(nèi)容及要求

      (1)學(xué)習(xí)LCD顯示器的基本原理,理解其驅(qū)動(dòng)控制方法(2)編程對(duì)觸摸屏進(jìn)行控制,實(shí)現(xiàn):

      1.點(diǎn)擊觸摸屏上兩點(diǎn)后,兩點(diǎn)之間畫(huà)出一條直線。2.點(diǎn)擊觸摸屏并在其上移動(dòng),顯示移動(dòng)軌跡

      (3)編程實(shí)現(xiàn)總線方式驅(qū)動(dòng)模塊的LCD和ARM內(nèi)置的LCD控制器來(lái)驅(qū)動(dòng)LCD

      5.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)新建工程

      (2)定義有關(guān)常量與宏

      #define LCDWIDTH 320 #define LCDHEIGHT 240 U32* pLCDBuffer16=(U32*)0xc000000;// 一級(jí)緩存指針 U32 LCDBuffer[LCDHEIGHT][LCDWIDTH];//二級(jí)緩存(3)編寫(xiě)LCD 初始化函數(shù)(4)編寫(xiě)LCD 刷新函數(shù)(5)編寫(xiě)主函數(shù)

      5.6 實(shí)驗(yàn)過(guò)程與分析

      (1)通過(guò)不斷刷新的方式獲得LCD液晶屏幕的動(dòng)畫(huà)。即刷新函數(shù)將二級(jí)緩存LCDBuffer 的數(shù)據(jù)由32 位彩色圖形信息轉(zhuǎn)換成8 位256 色的圖形信息,然后放到pLCDBuffer16指向的一級(jí)緩存。

      (2)觸摸屏的先得到觸屏輸出的電信號(hào)的值,然后轉(zhuǎn)換為實(shí)際的屏幕坐標(biāo),再根據(jù)動(dòng)作來(lái)決定如何處理緩存信息,刷新LCD。

      LCD二級(jí)緩存矩陣: for(i=0;i<9;i++){ switch(i){ case 0: jcolor=0x00000000;// 黑色 break;case 1: jcolor=0x000000e0;// 紅色 break;case 2: jcolor=0x0000d0e0;// 橙色 break;case 3: jcolor=0x0000e0e0;// 黃 break;case 4: jcolor=0x0000e000;// 綠色 break;case 5: jcolor=0x00e0e000;// 青色 break;case 6: jcolor=0x00e00000;// 藍(lán)色 break;case 7: jcolor=0x00e000e0;// 紫色 break;case 8: jcolor=0x00e0e0e0;// 白色 break;} for(k=0;k<240;k++)for(j=i*32;j

      5.7 實(shí)驗(yàn)結(jié)果總結(jié)

      本次實(shí)驗(yàn)由于坐標(biāo)設(shè)定的問(wèn)題并沒(méi)有成功實(shí)現(xiàn)觸摸痕跡的顯示,但在測(cè)試過(guò)程中,在觸摸屏上點(diǎn)擊或移動(dòng)時(shí)會(huì)在超級(jí)終端上有顯示。

      5.8 心得體會(huì)

      雖然本次實(shí)驗(yàn)不太成功實(shí)現(xiàn),但對(duì)LCD屏幕和觸摸屏的工作原理有了進(jìn)一步的了解,更好的掌握了LCD顯示原理及顯示驅(qū)動(dòng)的嵌入式系統(tǒng)編程實(shí)現(xiàn)方法。

      6.實(shí)驗(yàn)六

      6.1 實(shí)驗(yàn)名稱(chēng)

      ucos-II裁剪實(shí)驗(yàn)

      6.2 實(shí)驗(yàn)?zāi)康?掌握μcos-II裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法;學(xué)習(xí)如何根據(jù)具體情況對(duì)μcos-II操作系統(tǒng)進(jìn)行裁剪,從而得到即滿足需要,又非常緊湊的應(yīng)用軟件系統(tǒng)。

      6.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      6.4 實(shí)驗(yàn)內(nèi)容及要求

      (1)通過(guò)對(duì)μcos-II配置文件(OS_CFG.H)中相關(guān)的配置常量進(jìn)行設(shè)置,實(shí)現(xiàn)對(duì)μcos-II的裁剪

      (2)給出裁剪的詳細(xì)過(guò)程與裁剪結(jié)果說(shuō)明,并生成裁剪后的操作系統(tǒng)文件。

      6.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)新建工程,將ucosII移植的文件添加到工程中。

      (2)編輯os_cfg.h頭文件。

      (3)將裁減后的系統(tǒng)所需用到的功能宏定義配置常量置為1,實(shí)現(xiàn)系統(tǒng)的裁減。(4)編譯生成新的ucosII系統(tǒng)。

      6.6 實(shí)驗(yàn)過(guò)程與分析

      (1)配置功能常量,將裁剪后的系統(tǒng)需要用到的功能配置常量設(shè)為1(2)裁減信號(hào)量數(shù)據(jù)(3)配置數(shù)據(jù)結(jié)構(gòu)

      OS_MAX_TASKS,若程序中用到了三個(gè)任務(wù),則該值的最小值為3 OS_LOWEST_PRIO設(shè)置程序中最低任務(wù)的優(yōu)先級(jí)

      OS_TASK_IDLE_STK_SIZE設(shè)置UC/OS操作系統(tǒng)中空閑任務(wù)堆棧的容量 OS_TASK_STAT_STK_SIZE設(shè)定統(tǒng)計(jì)任務(wù)的任務(wù)堆棧容量

      6.7 實(shí)驗(yàn)結(jié)果總結(jié)

      通過(guò)本次實(shí)驗(yàn),裁減了系統(tǒng),修改了某些數(shù)據(jù)結(jié)構(gòu)相關(guān)的常量,節(jié)省了內(nèi)存空間

      6.8 心得體會(huì)

      通過(guò)本次實(shí)驗(yàn)主要學(xué)習(xí)到了如何根據(jù)具體情況對(duì)μcos-II操作系統(tǒng)進(jìn)行裁剪,從而得到即滿足需要,又非常緊湊的應(yīng)用軟件系統(tǒng)。

      7.實(shí)驗(yàn)七

      7.1 實(shí)驗(yàn)名稱(chēng)

      ucos-II移植實(shí)驗(yàn)

      7.2 實(shí)驗(yàn)?zāi)康?/p>

      了解μC/OS-II 內(nèi)核的主要結(jié)構(gòu),掌握ARM的C語(yǔ)言和匯編語(yǔ)言的編程方法;了解ARM7處理器結(jié)構(gòu);掌握將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實(shí)現(xiàn)方法

      7.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      7.4 實(shí)驗(yàn)內(nèi)容及要求

      (1)將μC/OS-II 內(nèi)核移植到ARM7 微處理器S3C44B0上。(2)編寫(xiě)兩個(gè)簡(jiǎn)單任務(wù),在超級(jí)終端上觀察兩個(gè)任務(wù)的切換。

      7.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)新建工程

      (2)該實(shí)驗(yàn)的文件分為兩類(lèi),其一是 STARTUP目錄下的系統(tǒng)初始化、配置等文件,其二是uCOS-II 的全部源碼,arch 目錄下的3 個(gè)文件是和處理器架構(gòu)相關(guān)的3.定義驅(qū)動(dòng)函數(shù)(tchscr.c)(3)設(shè)置os_cpu.h 中與處理器和編譯器相關(guān)的代碼(4)用C 語(yǔ)言編寫(xiě)6 個(gè)操作系統(tǒng)相關(guān)的函數(shù)(5)用匯編語(yǔ)言編寫(xiě)4 個(gè)與處理器相關(guān)的函數(shù)

      (6)編寫(xiě)一個(gè)簡(jiǎn)單的多任務(wù)程序來(lái)測(cè)試一下移植是否成功(7)編譯并下載移植后的uCOS-II

      7.6 實(shí)驗(yàn)過(guò)程與分析

      (1)首先需要對(duì)相關(guān)寄存器做詳細(xì)的設(shè)定(2)用匯編語(yǔ)言編寫(xiě)與處理器相關(guān)的函數(shù)(3)用分時(shí)的方法同時(shí)運(yùn)行兩個(gè)任務(wù)

      OS_STK TaskName_Stack[STACKSIZE]={0, };//任務(wù)堆棧 void TaskName(void *Id);//任務(wù)函數(shù)

      #define TaskName_Prio N //任務(wù)優(yōu)先級(jí)

      在main()函數(shù)中調(diào)用OSStart()函數(shù)之前用下列語(yǔ)句創(chuàng)建任務(wù): OSTaskCreate(TaskName,(void*)0,(OS_STK*)&TaskName_Stack[STACKSIZE-1], TaskName_Prio);OSTaskCreate()函數(shù)的原型是:

      INT8U OSTaskCreate(void(*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio);(4)編寫(xiě)任務(wù)函數(shù)

      7.7 實(shí)驗(yàn)結(jié)果總結(jié)

      通過(guò)實(shí)驗(yàn)達(dá)到了ucosII系統(tǒng)移植的目的,并編寫(xiě)了一個(gè)簡(jiǎn)單的多任務(wù)程序,分時(shí)運(yùn)行。

      7.8 心得體會(huì)

      通過(guò)本次實(shí)驗(yàn)了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu),掌握了ARM的C語(yǔ)言和匯編語(yǔ)言的編程方法。

      8.實(shí)驗(yàn)八

      8.1 實(shí)驗(yàn)名稱(chēng)

      各接口模塊相互銜接綜合實(shí)驗(yàn)

      8.2 實(shí)驗(yàn)?zāi)康?/p>

      (1)回顧串口、鍵盤(pán)、LED接口、A/D、電機(jī)轉(zhuǎn)動(dòng)、定時(shí)器中斷、LCD接口及觸摸屏驅(qū)動(dòng)控制等接口模塊驅(qū)動(dòng)設(shè)計(jì)及開(kāi)發(fā)方法

      (2)綜合應(yīng)用以上全部或者部分模塊,實(shí)現(xiàn)一個(gè)嵌入式綜合應(yīng)用系統(tǒng),要求至少用到8個(gè)模塊中的5個(gè)

      8.3 實(shí)驗(yàn)環(huán)境

      (1)ADS1.2開(kāi)發(fā)環(huán)境

      (2)博創(chuàng)UP-NETARM3000 嵌入式開(kāi)發(fā)平臺(tái)(3)PC(4)串口線

      8.4 實(shí)驗(yàn)內(nèi)容及要求

      (1)綜合應(yīng)用串口、鍵盤(pán)、LED接口、A/D、電機(jī)轉(zhuǎn)動(dòng)、定時(shí)器中斷、LCD接口及觸摸屏驅(qū)動(dòng)控制等全部或者部分模塊(2)實(shí)現(xiàn)一個(gè)嵌入式綜合應(yīng)用系統(tǒng),要求至少用到8個(gè)模塊中的5個(gè),盡量使綜合應(yīng)用系統(tǒng)具備合理的功能。

      8.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)運(yùn)行ADS1.2開(kāi)發(fā)環(huán)境(2)新建工程文件

      (3)將綜合實(shí)驗(yàn)中用到的文件放到這個(gè)工程文件中(4)下載編譯好的文件到嵌入式控制器中運(yùn)行

      8.6 實(shí)驗(yàn)過(guò)程與分析

      (1)本次實(shí)驗(yàn)設(shè)計(jì)主要是通過(guò)中斷來(lái)實(shí)現(xiàn),設(shè)定了flag=1,2,3,4,5,6六個(gè)標(biāo)志位,對(duì)應(yīng)不同的鍵值來(lái)實(shí)現(xiàn)功能的切換

      (2)通過(guò)num/lock鍵來(lái)控制直流電機(jī)(3)通過(guò)“/”鍵來(lái)控制步進(jìn)電機(jī)

      (4)通過(guò)“*”鍵來(lái)控制屏輸出“hello world”(5)通過(guò)“+”鍵來(lái)實(shí)現(xiàn)LED燈的計(jì)時(shí)

      (6)通過(guò)“DEL”鍵來(lái)實(shí)現(xiàn)清屏和LED燈的清除

      (7)通過(guò)“enter”鍵來(lái)進(jìn)入到鍵值控制LED顯示的功能

      8.7 實(shí)驗(yàn)結(jié)果總結(jié)

      實(shí)驗(yàn)最終能實(shí)現(xiàn)5個(gè)功能的切換,但不足的是未涉及到觸摸屏的設(shè)計(jì),并且最后的鍵值控制LED燈不能實(shí)現(xiàn)正常的中斷跳轉(zhuǎn)。

      8.8 心得體會(huì)

      通過(guò)本次綜合性的實(shí)驗(yàn)來(lái)綜合之前做的串口、鍵盤(pán)、LED接口、A/D、電機(jī)轉(zhuǎn)動(dòng)、定時(shí)器中斷、LCD接口及觸摸屏驅(qū)動(dòng)控制實(shí)驗(yàn),回顧了之前的知識(shí),對(duì)整體的運(yùn)用有了進(jìn)一步的了解,但是實(shí)驗(yàn)結(jié)果仍有很多的不足,需要改進(jìn)。

      9.實(shí)驗(yàn)總結(jié)與心得體會(huì)

      通過(guò)之前的串口、鍵盤(pán)、LED接口、A/D、電機(jī)轉(zhuǎn)動(dòng)、定時(shí)器中斷、LCD接口及觸摸屏驅(qū)動(dòng)控制實(shí)驗(yàn)這7個(gè)小模塊的實(shí)驗(yàn),對(duì)嵌入式系統(tǒng)的開(kāi)發(fā)流程有了基本的了解,熟悉了博創(chuàng)UP-NETARM3000實(shí)驗(yàn)臺(tái)和ADS1.2軟件的實(shí)驗(yàn)環(huán)境,同時(shí)也掌握了各模塊功能實(shí)現(xiàn)功能的基本原理。在最后的綜合性實(shí)驗(yàn)中,通過(guò)對(duì)以上知識(shí)的掌握和理解,進(jìn)一步的對(duì)以上知識(shí)進(jìn)行了加深和鞏固,雖然有幾次實(shí)驗(yàn)實(shí)現(xiàn)的實(shí)驗(yàn)結(jié)果并不是很成功,但還是達(dá)到了學(xué)習(xí)和理解的效果。

      第五篇:嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

      廣西工學(xué)院鹿山學(xué)院

      實(shí) 驗(yàn) 報(bào) 告

      課程名稱(chēng): 嵌入式系統(tǒng)

      指導(dǎo)教師: 劉瑞琪 班 級(jí): 自動(dòng)化101 姓 名: 楊杰 學(xué) 號(hào): 20102787 成績(jī)?cè)u(píng)定: 指導(dǎo)教師簽字:

      2013年5月25日

      實(shí)驗(yàn)一

      簡(jiǎn)單的程序

      一 實(shí)驗(yàn)?zāi)康模?、?dòng)手實(shí)踐一個(gè)簡(jiǎn)單的字符型設(shè)備驅(qū)動(dòng)程序。、學(xué)習(xí)Linux 驅(qū)動(dòng)程序構(gòu)架。、學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動(dòng)。

      二 實(shí)驗(yàn)內(nèi)容:

      編寫(xiě)簡(jiǎn)單的字符型設(shè)備驅(qū)動(dòng)程序。編寫(xiě)相應(yīng)的應(yīng)用程序。

      三 實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。

      四 實(shí)驗(yàn)步驟

      實(shí)驗(yàn)二 CPU GPIO 驅(qū)動(dòng)程序及測(cè)試程序

      一、實(shí)驗(yàn)?zāi)康模?/p>

      編寫(xiě)第一個(gè)針對(duì)實(shí)際硬件的驅(qū)動(dòng)程序,進(jìn)一步了解驅(qū)動(dòng)程序構(gòu)架。

      二、實(shí)驗(yàn)內(nèi)容:、編寫(xiě)S3C2410 GPIO驅(qū)動(dòng)程序。、編寫(xiě)S3C2410 GPIO應(yīng)用程序。、在 LINUX系統(tǒng)中插入自己的驅(qū)動(dòng)程序,調(diào)用它。實(shí)現(xiàn)用 CPU GPIO 控制外部LED,利用S3C2410 核心板上的 LED 驗(yàn)證我們的工作。

      三、實(shí)驗(yàn)設(shè)備、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。

      四、實(shí)驗(yàn)步驟

      1、復(fù)制Experiment_KeyHello_driverapl_test文件下的simple_test_driver.c文件到Experiment_KeyGPIO文件夾下,將文件名更改為test.c。

      2、打開(kāi)test.c,在else語(yǔ)句后更改函數(shù)語(yǔ)句如下:

      3、復(fù)制Experiment_KeyADapl_test文件夾下的Makefile到Experiment_KeyGPIO文件夾下,打開(kāi)并將中的ADC刪除。

      4、打開(kāi)Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

      5、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語(yǔ)句:

      if(cmd==0)GPBDAT &= ~(0xf<<5);

      if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:

      6、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示:

      保存并關(guān)閉。

      7、打開(kāi)終端,并編譯test.c文件和gpio_led.c文件。

      8、重新打開(kāi)一個(gè)終端,并按步驟輸入如下語(yǔ)句:

      9、依次輸入如下語(yǔ)句:

      1、cd..2、ls

      3、mknod /dev/hello_ctl c 97 1

      4、./test

      實(shí)驗(yàn)三 中斷實(shí)驗(yàn)及LED顯示

      一、實(shí)驗(yàn)?zāi)康模?/p>

      學(xué)習(xí)Linux 系統(tǒng)是如何處理中斷。

      二、實(shí)驗(yàn)內(nèi)容:

      編寫(xiě)獲取和處理外中斷的驅(qū)動(dòng)程序。

      三、實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。

      四、實(shí)驗(yàn)步驟

      1、打開(kāi)Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

      2、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語(yǔ)句:

      if(cmd==0)GPBDAT &= ~(0xf<<5);

      if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:

      3、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示:

      保存并關(guān)閉。

      4、打開(kāi)Experiment_KeyInterruptdriver下的Interrupt.c文件,并在其interrupt函數(shù)下添加for語(yǔ)句,如下圖所示:

      5、打開(kāi)終端,并編譯Interrupt.c文件和gpio_led.c文件。

      6、重新打開(kāi)一個(gè)終端,并按步驟輸入如下語(yǔ)句:

      7、依次輸入如下語(yǔ)句:

      1、cd /mnt/2410RP_linux/Experiment_Key/Interrupt/driver

      2、ls

      3、insmod Interrupt.o

      實(shí)驗(yàn)四 數(shù)碼管顯示實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康模?/p>

      學(xué)習(xí)串并轉(zhuǎn)換的相關(guān)知識(shí),并編寫(xiě)驅(qū)動(dòng)程序。

      二、實(shí)驗(yàn)內(nèi)容:

      編寫(xiě)針對(duì)zlg7289A 的驅(qū)動(dòng)程序。

      三、實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。

      四、實(shí)驗(yàn)步驟

      1、打開(kāi)Experiment_KeySpi_leddriver文件夾下的spi_led.c

      2、并在spi_ledInit函數(shù)下添加如下語(yǔ)句:

      保存并關(guān)閉。

      3、打開(kāi)終端,并編譯spi_led文件。

      4、重新打開(kāi)一個(gè)終端,并輸入如下語(yǔ)句:

      實(shí)驗(yàn)五

      AD 驅(qū)動(dòng)實(shí)驗(yàn)

      一 實(shí)驗(yàn)?zāi)康模骸⒘私饽?shù)轉(zhuǎn)換的基本原理;、掌握模數(shù)轉(zhuǎn)換的編程方法。

      二 實(shí)驗(yàn)內(nèi)容:、編程對(duì)模擬量輸入進(jìn)行采集和轉(zhuǎn)換,并將結(jié)果顯示在超級(jí)終端上。、通過(guò)改變模擬量輸入,觀察顯示結(jié)果。

      三 實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。

      四 實(shí)驗(yàn)步驟

      1、在spi_led..c中的simpled ioctl中加入以下程序

      2、在testADC中復(fù)制以下程序并修改如下

      3、掛載程序

      cd /mnt/2410RP_linux/Experiment_Key/spi_led/driver

      ls insmod spi_led.o

      cd /mnt/2410RP_linux/Experiment_Key/ad/driver

      insmod adc.o cd /mnt/2410RP_linux/Experiment_Key/ad/apl_test

      ls

      mknod /dev/spi c 104 1

      ls

      ./testADC

      下載嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告word格式文檔
      下載嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

        嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告 班 級(jí):學(xué) 號(hào):姓 名:成 績(jī):指導(dǎo)教師: 20110612 2011061208 李曉虹 武俊鵬、劉書(shū)勇 1. 實(shí)驗(yàn)一 1.1 實(shí)驗(yàn)名稱(chēng) 博創(chuàng)UP-3000實(shí)驗(yàn)臺(tái)基本結(jié)構(gòu)使用方法 1.2......

        嵌入式ARM鍵盤(pán)控制LED燈實(shí)驗(yàn)報(bào)告

        實(shí)驗(yàn)六 鍵盤(pán)控制LED燈實(shí)驗(yàn) 1 實(shí)驗(yàn)?zāi)康?(1) 通過(guò)實(shí)驗(yàn)掌握中斷式鍵盤(pán)控制與設(shè)計(jì)方法; (2) 熟練編寫(xiě)S3C2410中斷服務(wù)程序。 2 實(shí)驗(yàn)設(shè)備 (1) S3C2410嵌入式開(kāi)發(fā)板,JTAG仿真器......

        嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告(5篇)

        嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告內(nèi)容第一章:ARM2410CL嵌入式系統(tǒng)基礎(chǔ)實(shí)驗(yàn) 實(shí)驗(yàn)一ARM2410CL嵌入式教學(xué)實(shí)驗(yàn)系統(tǒng) 實(shí)驗(yàn)報(bào)告要求: (1) 簡(jiǎn)述嵌入式LINUX開(kāi)發(fā)的流程。 實(shí)驗(yàn)二 嵌入式LINUX開(kāi)發(fā)環(huán)境......

        ARM嵌入式系統(tǒng)的問(wèn)題總結(jié)分析.

        ARM嵌入式系統(tǒng)的問(wèn)題總結(jié)分析 摘要:本文是作者關(guān)于嵌入式系統(tǒng)一些基本問(wèn)題的思考和總結(jié)。主要是從嵌入式處理器與硬件、ARM處理器的優(yōu)勢(shì)、嵌入式軟件、嵌入式系統(tǒng)教學(xué)等方面......

        基于ARM嵌入式的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)

        基于ARM嵌入式的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì) 摘要:基于ARM 內(nèi)核的嵌入式系統(tǒng)在遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)中的設(shè)計(jì)實(shí)現(xiàn)與應(yīng)用。核心部分主要包 括 ARM 嵌入式平臺(tái)設(shè)計(jì)及 μC-OS 嵌入式實(shí)時(shí)操作系......

        嵌入式系統(tǒng)GPIO 輸入輸出實(shí)驗(yàn)報(bào)告

        實(shí)驗(yàn)四 GPIO 輸入實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1、能夠使用GPIO的輸入模式讀取開(kāi)關(guān)信號(hào)。 2、掌握GPIO相關(guān)寄存器的用法和設(shè)置。 3、掌握用C語(yǔ)言編寫(xiě)程序控制GPIO。 二、實(shí)驗(yàn)環(huán)境 P......

        中北大學(xué)嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告(推薦五篇)

        中北大學(xué)計(jì)算機(jī)與控制工程學(xué)院實(shí)驗(yàn)報(bào)告 《嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告》 專(zhuān) 業(yè) 電氣工程與智能控制 班 級(jí) 14070541 學(xué) 號(hào) 1407054103 姓 名 賈晨凌 實(shí)驗(yàn)一 ARM 處理器指令系統(tǒng)實(shí)驗(yàn)......

        南京理工大學(xué)嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告[范文大全]

        嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告 指導(dǎo)老師:孫瑜 時(shí)間:2014年11月 實(shí)驗(yàn)一 虛擬機(jī)下Linux程序編寫(xiě)和交叉編譯 一、實(shí)驗(yàn)?zāi)康?熟悉Linux開(kāi)發(fā)環(huán)境,學(xué)會(huì)基于S3C2410的Linux開(kāi)發(fā)環(huán)境的配置和使用......