久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式系統(tǒng)ARM實驗報告

時間:2019-05-14 04:41:53下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《嵌入式系統(tǒng)ARM實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式系統(tǒng)ARM實驗報告》。

第一篇:嵌入式系統(tǒng)ARM實驗報告

南京郵電大學通信與信息工程學院

實驗報告

實驗名稱:實驗一基于ADS開發(fā)環(huán)境的設計

實驗二嵌入式Linux交叉開發(fā)環(huán)境的建立 實驗三嵌入式Linux環(huán)境下的程序設計

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

班級學號B13010711 姓名馬俊民

開課時間 2015/2016學年第1學期

實驗一基于ADS開發(fā)環(huán)境的程序設計

一、實驗目的

1、學習ADS開發(fā)環(huán)境的使用;

2、學習和掌握ADS環(huán)境下的匯編語言及C語言程序設計;

3、學習和掌握匯編語言及C語言的混合編程方法。

二、實驗內容

1、編寫和調試匯編語言程序;

2、編寫和調試C語言程序;

3、編寫和調試匯編語言及C語言的混合程序;

4、編寫程序測試多寄存器傳送指令的用法。

三、實驗原理

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

ADS用于無操作系統(tǒng)的ARM系統(tǒng)開發(fā),是對裸機(可理解成一個高級單片機)的開發(fā)。ADS具有極佳的測試環(huán)境和良好的偵錯功能,它可使硬件開發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設計打基礎,為BootLoader的編寫和調試打基礎。

1.ADS軟件的組成

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

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

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

使用匯編語言進行編程簡單、方便,適用于初始化硬件代碼、啟動代碼等。匯編語言具有一些相同的基本特征:

1.一條指令一行。

2.使用標號(label)給內存單元提供名稱,從第一列開始書寫。3.指令必須從第二列或能區(qū)分標號的地方開始書寫。4.注釋必須跟在指定的注釋字符后面,一直書寫到行尾。

在ARM匯編程序中,每個段必須以AREA作為段的開始,以碰到下一個AREA作為該段的結束,段名必須唯一。程序的開始和結束需以ENTRY和END來標識。嵌入式C語言設計是利用基本的C語言知識,面向嵌入式工程實際應用進行程序設計。為了使單獨編譯的C語言程序和匯編程序之間能夠相互調用,必須為子程序之間的調用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調用的基本規(guī)則。

四、實驗過程與關鍵代碼分析

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

在File菜單中選擇New命令,打開一個新建工程對話框。在Project選項卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項目名稱,點擊確定。彈出工程窗口。

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

2.用匯編語言設計程序實現(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 在這個程序中,我們首先對R0和R1賦值,將R0作為一個變量,而R1作為一個存貯階乘值的寄存器。在每進行一次乘法之后,將R0減1。同時在做完減法后進行判斷,如果此時R0大于1,則返回繼續(xù)乘法,否則結束程序,輸出結果。

3.用調用子程序的方法實現(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;} 在這個程序中,主程序由c語言完成作求和,子程序由匯編語言寫成作階乘。

5.實現(xiàn)字符串的逆序復制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

五、實驗小結

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

一、實驗目的

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

2、學習和掌握Linux常用命令

3、學習和掌握vi編輯器的使用

二、實驗內容

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

2、熟悉Linux的常用命令

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

三、實驗原理

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

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

四、實驗過程與關鍵代碼分析

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

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

下載并運行VMWare,根據向導創(chuàng)建一臺新虛擬機并選擇Linux作為客戶操作系統(tǒng),再根據向導安裝RedHat Linux 9.0。

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

使用root登陸,用戶名為root,密碼為123456。之后對共享文件設置進行調整:打開settings界面,打開shared folders功能,同時將路徑設置到有課前下載的軟件的目錄下。

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

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

source.bash_profile 以后armv4l-unknown-linux-gcc將被自動搜索到

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

ifconfig eth0 192.168.0.121 命令配置了宿主機的IP地址。然后打開網絡配置窗口,重新探測MAC地址。重新激活。(2)關閉防火墻

單擊“Red”菜單→“系統(tǒng)設置”→“安全級別”→打開“安全級別配置”窗口,選擇“無防火墻選項。”(3)配置NFS。

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

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

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

5.目標機的信息輸出

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

6.程序的運行

打開超級終端,啟動Linux,屏幕顯示:

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

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

五、實驗小結

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

實驗三嵌入式Linux環(huán)境下的程序設計

一、實驗目的

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

2、學會編寫Makefile文件

二、實驗內容

1、熟悉嵌入式教學實驗箱的使用

2、編寫C程序和Makefile文件

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

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

三、實驗原理

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

1.編寫源程序

2.編寫Makefile文件 3.編譯程序

4.運行和調試程序

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

前三個步驟在宿主機上完成,后面的步驟在目標機上完成。

四、實驗過程與關鍵代碼分析

1.建立工作目錄

mkdir hello cd hello

2.編寫源程序

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

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

#include main(){

printf(“hello world n”);}

3.編寫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目錄下運行“make”來編譯程序。

make clean

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

5.下載調試

在宿主機上啟動nfs服務,并將/arms2410s設置為共享目錄。接下來啟動超級終端,建立通訊,掛載。

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

cd hello./hello 可以看見“Hello world”

只需要掛載一次便可,只要實驗箱沒有重啟,就可以一直保持連接。反復修改、編譯、調試,直至程序調試通過。

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

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

實驗四多線程程序設計

一、實驗目的1、2、二、實驗內容1、2、3、4、三、實驗原理

四、實驗過程與關鍵代碼分析

五、實驗小結

3+

第二篇:ARM與嵌入式實驗報告

ARM與嵌入式技術

實驗報告

專業(yè)班級:通信工程

姓名:**** 學號:******

實驗日期:2012年6月7日 指導老師:*****

一、實驗目的

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

2.掌握簡單ARM 匯編指令,進一步加強對嵌入式的熟悉和了解。

二、實驗設備

硬件:PC 機

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

三、實驗內容

例3:實現(xiàn)64位加法運算,要求【R1:R0】+【R3:R2】,結果放回【R1:R0】中; 例2:編寫程序將R2的高8位傳送到R3的低8位(不考慮R3的其它位); 例7:編寫一段程序計算10!;

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

四、實驗步驟

1)新建工程:

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

2)建立源文件:

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

3)添加源文件:

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

4)基本配置:

選擇菜單項Project → Settings,彈出工程設置對話框。在工程設置對話框中。① 選擇Processor 設置對話框,按照圖七所示,進行配置:

圖七

② 選擇Remote設置對話框,按照下圖八所示,進行配置:

圖八 ③ 選擇最右邊一個進行編譯,顯示如圖九,則編譯成功。

圖九

④ 選擇Project → Settings → Debug設置對話框,按照圖十所示,進行配置:

圖十 ⑤

選擇

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

圖十一

五、各實驗的參考程序及運行結果

實驗一:(例3)實現(xiàn)64位加法運算,要求【R1:R0】+【R3:R2】,結果放回【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位相加,并影響標志位*/

ADC R1,R1,R3

/*R1等于高32位相加,并加上低位進位*/ stop:

b stop.end

2.分析調試:

①download下載:

② 讀入數據:

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

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

實驗二:(例2)編寫程序將R2高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.分析調試:

①download下載:

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

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

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

實驗三:(例7)編寫一段程序計算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.分析調試:

① download下載:

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

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

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

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

LDR R0,=srcstr

/*指向源數據串R0*/

LDR R1,=dststr

/*指向目標數據串R1*/

mov R3,#NUM

/*R3=8*/

mov LR,PC

/*返回*/

B strcopy

/*調用串拷貝子程序*/ stop: b stop

strcopy:

LDRB R2,[R0],#1

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

STRB R2,[R1],#1

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

SUBS R3,R3,#1

CMP R3,#0

/*判斷是否結束*/

BNE strcopy

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

MOV PC,LR

/*返回*/.data

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

/*定義源數據串*/

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

/*定義目的字符串*/

2.分析調試:

①單步跟蹤后的結果及存儲器的結果顯示:

②寄存器的結果顯示:

六、實驗心得

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

第三篇:嵌入式系統(tǒng)實驗報告

嵌入式系統(tǒng)實驗報告

號:

名:

級:13電子信息工程

指導老師:

蘇州大學 電子信息學院

2016年12月

實驗一:一個燈的閃爍

1、實驗要求

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

2、電路原理圖

圖1 LED燈硬件連接圖

3、軟件分析

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

GPIO_Configuration();

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

for(;;)

{

GPIOF->ODR = 0xfcff;

/* PF8=0--> 點亮D3 */

Delay(1000000);

GPIOF->ODR = 0xffff;

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

Delay(1000000);

4、實驗現(xiàn)象

通過對GPIOF8的操作,可以使LED3閃爍

5、實驗總結

這是第一次使用STM32開發(fā)板,主要內容是對IO端口進行配置,點亮與IO端口相連接的LED燈,閃爍周期為2S。通過本實驗對STM32開發(fā)板的硬件原理有了初步了解。

實驗二:流水燈

1、實驗要求

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

2、電路原理圖

圖1 流水燈硬件連接圖

3、軟件分析

int main(void){

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

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

for(;;)

{

GPIOF->ODR = 0xffbf;

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

}

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

GPIOF->ODR = 0xfeff;

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

GPIOF->ODR = 0xfdff;

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

GPIOF->ODR = 0xfbff;

/* PF10=0--> 點亮LED5 */ }

4、實驗現(xiàn)象

LED1~LED5依次點亮,亮滅的時間間隔都為1S。

5、實驗總結

本次實驗對STM32開發(fā)板的GPIO端口進行進一步學習,通過程序可以實現(xiàn)流水燈的閃爍。

實驗三:單級外部中斷

1、實驗要求

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

2、電路原理圖

圖3 SW1硬件原理圖

3、軟件分析

int main()

{

RCC_Configuration();

GPIO_Configuration();

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

while(1)

{

}

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

/* IO口初始化 */

/* 全滅 */

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

GPIO_SetBits(GPIOF, GPIO_Pin_6);

/* LED1點亮 */

Delay(0x1FFFFF);

GPIO_ResetBits(GPIOF, GPIO_Pin_6);

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

4、實驗現(xiàn)象

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

5、實驗總結

通過本次實驗,可以對某一狀態(tài)通過外部中斷,改變其當前狀態(tài)。

實驗四:多中斷嵌套

1、實驗要求

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

2、電路原理圖

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

3、軟件分析

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;

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

//設定中斷源為PD3 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//中斷占優(yōu)先級為1 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;//設定中斷源為PA8 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中斷占優(yōu)先級為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 點亮 */ 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 點亮 */ 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 點亮 */

Delay(0x5fFFFF);

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

Delay(0x5fFFFF);

EXTI_ClearITPendingBit(EXTI_Line8);} } }

4、實驗現(xiàn)象

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

5、實驗總結

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

實驗五:TIM2的基本應用

1、實驗要求

TIM2定時器將LED燈定時點亮和熄滅一定的時間

2、電路原理圖

3、軟件分析

TIM_Cmd(TIM2, ENABLE);

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

TIM_TimeBaseStructure.TIM_Prescaler = 35999;

//定時時間為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、實驗現(xiàn)象

LED1燈按照1S的定時時間不斷閃爍

5、實驗總結

通過本次實驗,可以實現(xiàn)對LED燈進行定時控制其閃爍,而不需要延時函數控制了,定時時間較為精準。實驗六:TIM2,TIM3,TIM4多定時器的應用

1、實驗要求

利用TIM2,TIM3,TIM4定時器使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;此處比上一個實驗增加了2個定時器,同時又增加了一個優(yōu)先級

4、實驗現(xiàn)象

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

5、實驗總結

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

實驗七:串口USART1讀取CPU的ID號

1、實驗要求

通過USART1讀取 CPU 的 96 bit ID

2、電路原理圖

圖 開發(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、實驗現(xiàn)象

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

5、實驗總結

本次實驗實現(xiàn)了串口和PC機的傳輸,可以通過USART1將CPU的ID在電腦上顯示出來。

實驗八:異步通信USART2的重映射

1、實驗要求

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

2、電路原理圖

圖 開發(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);} 該程序將USART2重映射到PD05,PD06引腳

4、實驗現(xiàn)象

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

5、實驗總結

通過本次實驗,可以實現(xiàn)對異步通信USART2的重映射,再通過串口調試助手在電腦上顯示出來。

第四篇:嵌入式系統(tǒng)實驗報告

嵌入式系統(tǒng)設計實驗報告

班 級: 學 號: 姓 名: 成 績: 指導教師:

1.實驗一

1.1 實驗名稱

博創(chuàng)UP-3000實驗臺基本結構及使用方法

1.2 實驗目的

1.學習嵌入式系統(tǒng)開發(fā)流程。

2.熟悉UP-net3000實驗平臺的核心硬件電路和外設。

3.增加對各個外設的了解,為今后各個接口實驗打下基礎。

1.3 實驗環(huán)境

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

1.4 實驗內容及要求

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

(2)熟悉UP-net3000實驗平臺的核心硬件電路和外設(3)ARM JTAG的安裝與使用

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

1.5 實驗設計與實驗步驟

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

(1)超級終端:

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

(2)JTAG 驅動程序的安裝:

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

1.6 實驗過程與分析

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

1.7 實驗結果總結

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

1.8 心得體會

通過本次實驗對嵌入式實驗有了初步的了解,對基本開發(fā)流程也有了初步的了解。

2.實驗二

2.1 實驗名稱

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

2.2 實驗目的

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

2.3 實驗環(huán)境

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

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

2.4 實驗內容及要求

本次實驗使用ADS 集成開發(fā)環(huán)境,新建一個簡單的工程文件,并編譯這個工程文件。學習ARM仿真器的使用和開發(fā)環(huán)境的設置。下載已經編譯好的文件到嵌入式控制器中運行。學會在程序中設置斷點,觀察系統(tǒng)內存和變量,為調試應用程序打下基礎。

2.5 實驗設計與實驗步驟

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

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

2.6 實驗過程與分析

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

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

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

2.7 實驗結果總結

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

2.8 心得體會

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

3.實驗三

3.1 實驗名稱

鍵盤控制方法及LED驅動設計

3.2 實驗目的

熟悉ZLG7289芯片的內部結構,掌握用ZLG7289驅動鍵盤和LED的方法,掌握ARM匯編語言和C語言的編程方法編寫出一段程序,要求能在LED上顯示出小鍵盤上按下的4位數字。

3.3 實驗環(huán)境

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

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

3.4 實驗內容及要求

通過ZLG7289芯片驅動17鍵的鍵盤和8個共陰極LED,將按鍵值在LED 上顯示出來。

3.5 實驗設計與實驗步驟

(1)新建工程,將“Exp3鍵盤及LED 驅動實驗”中的文件添加到工程。(2)定義ZLG7289 寄存器(3)編寫ZLG7289 驅動函數(4)定義鍵盤映射表(5)定義鍵值讀取函數

(6)編寫主函數

3.6 實驗過程與分析

(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)主函數中需要在開始初始化zlg7289。編寫驅動和鍵值映射之后,在一個循環(huán)里面從鍵盤中讀取按鍵的號碼,根據鍵值映射讀出按鍵的值。然后在主函數中,將讀出的按鍵值在數碼管上顯示出來。

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

3.7 實驗結果總結

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

3.8 心得體會

通過本次實驗對ZLG7289芯片的內部結構有了更進一步的了解,對ZLG7289驅動鍵盤和LED的方法也更進一步的進行了學習。

4.實驗四

4.1 實驗名稱

電機轉動控制及中斷實驗

4.2 實驗目的

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

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

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

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

4.3 實驗環(huán)境

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

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

4.4 實驗內容及要求

學習步進電機和直流電機的工作原理,了解實現(xiàn)兩個電機轉動對于系統(tǒng)的軟件和硬件要求。學習ARM知識,掌握PWM 的生成方法,同時也要掌握I/O 的控制方法。

(1)編程實現(xiàn)ARM芯片的一對PWM 輸出用于控制直流電機的轉動,通過A/D 旋鈕控制其正反轉及轉速

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

(3)通過超級終端來控制直流電機與步進電機的切換。4.5 實驗設計與實驗步驟

(1)新建工程,將“電機轉動控制實驗”中的文件添加到工程(2)編寫直流電機初始化數(MotorCtrl.c)(3)控制直流電機與步進電機

4.6 實驗過程與分析

(1)通過把從串口中得到控制信息的代碼修改成從zlg7289芯片中讀取小鍵盤信息,從而利用試驗臺的小鍵盤來控制步進電機和直流電機的切換

(2)A/D轉換可以把電信號轉換成數字信號來控制電機的轉速。for(;;)

{ loop:

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

if(rPDATG&ZLG7289_KEY)//17鍵小鍵盤控制電機

{

*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旋鈕轉過的角度,360/512為步距角,//由于接了1/8減速器,兩者之商再乘以8為步進電機相應轉過的角度

if(count>=0)

{//轉角大于零

for(j=0;j

{

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

{

SETEXIOBITMASK(stepdata[i], 0xf0);

Delay(200);

}

}

}

else

{//轉角小于零

count=-count;

for(j=0;j

{

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

{

SETEXIOBITMASK(stepdata[i], 0xf0);

Delay(200);

}

}

} lastADData=ADData;

} }

(3)S3C44B0X 具有6 個16bit定時器,每個定時器可以基于中斷模式或 DMA模式運行。在定時中斷服務程序中寫需要定時處理的程序,每隔一段時間就會運行一次。

4.7 實驗結果總結

利用A/D轉換器實現(xiàn)了對直流電機和步進電機的控制,利用實驗設備上自帶的小鍵盤實現(xiàn)了A/D轉換器對兩個電機控制的切換。

4.8 心得體會

通過本次實驗,熟悉了ARM自帶的六路(三對)PWM,并對直流電機和步進電機的工作原理有了進一步的了解。

5.實驗五

5.1 實驗名稱

LCD驅動及觸摸屏實驗

5.2 實驗目的

掌握LCD顯示原理及顯示驅動的嵌入式系統(tǒng)編程實現(xiàn)方法;學習基于ARM的LCD 顯示驅動控制方法,通過對ARM 內置的LCD 控制器進行編程實現(xiàn)驅動LCD顯示屏;學習觸摸屏基本原理,理解觸摸屏的輸出標定以及與LCD 顯示器配合的過程,編程對觸摸屏進行控制。

5.3 實驗環(huán)境

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

5.4 實驗內容及要求

(1)學習LCD顯示器的基本原理,理解其驅動控制方法(2)編程對觸摸屏進行控制,實現(xiàn):

1.點擊觸摸屏上兩點后,兩點之間畫出一條直線。2.點擊觸摸屏并在其上移動,顯示移動軌跡

(3)編程實現(xiàn)總線方式驅動模塊的LCD和ARM內置的LCD控制器來驅動LCD

5.5 實驗設計與實驗步驟

(1)新建工程

(2)定義有關常量與宏

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

5.6 實驗過程與分析

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

(2)觸摸屏的先得到觸屏輸出的電信號的值,然后轉換為實際的屏幕坐標,再根據動作來決定如何處理緩存信息,刷新LCD。

LCD二級緩存矩陣: 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;// 藍色 break;case 7: jcolor=0x00e000e0;// 紫色 break;case 8: jcolor=0x00e0e0e0;// 白色 break;} for(k=0;k<240;k++)for(j=i*32;j

5.7 實驗結果總結

本次實驗由于坐標設定的問題并沒有成功實現(xiàn)觸摸痕跡的顯示,但在測試過程中,在觸摸屏上點擊或移動時會在超級終端上有顯示。

5.8 心得體會

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

6.實驗六

6.1 實驗名稱

ucos-II裁剪實驗

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

6.3 實驗環(huán)境

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

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

6.4 實驗內容及要求

(1)通過對μcos-II配置文件(OS_CFG.H)中相關的配置常量進行設置,實現(xiàn)對μcos-II的裁剪

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

6.5 實驗設計與實驗步驟

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

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

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

6.6 實驗過程與分析

(1)配置功能常量,將裁剪后的系統(tǒng)需要用到的功能配置常量設為1(2)裁減信號量數據(3)配置數據結構

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

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

6.7 實驗結果總結

通過本次實驗,裁減了系統(tǒng),修改了某些數據結構相關的常量,節(jié)省了內存空間

6.8 心得體會

通過本次實驗主要學習到了如何根據具體情況對μcos-II操作系統(tǒng)進行裁剪,從而得到即滿足需要,又非常緊湊的應用軟件系統(tǒng)。

7.實驗七

7.1 實驗名稱

ucos-II移植實驗

7.2 實驗目的

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

7.3 實驗環(huán)境

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

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

7.4 實驗內容及要求

(1)將μC/OS-II 內核移植到ARM7 微處理器S3C44B0上。(2)編寫兩個簡單任務,在超級終端上觀察兩個任務的切換。

7.5 實驗設計與實驗步驟

(1)新建工程

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

(6)編寫一個簡單的多任務程序來測試一下移植是否成功(7)編譯并下載移植后的uCOS-II

7.6 實驗過程與分析

(1)首先需要對相關寄存器做詳細的設定(2)用匯編語言編寫與處理器相關的函數(3)用分時的方法同時運行兩個任務

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

#define TaskName_Prio N //任務優(yōu)先級

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

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

7.7 實驗結果總結

通過實驗達到了ucosII系統(tǒng)移植的目的,并編寫了一個簡單的多任務程序,分時運行。

7.8 心得體會

通過本次實驗了解了μC/OS-II 內核的主要結構,掌握了ARM的C語言和匯編語言的編程方法。

8.實驗八

8.1 實驗名稱

各接口模塊相互銜接綜合實驗

8.2 實驗目的

(1)回顧串口、鍵盤、LED接口、A/D、電機轉動、定時器中斷、LCD接口及觸摸屏驅動控制等接口模塊驅動設計及開發(fā)方法

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

8.3 實驗環(huán)境

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

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

8.4 實驗內容及要求

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

8.5 實驗設計與實驗步驟

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

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

8.6 實驗過程與分析

(1)本次實驗設計主要是通過中斷來實現(xiàn),設定了flag=1,2,3,4,5,6六個標志位,對應不同的鍵值來實現(xiàn)功能的切換

(2)通過num/lock鍵來控制直流電機(3)通過“/”鍵來控制步進電機

(4)通過“*”鍵來控制屏輸出“hello world”(5)通過“+”鍵來實現(xiàn)LED燈的計時

(6)通過“DEL”鍵來實現(xiàn)清屏和LED燈的清除

(7)通過“enter”鍵來進入到鍵值控制LED顯示的功能

8.7 實驗結果總結

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

8.8 心得體會

通過本次綜合性的實驗來綜合之前做的串口、鍵盤、LED接口、A/D、電機轉動、定時器中斷、LCD接口及觸摸屏驅動控制實驗,回顧了之前的知識,對整體的運用有了進一步的了解,但是實驗結果仍有很多的不足,需要改進。

9.實驗總結與心得體會

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

第五篇:嵌入式系統(tǒng)實驗報告

廣西工學院鹿山學院

實 驗 報 告

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

指導教師: 劉瑞琪 班 級: 自動化101 姓 名: 楊杰 學 號: 20102787 成績評定: 指導教師簽字:

2013年5月25日

實驗一

簡單的程序

一 實驗目的:、動手實踐一個簡單的字符型設備驅動程序。、學習Linux 驅動程序構架。、學習在應用程序中調用驅動。

二 實驗內容:

編寫簡單的字符型設備驅動程序。編寫相應的應用程序。

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

四 實驗步驟

實驗二 CPU GPIO 驅動程序及測試程序

一、實驗目的:

編寫第一個針對實際硬件的驅動程序,進一步了解驅動程序構架。

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

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

四、實驗步驟

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

2、打開test.c,在else語句后更改函數語句如下:

3、復制Experiment_KeyADapl_test文件夾下的Makefile到Experiment_KeyGPIO文件夾下,打開并將中的ADC刪除。

4、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

5、在ssize_t SIMPLE_GPIO_LED_ioctl函數下添加如下語句:

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

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

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

保存并關閉。

7、打開終端,并編譯test.c文件和gpio_led.c文件。

8、重新打開一個終端,并按步驟輸入如下語句:

9、依次輸入如下語句:

1、cd..2、ls

3、mknod /dev/hello_ctl c 97 1

4、./test

實驗三 中斷實驗及LED顯示

一、實驗目的:

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

二、實驗內容:

編寫獲取和處理外中斷的驅動程序。

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

四、實驗步驟

1、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

2、在ssize_t SIMPLE_GPIO_LED_ioctl函數下添加如下語句:

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

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

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

保存并關閉。

4、打開Experiment_KeyInterruptdriver下的Interrupt.c文件,并在其interrupt函數下添加for語句,如下圖所示:

5、打開終端,并編譯Interrupt.c文件和gpio_led.c文件。

6、重新打開一個終端,并按步驟輸入如下語句:

7、依次輸入如下語句:

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

2、ls

3、insmod Interrupt.o

實驗四 數碼管顯示實驗

一、實驗目的:

學習串并轉換的相關知識,并編寫驅動程序。

二、實驗內容:

編寫針對zlg7289A 的驅動程序。

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

四、實驗步驟

1、打開Experiment_KeySpi_leddriver文件夾下的spi_led.c

2、并在spi_ledInit函數下添加如下語句:

保存并關閉。

3、打開終端,并編譯spi_led文件。

4、重新打開一個終端,并輸入如下語句:

實驗五

AD 驅動實驗

一 實驗目的:、了解模數轉換的基本原理;、掌握模數轉換的編程方法。

二 實驗內容:、編程對模擬量輸入進行采集和轉換,并將結果顯示在超級終端上。、通過改變模擬量輸入,觀察顯示結果。

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

四 實驗步驟

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

2、在testADC中復制以下程序并修改如下

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實驗報告word格式文檔
下載嵌入式系統(tǒng)ARM實驗報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關范文推薦

    嵌入式系統(tǒng)實驗報告

    嵌入式系統(tǒng)設計實驗報告 班 級:學 號:姓 名:成 績:指導教師: 20110612 2011061208 李曉虹 武俊鵬、劉書勇 1. 實驗一 1.1 實驗名稱 博創(chuàng)UP-3000實驗臺基本結構使用方法 1.2......

    嵌入式ARM鍵盤控制LED燈實驗報告

    實驗六 鍵盤控制LED燈實驗 1 實驗目的 (1) 通過實驗掌握中斷式鍵盤控制與設計方法; (2) 熟練編寫S3C2410中斷服務程序。 2 實驗設備 (1) S3C2410嵌入式開發(fā)板,JTAG仿真器......

    嵌入式系統(tǒng)實驗報告(5篇)

    嵌入式系統(tǒng)實驗報告內容第一章:ARM2410CL嵌入式系統(tǒng)基礎實驗 實驗一ARM2410CL嵌入式教學實驗系統(tǒng) 實驗報告要求: (1) 簡述嵌入式LINUX開發(fā)的流程。 實驗二 嵌入式LINUX開發(fā)環(huán)境......

    ARM嵌入式系統(tǒng)的問題總結分析.

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

    基于ARM嵌入式的遠程監(jiān)控系統(tǒng)設計

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

    嵌入式系統(tǒng)GPIO 輸入輸出實驗報告

    實驗四 GPIO 輸入實驗 一、實驗目的 1、能夠使用GPIO的輸入模式讀取開關信號。 2、掌握GPIO相關寄存器的用法和設置。 3、掌握用C語言編寫程序控制GPIO。 二、實驗環(huán)境 P......

    中北大學嵌入式系統(tǒng)實驗報告(推薦五篇)

    中北大學計算機與控制工程學院實驗報告 《嵌入式系統(tǒng)實驗報告》 專 業(yè) 電氣工程與智能控制 班 級 14070541 學 號 1407054103 姓 名 賈晨凌 實驗一 ARM 處理器指令系統(tǒng)實驗......

    南京理工大學嵌入式系統(tǒng)實驗報告[范文大全]

    嵌入式系統(tǒng)實驗報告 指導老師:孫瑜 時間:2014年11月 實驗一 虛擬機下Linux程序編寫和交叉編譯 一、實驗目的 熟悉Linux開發(fā)環(huán)境,學會基于S3C2410的Linux開發(fā)環(huán)境的配置和使用......

主站蜘蛛池模板: 人妻被修空调在夫面侵犯| 国产福利日本一区二区三区| 中文字幕一区二区人妻| 国产精品自产拍在线18禁| 国产高清在线精品一区小说| 国产欧美精品区一区二区三区| 最新国产精品拍自在线观看| 上司人妻互换hd无码| 久久亚洲精品国产精品| 狠狠五月深爱婷婷| 久久国产精品人妻一区二区| 久久综合a∨色老头免费观看| 精品国产一区二区三区av色诱| 自拍视频亚洲综合在线精品| 人妻精品久久无码专区涩涩| 中文字幕无码一区二区免费| 亚洲国产一区二区三区在线观看| 男男gv白嫩小受gv在线播放| 中文字幕成人精品久久不卡| 四川丰满妇女毛片四川话| 国产免费又色又爽粗视频| 国产美女在线精品免费观看| 久久精品无码一区二区app| 亚洲欧美日韩国产综合一区二区| 亚洲 另类 小说 国产精品无码| 国产av一区二区精品凹凸| 亚洲综合无码精品一区二区三区| 国产亚洲精品久久一区二区三区| 国产乱码一二三区精品| 无码午夜成人1000部免费视频| 236宅宅理论片免费| 中文字幕精品无码一区二区| 国产男女猛烈无遮挡免费网站| 日产乱码一区二区三区在线| 欧美性猛交xxxx乱大交| 国产手机在线精品| 久久伊人精品影院一本到综合| 琪琪电影午夜理论片八戒八戒| 中国精品偷拍区偷拍无码| 少妇性l交大片| 久久精品蜜芽亚洲国产av|