第一篇:嵌入式系統(tǒng)設(shè)計報告
嵌入式系統(tǒng)設(shè)計實驗報告
班 級:學 號:姓 名:成 績:指導教師:
20090612 2009112107 侯金鐘 武俊鵬、劉書勇 1.實驗一
1.1 實驗名稱
嵌入式系統(tǒng)硬件開發(fā)環(huán)境
1.2 實驗目的
1.熟悉UP-net3000實驗平臺。
2.超級終端設(shè)置及BIOS 功能使用。
1.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
1.4 實驗內(nèi)容及要求
熟悉UP-net3000實驗平臺的硬件電路和外設(shè),ARM JTAG的安裝和使用,利用超級終端檢驗外設(shè)的工作狀態(tài)。
1.5 實驗設(shè)計與實驗步驟
1.建立工程
(1)運行ARM SDT 2.5 集成開發(fā)環(huán)境(ARM Project Manager).(2)在新建的工程中,如圖1A-2 所示,選中工程樹的“根部”。
(3)因為開發(fā)板上的嵌入式處理器ARM7TDMI 沒有浮點處理器,所以,如圖1A-3 所
示,在彈出的對話框中設(shè)置Floating Point Processor 為none,并保持其他的設(shè)置不變。(4)選中工程樹的“根部”,通過菜單Project | Tool Configuration for work1.apj | asmlink | Set,對整個工程的連接方式進行設(shè)置。(5)在彈出的對話框中,選中Entry and Base 標簽,如圖1A-4 所示,設(shè)置連接的Read-Only(只讀)和Read-Write(讀寫)地址。
(6)選擇Linker Configuration 的ImageLayout 標簽,(7)選擇Project | Edit Project Tamplete 菜單,彈出Project Template Editor 對話框。
(8)選擇Project | Edit Variables for work1.apj,彈出Edit Variables for work1.apj 對話框。
2.進行程序的在線仿真、調(diào)試
1.6 實驗過程與分析
熟悉UP-net3000實驗平臺的硬件電路和外設(shè),安裝了ARM JTAG,利用超級終端檢驗了外設(shè)的工作狀態(tài)。
1.7 實驗結(jié)果總結(jié)
軟件安裝成功,結(jié)果顯示正常。
1.8 心得體會
通過此次試驗,我對ARM的環(huán)境的功能有一定的了解與完善。對試驗臺有了基本的認識與使用。
2.實驗二
2.1 實驗名稱
嵌入式系統(tǒng)軟件開發(fā)環(huán)境
2.2 實驗目的
1.熟悉ADS1.2 開發(fā)環(huán)境,學會ARM 仿真器的使用。
2.使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。
2.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
2.4 實驗內(nèi)容及要求
本次實驗使用ADS 集成開發(fā)環(huán)境。新建一個簡單的工程文件,并編譯這個工程文件。學習ARM 仿真器的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運行。學會在程序中設(shè)置斷點,觀察系統(tǒng)內(nèi)存和變量。
2.5 實驗設(shè)計與實驗步驟
(1)運行ADS1.2 集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite)。
(2)在新建的工程中,選擇Debug 版本,使用Edit | Debug Settings菜單對Debug 版本進行參數(shù)設(shè)置。(3)在Debug Settings 對話框中選擇Target Settings 項。在Post-linker一欄中選擇ARM from ELF。
(4)在Debug Settings 對話框中選擇ARM Linker 項
(5)在第四步中如果選擇簡單的地址連接設(shè)置,在Debug Settings 對話框中選擇ARM Linker 項
(6)回到的工程窗口中,選擇Release 版本,使用Edit | Release Settings 菜單對Release 版本進行參數(shù)設(shè)置。(7)參照第(3)、(4)、(5)、(6)步在Release Settings 對話框中設(shè)置Release版本的Post-linker、連接地址范圍、入口模塊和輸出文件。(8)回到如圖1B-3 所示的工程窗口中,選擇Targets 選項卡,如圖1B-11 所示。選中DebugRel 版本,按Del 鍵將其刪除。DebugRel 子樹是一個折衷版本,通常用不到,所以在這里刪除。
2.6 實驗過程與分析
1)回到工程窗口選中Debug 版本,執(zhí)行菜單Project | Make 對工程進行編譯連接。(2)在ADS 中執(zhí)行菜單Project | Debug 啟動ADS1.2 的調(diào)試工具AXD。(3)在AXD 中執(zhí)行菜單Options | Configure Target 對AXD 進行設(shè)置。(4)點Select 按鈕選擇遠程連接為ARM ethernet driver,點Configure 按鈕輸入仿真器的IP 地址。
(5)等待程序裝載完畢以后,通過Execute | Go 菜單以及Execute | Stop(或者工具欄中的相應按鈕)運行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過Execute | Step 菜單(或者工具欄中的相應按鈕)可以單步運行程序。
(7)程序停止后可以通過Processor Views | Sources 菜單查看源文件,并可在適當位置按F9 設(shè)置端點。
(8)使用在Processor View 菜單下的Registers、Variables 和Memory 命令可以查看工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。
2.7 實驗結(jié)果總結(jié)
超級終端輸出“Hello World!”。
2.8 心得體會
基本了解了ADS1.2的配置條件,學會了ARM仿真器的使用方法。
3.實驗三
3.1 實驗名稱
鍵盤及LED實驗
3.2 實驗目的
1.學習鍵盤及LED 驅(qū)動原理。
2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED。
3.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
3.4 實驗內(nèi)容及要求
通過ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED,將按鍵值在LED上顯示出來。要求從右至左循環(huán)顯示至少四位數(shù)字。
基本功能實現(xiàn)之后可考慮實現(xiàn)從左至右顯示四位及四位以上數(shù)字(最大八位),并可設(shè)置清零鍵等擴展功能。
3.5 實驗設(shè)計與實驗步驟
利用所給的基礎(chǔ)代碼進行調(diào)試,觀察輸出結(jié)果,結(jié)合指導書和教材掌握基本原理和源代碼的編寫方式。根據(jù)實驗的要求設(shè)計函數(shù)流程,并反復調(diào)試,實現(xiàn)功能。1.新建工程,將“Exp3 鍵盤及LED 驅(qū)動實驗”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)
#define ZLG7289_CS(0x20)//GPB5 #define ZLG7289_KEY(0x10)//GPG4 #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)3.編寫ZLG7289 驅(qū)動函數(shù)(ZLG7289.c)4.定義鍵盤映射表:(Keyboard16.c)
unsigned char KeyBoard_Map[]= {4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 鍵值映射表,通過查找鍵盤映射表來確定鍵盤掃描碼對應的按鍵值。
5.定義鍵值讀取函數(shù)。(Keyboard16.c)6.編寫主函數(shù),將按鍵值在數(shù)碼管上顯示。
3.6 實驗過程與分析
利用鍵盤驅(qū)動函數(shù)實現(xiàn)基本數(shù)字輸入,然后利用循環(huán)左移函數(shù)實現(xiàn)輸入數(shù)字做一樣功能,并通過改變函數(shù)中相應delay的值來消除鍵盤按鍵帶來的抖動。
3.7 實驗結(jié)果總結(jié)
按鍵值可以在LED上顯示出來。要求從右至左循環(huán)顯示八位數(shù)字,同時可以復位清零。達到實驗的效果。
3.8 心得體會
通過本次實驗,我了解了LED的顯示屏幕的數(shù)字的移位功能,這個功能不止可以用一個方法實現(xiàn),而循環(huán)左移是其中比較巧妙且省力的一種,在遇到類似情況的時候,可以優(yōu)先考慮能不能利用到文件中已經(jīng)存在的函數(shù),這樣可以不必自己編寫函數(shù),省時省力。是一種可靠的方法。4.實驗四
4.1 實驗名稱
電機轉(zhuǎn)動控制及中斷實驗
4.2 實驗目的
1.熟悉ARM本身自帶的六路即三對PWM,掌握相應寄存器的配置。
2.編程實現(xiàn)ARM系統(tǒng)的PWM輸出和I/O輸出,前者用于控制直流電機,后者用于控制步進電機。
3.了解直流電機和步進電機的工作原理,學會用軟件的方法實現(xiàn)步進電機的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。
4.了解44B0處理器上中斷的應用。5.學習在44B0處理器上中斷的應用。
6.進一步熟悉平臺外圍硬件及其驅(qū)動程序的編寫。
4.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
4.4 實驗內(nèi)容及要求
1.學習步進電機和直流電機的工作原理,了解實現(xiàn)兩個電機轉(zhuǎn)動對于系統(tǒng)的軟件和硬件要求。學習ARM 知識,掌握 PWM 的生成方法,同時也要掌握 I/O的控制方法。
2.編程實現(xiàn)ARM芯片的一對PWM輸出用于控制直流電機的轉(zhuǎn)動,通過A/D旋鈕控制其轉(zhuǎn)動方式。
3.編程實現(xiàn)ARM的四路I/O通道,實現(xiàn)環(huán)形脈沖分配用于控制步進電機的轉(zhuǎn)動,通過A/D旋鈕控制步進電機的轉(zhuǎn)角。
4.通過鍵盤控制直流電機與步進電機的切換。5.設(shè)置并啟動定時器。
6.設(shè)置中斷,編寫定時器中斷服務(wù)程序,對中斷次數(shù)進行計數(shù)并在LED上顯示結(jié)果。
4.5 實驗設(shè)計與實驗步驟
1.添加并打開工程。
2.進行直流電機初始化設(shè)置和代碼編寫。3.進行步進電機初始化設(shè)置和代碼編寫。
4.對Timer3編程,編寫定時器中斷服務(wù)程序,完成對中斷次數(shù)的計數(shù)。5.編寫LED計數(shù)顯示函數(shù),使LED能正確計數(shù)并顯示0-9999。6.編寫中斷初始化函數(shù)和中斷響應函數(shù)。7.終端下載測試。
4.6 實驗過程與分析 1.對直流電機進行編程和測試,掌握轉(zhuǎn)速和旋轉(zhuǎn)方向的設(shè)定方法。
2.對步進電機進行編程和測試,掌握ARM的四路I/O通道,實現(xiàn)環(huán)形脈沖分配用于控制步進電機的轉(zhuǎn)動,通過A/D旋鈕控制步進電機的轉(zhuǎn)角。
3.對主函數(shù)進行編程,用鍵盤響應直流電機與步進電機的切換控制。
4.掌握中斷相關(guān)語句的應用,弄清定義的中斷向量、中斷向量號,編寫中斷響應函數(shù),并完成中斷響應控制。
4.7 實驗結(jié)果總結(jié)
實現(xiàn)了直流電機與步進電機的基本設(shè)置和控制,可以通過鍵盤控制電機之間的切換。完成了中斷的響應和定時中斷。當對其中一個旋鈕轉(zhuǎn)動時,就可以由直流電機轉(zhuǎn)換成步進電機的轉(zhuǎn)換,達到實驗的效果。
4.8 心得體會
通過本次實驗,我了解了直流電機和步進電機的工作原理,同時也知曉了電機間的轉(zhuǎn)換過程,了解其中的道理內(nèi)涵,熟悉了ARM自帶的A/D轉(zhuǎn)換器的工作原理及編程方法,了解了中斷的意義和實現(xiàn)方法,實現(xiàn)了簡單了中斷處理程序。同時我也收獲了很多關(guān)于ARM處理機的相關(guān)知識。
5.實驗五
5.1 實驗名稱
觸摸屏驅(qū)動實驗
5.2 實驗目的
1.了解觸摸屏的基本概念與原理。
2.理解觸摸屏與LCD的關(guān)系。3.編程實現(xiàn)對觸摸屏的控制。
4.熟悉用 ARM 內(nèi)置的 LCD控制器驅(qū)動 LCD。
5.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
5.4 實驗內(nèi)容及要求
1.了解觸摸屏基本原理,理解對觸摸屏進行輸出標定、與LCD顯示器配合的過程。2.通過編程實現(xiàn)觸摸兩點自動在兩點間劃直線。3.通過編程實現(xiàn)在觸摸屏上動態(tài)畫出曲線。5.5 實驗設(shè)計與實驗步驟
1.添加并打開工程。
2.在頭文件中定義宏和常量及驅(qū)動函數(shù)。
#define ADS7843_CTRL_START 0x80 #define ADS7843_GET_X 0x50 #define ADS7843_GET_Y 0x10 #define ADS7843_CTRL_12MODE 0x0 #define ADS7843_CTRL_8MODE 0x8 #define ADS7843_CTRL_SER 0x4 #define ADS7843_CTRL_DFR 0x0 #define ADS7843_CTRL_DISPWD 0x3 // Disable power down #define ADS7843_CTRL_ENPWD 0x0 // enable power down #define ADS7843_PIN_CS(1<<6)//GPF6 #define ADS7843_PIN_PEN(1<<5)//GPG5 /////////觸摸屏動作//////// #define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 //觸摸屏單擊 #define TCHSCR_ACTION_DBCLICK 2 //觸摸屏雙擊 #define TCHSCR_ACTION_DOWN 3 //觸摸屏按下 #define TCHSCR_ACTION_UP 4 //觸摸屏抬起 #define TCHSCR_ACTION_MOVE 5 //觸摸屏移動
#define TCHSCR_IsPenNotDown()(rPDATG&ADS7843_PIN_PEN)(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采樣x 軸電壓值,數(shù)據(jù)為12 位,參考電壓輸入模式為差分模式,允許省電模式
#defineADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176, TchScr_Ymax=195,TchScr_Ymin=1910;//觸摸屏返回電壓值范圍 #defineADS7843_CMD_X 3.校準觸摸屏坐標,進行坐標轉(zhuǎn)換。
4.實現(xiàn)觸屏取點并顯示功能。
將觸摸動作及觸摸點坐標在超級終端上顯示出來。5.實現(xiàn)兩點間自動劃線功能。6.實現(xiàn)觸摸屏動態(tài)劃線功能。
可以使用TchScr_GetScrXY()函數(shù)(第三個參數(shù)為0)來獲得液晶屏的x、y 方向的電壓
范圍,分別點觸摸屏有效面積的左上角和右下角,得到下列參數(shù):
TchScr_Xmax=1840;TchScr_Xmin=176;TchScr_Ymax=195;TchScr_Ymin=1910;//此數(shù)值僅供參考,請以實際校對為準
5.6 實驗過程與分析 1.在定義觸屏響應功能的函數(shù)中對點擊觸屏進行響應函數(shù)的修改,在其中添加修改點顏色的函數(shù),修改得到的觸摸點的顏色,并顯示在LCD上。
2.獲取第一個點坐標并儲存,獲取第二個點坐標并儲存,由編寫的劃線函數(shù)取得儲存的兩點間直線上所有點的坐標,并對其改變顏色,顯示在LCD上,即完成劃直線功能。
3.將劃線函數(shù)應用到響應觸屏移動消息的函數(shù)下,即可對連續(xù)獲得的觸摸坐標進行連續(xù)的畫短直線,連接成曲線,完成動態(tài)劃線功能。
5.7 實驗結(jié)果總結(jié)
了解了觸摸屏響應動作消息的函數(shù)的工作原理,通過修改實現(xiàn)了觸摸屏響應不同動作進行畫點、劃線、動態(tài)劃線的功能。驗證觸摸屏的靈敏度的實驗。
5.8 心得體會
通過這次實驗,我基本掌握了通過編程驅(qū)動觸摸屏以及觸摸屏響應時間,實現(xiàn)了觸摸屏對不同動作消息的響應。同時也知曉了在觸摸屏上的描點畫線的實現(xiàn),但是由于不知名的原因,描點畫線的誤差較大,位置偏差較大,同時觸摸屏有時會不靈敏,出現(xiàn)時好時壞的現(xiàn)象,但是由于我們的辛勤鉆研,最終克服了這個困難,實現(xiàn)了最后的觸摸屏的實現(xiàn)。
6.實驗六
6.1 實驗名稱
UCOS-Ⅱ在ARM微處理器上的裁剪
6.2 實驗目的
1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。
2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現(xiàn)方法。3.學習如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進行裁剪。
4.通過對UCOS-Ⅱ配置文件(OS_CFG.H)中相關(guān)的配置常量進行設(shè)置,實現(xiàn)對UCOS-Ⅱ的裁剪。
6.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
6.4 實驗內(nèi)容及要求
對UCOS-Ⅱ內(nèi)核進行裁剪并移植到ARM7微處理器上。
6.5 實驗設(shè)計與實驗步驟 1.按照要求,載入STARTUP目錄下文件,完成系統(tǒng)初始化、環(huán)境配置。2.載入UCOS-Ⅱ的全部源碼,與處理器架構(gòu)相關(guān)的文件位于arch目錄下。3.在os_cpu.h中編寫與處理器和編譯器相關(guān)的代碼。
4.編寫os_cpu_c.c等6個與操作系統(tǒng)相關(guān)的函數(shù)。5.編寫os_cpu.asm等4個與處理器相關(guān)的函數(shù)。
6.6 實驗過程與分析
按照實驗步驟進行,得到了需要的系統(tǒng)。
6.7 實驗結(jié)果總結(jié)
按照要求進行了裁剪,得到了滿足需要又緊湊的應用軟件系統(tǒng)。
6.8 心得體會
通過本次實驗,我了解了UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu),掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現(xiàn)方法,學會了如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進行裁剪。
7.實驗七
7.1 實驗名稱
UCOS-Ⅱ在ARM微處理器上的移植和編譯
7.2 實驗目的
1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。
2.掌握將UCOS-Ⅱ內(nèi)核移植到ARM7處理器上的基本方法。
7.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
7.4 實驗內(nèi)容及要求
1.將UCOS-Ⅱ內(nèi)核進行移植到ARM7微處理器上。
2.編寫兩個簡單任務(wù),在超級終端上觀察兩個任務(wù)的切換。
7.5 實驗設(shè)計與實驗步驟
1.該實驗的文件分為兩類,其一是 STARTUP 目錄下的系統(tǒng)初始化、配置等文件,其二是 UCOS-Ⅱ的全部源碼,arch 目錄下的 3 個文件是和處理器架構(gòu)相關(guān)的。
2.設(shè)置 os_cpu.h 中與處理器和編譯器相關(guān)的代碼。
3.用 C 語言編寫 6 個操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)。4.用匯編語言編寫 4 個與處理器相關(guān)的函數(shù)(OS_CPU.ASM)。5.編寫一個簡單的多任務(wù)程序來測試一下移植是否成功。6.編譯并下載移植后的 UCOS-Ⅱ。
7.6 實驗過程與分析
1.按照實驗步驟進行,將μC/OS-II 內(nèi)核移植到了ARM7 微處理器上。2編寫了兩個簡單任務(wù),在超級終端上觀察兩個任務(wù)的切換。
7.7 實驗結(jié)果總結(jié)
將μC/OS-II 內(nèi)核順利移植到了ARM7 微處理器上。
7.8 心得體會
通過本次實驗,使我更加了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu),掌握了ARM的C語言和匯編語言的編程方法,了解了ARM7處理器結(jié)構(gòu),掌握了將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實現(xiàn)方法。
8.實驗八
8.1 實驗名稱
綜合實驗
8.2 實驗目的
對前七次實驗進行總結(jié),應用之前所學的知識,將前幾次實驗內(nèi)容結(jié)合起來,完成鍵盤,LED,觸摸屏,直流電機,步進電機各種功能的組合。實現(xiàn)一個較為全面的功能結(jié)構(gòu)。
8.3 實驗環(huán)境
硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。
軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。
8.4 實驗內(nèi)容及要求
對前七次實驗進行總結(jié),應用之前所學的知識,完成自擬的嵌入式系統(tǒng),要求綜合前期基礎(chǔ)實驗的各種功能。
8.5 實驗設(shè)計與實驗步驟
1.添加并打開工程。2.進行LCD設(shè)計,在LCD顯示屏輸出文本。
3.進行LED及鍵盤設(shè)計,完成LED輸出顯示功能和鍵盤輸入功能。4.進行電機控制設(shè)計,完成鍵盤控制電機轉(zhuǎn)動功能。5.進行中斷設(shè)計,完成定時中斷功能。
6.進行觸摸屏設(shè)計,完成觸摸屏感應和劃線功能。7.進行裁剪和移植功能設(shè)計和完成。
8.6 實驗過程與分析
1.完成LCD顯示功能,在LCD顯示屏上輸出文本:“Hello World!”。2.進入界面觸屏控制選擇功能,實現(xiàn)觸屏選擇功能。
3.自定義四種種功能,第一為電機控制,從鍵盤讀取命令,并將功能編號顯示在LED上,LED顯示的是計數(shù)的數(shù)據(jù),同時旋轉(zhuǎn)按鈕完成電機轉(zhuǎn)速的控制選擇。
4.第三種功能為劃線,功能編號顯示在LED高四位上,同時LCD屏幕清屏,為劃線功能做準備,可以實現(xiàn)劃線功能。
5.第四種功能為定時中斷,當由鍵盤控制時,LED顯示數(shù)值清零,實現(xiàn)了中斷。6.實現(xiàn)裁剪與移植功能。
8.7 實驗結(jié)果總結(jié)
完成了各種基本功能,并通過自擬的系統(tǒng)將各種功能整合起來,完成了一個小的嵌入式系統(tǒng),對前七次的功能有了更深入的了解。通過LED的計數(shù),當在計數(shù)值在前30秒之內(nèi),由鍵盤控制LED的數(shù)值及顯示,按鍵盤上的某一個按鍵,實現(xiàn)對LED上的數(shù)值清零,后30秒由觸摸屏控制清零,并且在前30秒之內(nèi),旋轉(zhuǎn)按鈕,實現(xiàn)對直流電機的運轉(zhuǎn),并且到步進電機的轉(zhuǎn)換。
8.8 心得體會
通過這次實驗,我更加深刻地掌握了前幾次實驗中的基本功能的實現(xiàn)方法,并且把幾種功能聯(lián)合在一起,實現(xiàn)一些功能,把LED 顯示屏,LCD觸摸屏,鍵盤,直流電機,步進電機等等設(shè)備聯(lián)合在一起,對該實驗有一定的幫助與提高,而我和我的隊友也對嵌入式系統(tǒng)有了更深入的了解,在此期間,也學習了關(guān)于ARM處理器的開發(fā)與實踐,了解了關(guān)于手機的嵌入式設(shè)備的產(chǎn)生過程,我也深深的對此充滿了興趣,對未來的嵌入式課程設(shè)計奠定了深厚的基礎(chǔ),可是令我遺憾的是,我和隊員的水平所限,沒有完成中斷優(yōu)先級的控制。本來想完成更多的功能,可是最后由于時間緊迫,也有一些其他的事情來分神分心,所以就只能完成這些,但是在未來的幾周內(nèi),嵌入式課程設(shè)計也給了我們很大的空間去做未完成的事情。我相信我們會做的更加完美,功能更強大,用于未來的生活中去實踐。
第二篇:《嵌入式系統(tǒng)設(shè)計》教學大綱
《嵌入式系統(tǒng)設(shè)計》課程教學大綱
嵌入式系統(tǒng)設(shè)計(Design of Embedded Systems)
一、課程教學目的和基本要求
教學目的:
嵌入式系統(tǒng)技術(shù)已被廣泛地應用于工業(yè)控制系統(tǒng)、信息家電、通信設(shè)備、醫(yī)療儀器、智能儀器儀表等眾多領(lǐng)域。如手機、PDA、MP3、手持設(shè)備、智能電話、機頂盒等,可以說嵌入式系統(tǒng)無處不在。本課程講述當前主流的嵌入式處理器—ARM的微處理器和實時操作系統(tǒng)μC/OS,介紹嵌入式系統(tǒng)的基本原理和應用及設(shè)計方法。通過本課程的學習,著重培養(yǎng)學生的實際動手能力,使學生掌握ARM的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計方法、系統(tǒng)擴展方法、應用及開發(fā)技術(shù)等。使學生在工作中具有利用嵌入式系統(tǒng)開發(fā)產(chǎn)品和解決實際問題的基本能力。
基本要求:
1、掌握嵌入式系統(tǒng)技術(shù)的基本原理。
2、了解并掌握ARM的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計方法、系統(tǒng)擴展方法、應用及開發(fā)技術(shù)等。
3、比較熟練地用ADS進行ARM實驗箱的編程及調(diào)試。
4、了解并掌握實時操作系統(tǒng)μC/OS,并學會用μC/OS開發(fā)小型應用系統(tǒng)。
二、先修課程及本課程總學時
先修課程:C程序設(shè)計語言、單片機原理 本課程總學時:36
三、課程章節(jié)及各章節(jié)學時安排
第一章 嵌入式系統(tǒng)概述(2學時)
第二章 嵌入式系統(tǒng)硬件基礎(chǔ)(2學時)
第三章 設(shè)計方法及ADS集成開發(fā)環(huán)境(4學時)
第一節(jié) 嵌入式系統(tǒng)的設(shè)計方法(2學時)第二節(jié) ADS集成開發(fā)環(huán)境(2學時)第四章 ARM7體系結(jié)構(gòu)(4學時)
第一節(jié)ARM7體系結(jié)構(gòu)介紹(2學時)第二節(jié)ARM7TDMI(-S)指令集簡介。(2學時)第五章 ARM指令集(8學時)
第一節(jié) ARM處理器尋址方式。(2學時)第二節(jié)ARM指令集。(2學時)第三節(jié)ARM匯編程序設(shè)計。(2學時)第四節(jié)C與匯編混合編程。(2學時)第六章 硬件結(jié)構(gòu)與功能(12學時)第一節(jié) LPC2106/2105/2104結(jié)構(gòu)(2學時)第二節(jié) GPIO及引腳連接模塊。(2學時)
第三節(jié) UART0和UART1、I2C接口、SPI接口。(2學時)第四節(jié) 定時器0和定時器1。(2學時)第五節(jié) 脈寬調(diào)制器(PWM)。(2學時)
第六節(jié) 看門狗及Flash存儲器系統(tǒng)和編程。(2學時)第七章 μC/0S-II程序設(shè)計(4學時)
第一節(jié) μC/0S-II簡介及移植(2學時)第二節(jié) 移植μC/0S-II。(2學時)
四、課程主要內(nèi)容
第一章 嵌入式系統(tǒng)概述(2學時)
1、嵌入式系統(tǒng)簡介(包括什么是嵌入式系統(tǒng),嵌入式系統(tǒng)的特點,嵌入式系統(tǒng)的分類)。
2、嵌入式系統(tǒng)的應用領(lǐng)域。
3、嵌入式系統(tǒng)的現(xiàn)狀和發(fā)展趨勢。
4、嵌入式微處理器和嵌入式操作系統(tǒng)。
5、嵌入式系統(tǒng)中的一些重要概念。難點:什么是嵌入式系統(tǒng)。
第二章 嵌入式系統(tǒng)硬件基礎(chǔ)(2學時)
1、嵌入式系統(tǒng)的總體結(jié)構(gòu)。
2、與嵌入式系統(tǒng)相關(guān)的硬件知識。難點:總體結(jié)構(gòu)。
第三章 設(shè)計方法及ADS集成開發(fā)環(huán)境(4學時)第一節(jié) 嵌入式系統(tǒng)的設(shè)計方法
包括嵌入式系統(tǒng)的設(shè)計流程,嵌入式系統(tǒng)的一般設(shè)計方法,嵌入式系統(tǒng)的硬件/軟件協(xié)同設(shè)計技術(shù)。第二節(jié) ADS集成開發(fā)環(huán)境
1、ADS 1.2 集成開發(fā)環(huán)境的組成
2、工程的編輯
3、工程的調(diào)試
4、仿真器的安裝與應用 難點:調(diào)試、仿真器。
第四章 ARM7體系結(jié)構(gòu)(4學時)第一節(jié)ARM7體系結(jié)構(gòu)介紹
1、處理器模式。
2、內(nèi)部寄存器。
3、程序狀態(tài)寄存器。
4、異常。
第二節(jié)ARM7TDMI(-S)指令集簡介。難點:異常。
第五章 ARM指令集(8學時)第一節(jié) ARM處理器尋址方式。第二節(jié)ARM指令集。
第三節(jié)ARM匯編程序設(shè)計。第四節(jié)C與匯編混合編程。難點:ARM匯編程序設(shè)計。
第六章 硬件結(jié)構(gòu)與功能(12學時)第一節(jié) LPC2106/2105/2104結(jié)構(gòu)
1、存儲器尋址。
2、系統(tǒng)控制模塊。
3、存儲器加速模塊。
4、向量中斷控制器。
第二節(jié) GPIO及引腳連接模塊。
第三節(jié) UART0和UART1、I2C接口、SPI接口。第四節(jié) 定時器0和定時器1。第五節(jié) 脈寬調(diào)制器(PWM)。
第六節(jié) 看門狗及Flash存儲器系統(tǒng)和編程。
難點:存儲器重新映射,編程實現(xiàn)功能部件的初始化和控制。本章實驗:LPC2106/2105/2104功能部件基礎(chǔ)實驗。
第七章 μC/0S-II程序設(shè)計(4學時)第一節(jié) μC/0S-II簡介及移植
1、移植規(guī)則。
2、編寫LPC2106/2105/2104的啟動代碼。第二節(jié) 移植μC/0S-II。難點:移植μC/0S-II。本章實驗:學習移植μC/0S-II。
五、教材及主要參考書
教材:
《嵌入式系統(tǒng)設(shè)計與開發(fā)》,馬文華,科學出版社,2006年
主要參考書:
[1] 田苗苗.嵌入式控制系統(tǒng).北京航空航天大學出版社,2002年 [2] 呂 駿 譯.嵌入式系統(tǒng)設(shè)計.電子工業(yè)出版社,2002年
[3] 周立功等.ARM微控制器基礎(chǔ)與實戰(zhàn).北京航空航天大學出版社,2003年
[4] 李駒光等.ARM應用系統(tǒng)開發(fā)祥解.清華大學出版社,2003年
[5] 劭貝貝譯.uCOS-II-源代碼公開的實時嵌入式操作系統(tǒng).中國電力出版社,2001年 [6] 田苗苗.嵌入式系統(tǒng)設(shè)計與實例開發(fā).清華大學出版社,2002年 [7] 袁勤勇等譯.嵌入式系統(tǒng)構(gòu)件.機械工業(yè)出版社,2002年 [8] 田苗苗.《實用嵌入式系統(tǒng)設(shè)計與開發(fā)—基于ARM微處理器與μCOS-II實時操作系統(tǒng)》(第二版),清華大學出版社,2003.9 [9] 邵貝貝譯.《源代碼公開的實時嵌入式操作系統(tǒng)——μCOS-II》,北京航空航天大學出版社,2003年
六、其他需要說明的情況
1.采用多媒體教學。
2.實驗課單列,每周2學時。
3.每周作業(yè)量2~3小時,主要針對基本概念、開發(fā)環(huán)境的操作和編程。
七、成績評定
1.理論考核
占60% 2.實踐考核
占40%(其中包括:實驗、作業(yè)、課堂提問、學生自行設(shè)計制作的作品)。
第三篇:《嵌入式系統(tǒng)設(shè)計》教案
嵌入式系統(tǒng)設(shè)計教案
課程總學時: 32 講課學時: 24 實驗學時: 8 授 課 人: 楊詞慧
南昌航空大學信息工程學院
目錄 嵌入式系統(tǒng)概述.......................................................................................................................1 1.1 嵌入式系統(tǒng)的基本概念...............................................................................................1 1.2 嵌入式系統(tǒng)的發(fā)展歷史...............................................................................................2 1.3 嵌入式系統(tǒng)的體系結(jié)構(gòu)...............................................................................................2 1.4 嵌入式處理器...............................................................................................................3 1.5 嵌入式操作系統(tǒng)...........................................................................................................4 1.6 嵌入式系統(tǒng)的應用及發(fā)展趨勢...................................................................................7 ARM體系結(jié)構(gòu).........................................................................................................................8 2.1 ARM設(shè)計思想.............................................................................................................8 2.2 ARM體系結(jié)構(gòu)分析.....................................................................................................9 2.3 ARM處理器系列.......................................................................................................11 2.4 ARM處理器模式.......................................................................................................15 2.5 ARM體系的異常處理...............................................................................................16 2.6 ARM內(nèi)部寄存器.......................................................................................................18 2.7 ARM體系的存儲系統(tǒng)...............................................................................................19 ARM指令系統(tǒng)及程序設(shè)計基礎(chǔ)...........................................................................................21 3.1 ARM尋址方式...........................................................................................................21 3.2 ARM指令集...............................................................................................................24 3.3 Thumb指令集............................................................................................................33 3.4............................................................................................................................................35 3.5............................................................................................................................................35 3.6 嵌入式系統(tǒng)設(shè)計與開發(fā)過程.....................................................................................36 STM32微控制器...................................................................................................................37 4.1 STM32微控制器的性能指標....................................................................................37 2 3 4
I 嵌入式系統(tǒng)概述
教學目的:使學生對嵌入式系統(tǒng)的基本概念和體系結(jié)構(gòu)、嵌入式處理器、嵌入式操作系統(tǒng)、嵌入式系統(tǒng)的歷史、應用及發(fā)展趨勢有一定的了解。
教學重點:嵌入式系統(tǒng)的基本概念、嵌入式處理器和嵌入式操作系統(tǒng)。教學難點:嵌入式系統(tǒng)的體系結(jié)構(gòu)、嵌入式處理器。教學方法與教學手段:課堂講授,多媒體教學。教學時間:2課時。教學內(nèi)容
1.1 嵌入式系統(tǒng)的基本概念
(1)嵌入式系統(tǒng)的定義
先舉例說明生活中的各種嵌入式系統(tǒng)設(shè)備,如iPhone、小米手機、洗衣機、電壓力鍋等。IEEE(國際電氣和電子工程師協(xié)會)的定義:嵌入式系統(tǒng)是用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
微機學會的定義:嵌入式系統(tǒng)是以嵌入式應用為目的的計算機系統(tǒng),可分為系統(tǒng)級、板級和片級。a)系統(tǒng)級:各種類型的工控機、PC104等模塊。b)板級:各種類型的帶CPU的主板或OEM產(chǎn)品。c)片級:各種以單片機、DSP、微處理器為核心的產(chǎn)品。
一般定義:嵌入式系統(tǒng)是以應用為中心,以計算機技術(shù)為基礎(chǔ),軟件硬件可裁剪,對功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統(tǒng)。
(2)嵌入式系統(tǒng)的特點 a)專用、軟硬件可剪裁配置。b)低功耗、高可靠性、高穩(wěn)定性。c)軟件代碼矮小精悍。d)代碼可固化。e)實時性。f)弱交互性。
g)軟件開發(fā)通常需要專門的開發(fā)工具、環(huán)境和方法。h)要求開發(fā)、設(shè)計人員具有較高的技能。i)具有較長的生命周期。(3)嵌入式系統(tǒng)的分類
按嵌入式微處理器的位數(shù)可分為:4位、8位、16位、32位和64位。按實時性能可分為:非實時系統(tǒng)和實時系統(tǒng)。
按軟件結(jié)構(gòu)可分為:嵌入式單線程系統(tǒng)和嵌入式事件驅(qū)動系統(tǒng)。
按應用領(lǐng)域可分為:信息家電類、消費電子類、醫(yī)療電子類、移動終端類、通信類、汽車電子類、工業(yè)控制類、航空電子類、軍事電子類等。
1.2 嵌入式系統(tǒng)的發(fā)展歷史
(1)以單芯片為核心的可編程控制器形成的系統(tǒng)
1971年11月,Intel推出Intel 4004。隨后出現(xiàn)Intel 8080/8085、8086、Motorola的6800、68000,Zilog的Z80、Z8000。
以微處理器為核心構(gòu)成的系統(tǒng)
單板機:Intel的iSBC系列、Zilog的MCB等
將計算機做在一個芯片上,大部分應用于專業(yè)性強的工業(yè)控制系統(tǒng)中,沒有操作系統(tǒng)的支持,系統(tǒng)結(jié)構(gòu)和功能相對單一,處理效率較低,存儲容量較小。
(2)以嵌入式CPU為基礎(chǔ)、以簡單操作系統(tǒng)為核心的嵌入式系統(tǒng)
CPU種類繁多,通用性較弱;系統(tǒng)開銷小,效率高;操作系統(tǒng)達到一定的兼容性和擴展性;應用軟件較專業(yè)化,用戶界面不夠友好。
(3)以嵌入式操作系統(tǒng)為標志的嵌入式系統(tǒng)
嵌入式操作系統(tǒng)可運行于各種不同類型的微處理器上,兼容性好;操作系統(tǒng)內(nèi)核小,效率高;具備文件和目錄管理,支持多任務(wù)、網(wǎng)絡(luò)應用,具備圖形窗口和用戶界面;有大量的應用程序接口API。
(4)以Internet為標志的嵌入式系統(tǒng) 嵌入式設(shè)備與Internet的結(jié)合。
1.3 嵌入式系統(tǒng)的體系結(jié)構(gòu)
(1)體系結(jié)構(gòu)
(2)硬件層
? 嵌入式處理器:ARM、DSP、FPGA ? 存儲器系統(tǒng):ROM、FLASH、SDRAM ? 中斷控制器、DMAC、定時器/計數(shù)器、UART、USB控制器、LCD控制器等 ? I/O接口:USB、I2C、SPI、CAN等
(3)中間層
? 硬件抽象層(Hardware Abstraction Layer, HAL)。位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,隱藏硬件接口細節(jié)。
? 板級支持包(Board Support Package, BSP)。為上層的驅(qū)動程序提供訪問硬件設(shè)備寄存器的函數(shù)包。? 設(shè)備驅(qū)動程序
1.4 嵌入式處理器
(1)嵌入式處理器的分類
中高端的嵌入式微處理器(Embedded Micro-Processor Unit, EMPU)低端的微控制器(Microcontroller Unit, MCU)DSP處理器(Digital Signal Processor, DSP)高度集成的片上系統(tǒng)(System on Chip, SoC)(2)嵌入式微處理器
由通用計算機中的CPU演變而來,只保留與嵌入式應用緊密相關(guān)的功能硬件,在工作溫度、抗電磁干擾、可靠性、功耗等方面做了各種增強。
主要的嵌入式處理器類型:ARM、MIPS、PowerPC、68000系列等。特點
a)在設(shè)計中考慮低功耗。
b)采用可擴展的處理器結(jié)構(gòu)。處理器內(nèi)部留有很多擴展接口。c)具有很強的存儲區(qū)保護功能。d)提供豐富的調(diào)試功能。
e)對實時任務(wù)具有很強的支持能力。(3)微控制器
俗稱單片機,將整個計算機系統(tǒng)集成到一塊芯片中。
WatchWatchdogdogGPIO/計數(shù)GPIOUARTUART定時定時/計數(shù)A/DA/DD/A器D/A器2CCANCANII2CSPISPIUSBUSBCPUCPUSRAMSRAM核心部分FlashFlash8位單片機示意圖以一種微處理器為核心,芯片內(nèi)部集成Flash、RAM、總線邏輯、定時器/計數(shù)器、I/O口、串行口、PWM、A/D、D/A等。
最早的單片機: 1976年,Intel的8048,Motorola的68HC05、Zilog公司的Z80.(4)DSP處理器
對系統(tǒng)結(jié)構(gòu)和指令進行了特殊設(shè)計,使其適合DSP算法 高效乘累加運算、超標量操作、指令流水線 高效數(shù)據(jù)存取、硬件重復循環(huán) 確定性操作(程序執(zhí)行時間可預測)應用場合:音視頻編解碼、數(shù)字濾波、FFT等(5)片上系統(tǒng)
將整個系統(tǒng)做在一個芯片上 優(yōu)點
a)通過改變內(nèi)部工作電壓,降低芯片功耗 b)減少芯片對外的引腳數(shù),簡化制造過程
c)減少外圍驅(qū)動接口單元及電路板之間的信號傳遞,加快微處理器數(shù)據(jù)處理的速度 d)內(nèi)嵌線路可避免信號傳遞時所造成的系統(tǒng)雜訊 聯(lián)發(fā)科推出28nm雙核處理器MT6572 a)代號武松,基于Cortex-A7架構(gòu) b)主頻為1.2GHz c)處理器上整合了Wi-Fi、FM收音機、GPS以及藍牙四種功能 d)支持500萬像素攝像頭(6)嵌入式處理器的發(fā)展趨勢 a)內(nèi)部結(jié)構(gòu)
SoC設(shè)計,與DSP、Flash、FPGA融合;性能更強,集成更多的功能部件;雙核或多核結(jié)構(gòu) b)功耗更低 c)可靠性更高 d)支持ISP、ISD 1.5 嵌入式操作系統(tǒng)
(1)操作系統(tǒng)的概念及功能
操作系統(tǒng)。是一組計算機程序的集合,用來有效地控制和管理計算機的硬件和軟件資源,并為用戶提供方便的應用接口。
功能:處理器管理;存儲器管理;設(shè)備管理;文件管理;用戶接口(2)操作系統(tǒng)的分類 按程序調(diào)度的方法分為
? 順序操作系統(tǒng)。只含一個運行程序,獨占CPU時間,順序執(zhí)行。如DOS系統(tǒng)。? 分時操作系統(tǒng)。系統(tǒng)內(nèi)同時有多道程序運行。如Unix系統(tǒng)。? 實時操作系統(tǒng)。
從應用角度,嵌入式操作系統(tǒng)可分為 ? 面向低端信息家電
? 面向高端信息家電 ? 面向個人通信終端 ? 面向通信設(shè)備 ? 面向汽車電子 ? 面向工業(yè)控制
從實時性的角度,嵌入式操作系統(tǒng)可分為 ? 具有強實時特點的嵌入式操作系統(tǒng) ? 具有弱實時特點的嵌入式操作系統(tǒng) ? 沒有實時特點的嵌入式操作系統(tǒng)(3)實時操作系統(tǒng)(RTOS)
是具有實時性且能支持實時控制系統(tǒng)工作的操作系統(tǒng),首要任務(wù)是調(diào)度一切可利用的資源來完成控制任務(wù)。
對現(xiàn)場不停監(jiān)測,一旦有事件發(fā)生能立即處理。與通用OS的區(qū)別:實時性,代碼尺寸小。一般包括以下幾個重要組成部分:
? 實時內(nèi)核:任務(wù)管理、定時器管理、存儲器管理、任務(wù)間通信與同步等。? 網(wǎng)絡(luò)組件 ? 文件系統(tǒng) ? 圖形用戶界面
IEEE的Unix委員會規(guī)定了實時操作系統(tǒng)須具備以下幾個特點: ? 支持異步事件的響應。? 中斷和調(diào)度任務(wù)的優(yōu)先機制。? 支持指令性計劃占式調(diào)度。? 支持同步。
(4)常見的嵌入式操作系統(tǒng) 嵌入式Linux ? 實時的嵌入式Linux:如RT-Linux、KURT-Linux等。RT-Linux將通常的Linux任務(wù)優(yōu)先級設(shè)為最低。
? 一般的嵌入式Linux:如μCLinux。? 開源,內(nèi)核小、效率高,可定制 μC/OS和μC/OS-II ? μC/OS-II(MicroController Operating System)是由Jean J.Labrosse開發(fā)的實時操作系統(tǒng)內(nèi)核。
? 已被移植到Intel、ARM、Motorola等公司的81種不同的處理器上。
? Labrosse用一年時間開發(fā)了μC/OS實時操作系統(tǒng); 1992年在《Embedded System Programming》上 發(fā)表介紹文章,并公布源代碼;1993年寫了《μC/OS, The Real-Time Kernel》;書及源碼推動了μC/OS-II的發(fā)展。
? μC/OS-II只是一個實時操作系統(tǒng)的內(nèi)核,全部核心代碼只有8.3 KB。? 只包含進程調(diào)度、時鐘管理、內(nèi)存管理和進程間的通信與同步等基本功能。Windows CE ? 多線程、完整優(yōu)先權(quán)、多任務(wù)的32位嵌入式操作系統(tǒng)。? 基本內(nèi)核大小至少為200KB。VxWorks ? 美國WindRiver公司于1983年設(shè)計
? 是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場占有率最高的系統(tǒng)。? 擁有良好的持續(xù)發(fā)展能力和高性能的內(nèi)核及友好的用戶開發(fā)環(huán)境。
? 支持多種處理器,如ARM、x86、i960、SunSparc、MIPS RX000、PowerPC、StrongARM等。? 以良好的可靠性和實時性,廣泛應用在通信、軍事、航空、航天等領(lǐng)域。
? 應用案例:美國F-
16、FA-18戰(zhàn)斗機,B-2隱形轟炸機,“愛國者”導彈,1997年4月在火星登陸的火星探測器。Palm OS ? 32位嵌入式操作系統(tǒng),由3Com公司的Palm Computing部門開發(fā)。
? 在掌上電腦和PDA市場上占有很大的市場份額,曾占據(jù)90%的PDA市場份額。? 2010年04月29日惠普12億美元收購Palm QNX ? 一個實時、可擴充的操作系統(tǒng)。
? 部分遵循POSIX(可移植操作系統(tǒng)接口)相關(guān)標準。
? 內(nèi)核僅提供4種服務(wù):進程調(diào)度、進程間通信、底層網(wǎng)絡(luò)通信和中斷處理。? 內(nèi)核非常小巧(QNX4.X約為12KB),運行速度極快。iOS ? 蘋果推出,基于Darwin ? 最新:iOS8 Android ? Google開發(fā)的基于Linux平臺的開源手機操作系統(tǒng) Delta OS ? 是電子科技大學實時系統(tǒng)教研室和北京科銀京成技術(shù)有限公司聯(lián)合研制并開發(fā)的全中文嵌入式操作系統(tǒng)。
? 絕大部分代碼由C語言編寫。
? 已成功應用于通信、網(wǎng)絡(luò)、信息家電等多個應用領(lǐng)域。pSOS ISI公司研發(fā)的產(chǎn)品。
模塊化、高性能、完全可擴展。
1.6 嵌入式系統(tǒng)的應用及發(fā)展趨勢
(1)嵌入式系統(tǒng)的應用領(lǐng)域 ? 消費電子領(lǐng)域 ? 通信網(wǎng)絡(luò)領(lǐng)域
? 工業(yè)控制領(lǐng)域、機器人領(lǐng)域 ? 交通管理與汽車電子領(lǐng)域 ? 國防與航空航天領(lǐng)域 ? 醫(yī)療儀器領(lǐng)域
(2)嵌入式系統(tǒng)的發(fā)展趨勢
? 小型化、智能化、網(wǎng)絡(luò)化、可視化 ? 多核技術(shù)的應用 ? 低功耗、綠色環(huán)保
? 云計算、可重構(gòu)、虛擬化等技術(shù)被進一步應用到嵌入式系統(tǒng)中 ? 嵌入式系統(tǒng)軟件將逐漸PC化 ? 融合趨勢
? 微控制器MCU與SoC的結(jié)合 ? 微控制器MCU與DSP的結(jié)合 ? ARM與DSP的結(jié)合
? 微控制器MCU與CPLD/FPGA的結(jié)合 ? 安全性 ARM體系結(jié)構(gòu)
教學目的:使學生對ARM設(shè)計思想、ARM處理器系列、ARM體系結(jié)構(gòu)、ARM處理器模式、ARM內(nèi)部寄存器、ARM體系的存儲系統(tǒng)有一定的了解。
教學重點:ARM設(shè)計思想、ARM體系結(jié)構(gòu)、ARM處理器模式、ARM內(nèi)部寄存器。教學難點:ARM處理器模式、ARM內(nèi)部寄存器。教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內(nèi)容
2.1 ARM設(shè)計思想
(1)RISC 傳統(tǒng)的CISC(Complex Instruction Set Computing)指令集中,約20%指令占整個程序代碼的80%。RISC(Reduced Instruction Set Computing)是一種設(shè)計思想,其目標是設(shè)計出一套能在高時鐘頻率下單周期執(zhí)行、簡單而有效的指令集。
RISC設(shè)計重點在于降低硬件執(zhí)行指令的復雜度,而傳統(tǒng)的CISC更側(cè)重于硬件執(zhí)行指令的功能性,使CISC指令變得復雜。
(2)RISC設(shè)計思想的實現(xiàn)
? 指令集。減少了指令種類,指令只實現(xiàn)簡單的功能,指令長度固定。
? 流水線。指令的處理過程被拆分成幾個更小的、能夠被流水線并行執(zhí)行的單元。
? 寄存器。更多通用寄存器,可存數(shù)據(jù)和地址,可為所有數(shù)據(jù)操作提供快速的局部存儲訪問。? load-store結(jié)構(gòu)。處理器只處理寄存器中數(shù)據(jù),用load和store指令完成寄存器和外存間的數(shù)據(jù)傳送
(3)ARM的設(shè)計思想 ? 較小的核。降低功耗
? 高的代碼密度。考慮成本和物理尺寸限制
? 較小的處理器內(nèi)核管芯(Die)面積。留給外設(shè)電路的空間較大 ? 硬件調(diào)試技術(shù)(4)ARM微處理器的特點
? 體積小,功耗低,成本低,性能高; ? 支持Thumb/ARM指令集,兼容8/16位器件;
? 大量使用寄存器,指令執(zhí)行速度更快; ? 大多數(shù)數(shù)據(jù)操作都在寄存器中完成; ? 尋址方式靈活簡單,執(zhí)行效率高; ? 指令長度固定。
2.2 ARM體系結(jié)構(gòu)分析
(1)包含典型 的RISC 體系結(jié)構(gòu)特征
? 統(tǒng)一寄存器文件加載/存儲體系結(jié)構(gòu),數(shù)據(jù)處理操作只針對寄存器內(nèi)容; ? 簡單尋址模式,所有加載/存儲地址只通過寄存器內(nèi)容和指令字段確定。? 指令長度固定,簡化了指令譯碼。(2)還提供
? 可組合使用轉(zhuǎn)換與算術(shù)或邏輯運算指令 ? 自動遞增和自動遞減尋址模式,可優(yōu)化程序循環(huán) ? 加載存儲多個指令以最大化數(shù)據(jù)吞吐量 ? 幾乎所有指令都采取條件執(zhí)行的方式(3)普林斯頓結(jié)構(gòu)和哈佛結(jié)構(gòu)
普林斯頓結(jié)構(gòu):也稱馮·諾伊曼結(jié)構(gòu),它將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲結(jié)構(gòu)。ARM7系列基于普林斯頓結(jié)構(gòu)。
哈佛結(jié)構(gòu):將程序指令存儲和數(shù)據(jù)存儲分開的存儲結(jié)構(gòu)。ARM9系列之后都基于哈佛結(jié)構(gòu)。
(4)流水線
ARM7的三級流水線在執(zhí)行單元完成了大量的工作,執(zhí)行單元的工作往往占用多個時鐘周期,從而成為系統(tǒng)性能的瓶頸。
ARM9采用哈佛架構(gòu),避免了數(shù)據(jù)訪問了取指的總路線沖突,采用五級流水線設(shè)計。
五級流水線技術(shù)把三級流水線中的執(zhí)行單元進一步細化,減少了在每個時鐘周期內(nèi)必須完成的工
作量,進而允許使用較高的時鐘頻率。
無論三級流水線還是五級流水線,在以下情況下都會發(fā)生阻塞: ? 多周期指令、跳轉(zhuǎn)分支指令 ? 中斷發(fā)生
? 相鄰指令之間的寄存器沖突:如果當前指令(A)的目的操作數(shù)寄存器和下一條指令(B)的源操作數(shù)寄存器一致,B指令就需要等A回寫之后才能譯碼。
(5)ARM體系結(jié)構(gòu)的版本
2.3 ARM處理器系列
(1)ARM處理器系列
? 經(jīng)典ARM處理器:ARM7、ARM9、ARM10、ARM11 ? Cortex-A系列處理器:Cortex-A15、Cortex-A9、Cortex-A8、Cortex-A7、Cortex-A5 ? Cortex-R系列處理器:Cortex-R7、Cortex-R5、Cortex-R4 ? Cortex-M系列處理器:Cortex-M4、Cortex-M3、Cortex-M1、Cortex-M0+、Cortex-M0、CMSDK、CMSIS ? SecurCore處理器(2)ARM內(nèi)核版本命名規(guī)則
(3)ARM7系列微處理器 a)主要特點
? 最高主頻:130MIPS(Million Instructions Per Second); ? 功耗低;
? 代碼密度高,兼容16位的微處理器; ? 可得到廣泛的操作系統(tǒng)和實時操作系統(tǒng)支持; ? 眾多的開發(fā)工具,優(yōu)秀的調(diào)試機制; ? 采用3級流水線結(jié)構(gòu);
? 提供0.25μm、0.18μm和0.13μm的生產(chǎn)工藝。b)馮·諾伊曼結(jié)構(gòu):數(shù)據(jù)和指令使用同一條總線。
c)包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T四種類型,適用于不同的市場要求 d)ARM7TDMI ? ARM公司最早為業(yè)界普遍認可并廣泛應用的處理器核。? T:Thumb;D:Debug;M:Multiplier;I:Embedded ICE logic。e)ARM7TDMI-S ? 是ARM7TDMI的可綜合(synthesizable)版本(軟核)。
? ARM以“軟”核的方式把ARM7TDMI核授權(quán)給處理器廠商,處理器廠商可進行修改和綜合。這就是ARM7TDMI-S。
? 綜合出的整個核比“硬”核大50%,電源效率降低50%。f)ARM7EJ-S ? 是可綜合的、帶有增強型DSP(E變種)和Java加速功能(J變種)的32位RISC嵌入式處理器。
? 主要用于數(shù)字音頻播放器、帶Java功能的無線手持設(shè)備、噴墨打印機、數(shù)碼相機和PDA等方面。
g)ARM720T ? 專為使用Windows CE、Symbian OS操作系統(tǒng)平臺設(shè)計。? 主要用于數(shù)字音頻播放器、噴墨打印機和數(shù)碼相機等。(4)ARM9系列微處理器 a)主要特點
? 5級整數(shù)流水線;
? 單一的32位AMBA(Advanced Microcontroller Bus Architecture)總線接口; ? MMU支持Windows CE、Symbian OS、Linux等; ? 支持實時操作系統(tǒng),包括VxWorks; ? 統(tǒng)一的數(shù)據(jù)Cache和指令Cache;
? 提供0.25μm、0.18μm和0.13μm的生產(chǎn)工藝。
b)包括ARM9TDMI、ARM920T、ARM940T和ARM9E四種類型。后三種含有Cache。
c)采用Harvard體系結(jié)構(gòu)
? 指令與數(shù)據(jù)分開存儲。? 采用指令快存 和數(shù)據(jù)快存。
d)在相同工藝條件下,ARM9TDMI的處理能力是ARM7TDMI的兩倍。e)ARM920T ?
Motorola MC9328MX1和Samsung S3C2410X處理器都采用ARM920T 核心。? 主要應用于通信終端、3G基帶和應用處理器、基于OS的平臺設(shè)備、數(shù)碼相機、音頻/視頻解碼和機頂盒等。
f)ARM940T ? 與ARM920T相比,實現(xiàn)了一個更小的D-Cache、I-Cache和MPU。適于不需運行操作系統(tǒng)的平臺。
g)ARM9E ? 使用單一的處理器核,提供微控制器、DSP、Java應用系統(tǒng)的解決方案; ? DSP指令集;
? 在0.13μm工藝下,主頻可達300MIPS的性能; ? 集成實時跟蹤調(diào)試功能; ? 可選的VFP9浮點處理協(xié)處理器;
? 高性能的AHB(Advanced High performance Bus)。(5)ARM10系列微處理器 a)主要特點
? 6級流水線;
? 在典型的0.13μm工藝下,主頻可達400MIPS的性能; ? 單一的32位AMBA 總線接口;
? MMU支持Windows CE、Symbian OS、Linux等; ? 統(tǒng)一的數(shù)據(jù)Cache和指令Cache;
? 提供0.25μm、0.18μm和0.13μm的生產(chǎn)工藝; ? 并行讀取/寫入部件。
b)包括:ARM1020、ARM10200、ARM1020E、ARM1022E、ARM1026EJ-S。c)使用ARM10TDMI處理器核,采用ARMv5T結(jié)構(gòu)。d)ARM10TDMI ? 在相同工藝條件下,處理能力是ARM9TDMI的兩倍;
? 采用提高時鐘頻率、6級流水線、轉(zhuǎn)移預測邏輯、64位存儲器和無阻塞的存/取邏輯等措施提升性能。
e)ARM10E。新節(jié)能模式,64位Load/Store體系,與ARM10TDMI相比具有的特點
? DSP指令集;
? 可選的VFP10浮點處理協(xié)處理器;
? 在實時控制和三維圖像處理時,主頻可達650MFLPS(百萬次浮點運算每秒)。
(6)ARM11系列微處理器
? ARM1156T2-S內(nèi)核、ARM1156T2F-S內(nèi)核、ARM1176JZ-S內(nèi)核和ARM11JZF-S內(nèi)核 ? ARM1156T2-S內(nèi)核和 ARM1156T2F-S內(nèi)核 ? 基于ARM v6指令集體系結(jié)構(gòu);
? 是首批含有ARM Thumb-2內(nèi)核技術(shù)的產(chǎn)品。(7)Cortex-A系列微處理器
? 適于高計算要求、運行豐富操作系統(tǒng)及提供交互媒體和圖形體驗的應用領(lǐng)域。? 支持傳統(tǒng) ARM、Thumb指令集和新的高性能緊湊型 Thumb-2 指令集。? 移動互聯(lián)網(wǎng)的支持
? 低功率設(shè)計,支持 Adobe Flash 10.1 ? 高性能 NEON 引擎,廣泛支持媒體編解碼器 ? 高性能
? Cortex-A15:為新一代移動基礎(chǔ)結(jié)構(gòu)應用和無線基礎(chǔ)結(jié)構(gòu)應用提供高性能的解決方案。
? Cortex-A9。800 MHz1 GHz 的頻率下,提供的性能超過 2000 DMIPS。
? Cortex-A5 低成本實現(xiàn),在 400-800 MHz 的頻率下,提供的性能超過 1200 DMIPS,是尺寸最小、功耗最低的 ARM 多核處理器。
? 多核技術(shù):Cortex-A15、Cortex-A5和Cortex-A9 處理器都支持 ARM 第二代多核技術(shù)。? 高級擴展
? Thumb-2,提供最佳代碼大小和性能。? TrustZone,安全擴展,提供可信計算。
? Jazelle 技術(shù),提高執(zhí)行環(huán)境(如 Java、.Net、MSIL、Python 和 Perl)速度。
(8)Cortex-R系列微處理器
? 為具有嚴格的實時響應限制的深層嵌入式系統(tǒng)提供高性能計算解決方案。
? 快速。以高時鐘頻率獲得高處理性能。
? 確定性。處理在所有場合都必須符合硬實時限制。? 安全。系統(tǒng)必須可靠且可信。
? 成本效益。在處理器及其內(nèi)存系統(tǒng)中都具有競爭力的成本和功耗。? 應用領(lǐng)域
? 智能手機
? 企業(yè)系統(tǒng):硬盤驅(qū)動器、聯(lián)網(wǎng)和打印 ? 消費電子:機頂盒、數(shù)字電視和播放器 ? 醫(yī)療行業(yè)、工業(yè)和汽車行業(yè)的可靠系統(tǒng) ? 功能集
(9)Cortex-M系列微處理器
? 向上兼容的高能效、易于使用的處理器
? 針對成本和功耗敏感的 MCU 和終端應用的混合信號設(shè)備進行過優(yōu)化。? 更低的功耗,更長的電池壽命。
? 高密度指令集,更小的代碼,更低的硅成本。
RISC 處理器內(nèi)核高性能32 位CPU具有確定性的運算低延遲3 階段管道Thumb-2 技術(shù)16/32 位指令的最佳混合小于8 位設(shè)備3 倍的代碼大小對性能沒有負面影響低功耗模式集成的睡眠狀態(tài)支持多電源域基于架構(gòu)的軟件控制嵌套矢量中斷控制器(NVIC)低延遲、低抖動中斷響應不需要匯編編程以純C 語言編寫的中斷服務(wù)例程工具和RTOS 支持廣泛的第三方工具支持Cortex 微控制器軟件接口標準(CMSIS)最大限度地增加軟件成果重用CoreSight調(diào)試和跟蹤JTAG 或2 針串行線調(diào)試(SWD)連接支持多處理器支持實時跟蹤(10)SecurCore系列微處理器
? 為安全要求較高應用設(shè)計。智能卡
? SIM、ID、銀行業(yè)、付費電視、公共交通、電子政務(wù)
2.4 ARM處理器模式
(1)32位ARM處理器工作狀態(tài)
32位ARM處理器有三種工作狀態(tài) ? ARM狀態(tài)。對應32位ARM指令集 ? Thumb狀態(tài)。對應16位Thumb指令集 ? Jazelle狀態(tài)。對應8位的Jazelle指令集
用于在處理器指令層次對JAVA加速
只有進入特定的狀態(tài),相應的指令集才有效。CPSR的J(Jazelle)和T(Thumb)位反映程序的狀態(tài)。Thumb-2 ? 與現(xiàn)有 ARM 和 Thumb 解決方案向后兼容,同時擴展了 Thumb 指令集的可用功能; ? 使用少于 31% 的內(nèi)存以降低系統(tǒng)成本; ? 提供比現(xiàn)有高密度代碼高出 38% 的性能。(2)64位ARM處理器工作狀態(tài)
ARMv8架構(gòu)
兩種主要執(zhí)行狀態(tài):AArch64, AArch32 AArch64:引入了一套新的指令集“A64”專門用于64位處理 AArch32:兼容現(xiàn)有的32位ARM指令集 ARMv8架構(gòu)支持三個主要指令集
A32(或 ARM):32 位固定長度指令集
T32(Thumb):以 16 位固定長度指令集的形式引入,在引入 Thumb-2 技術(shù)時增強為 16 位和 32 位混合長度
A64:提供與 ARM 和 Thumb 指令集類似功能的64位固定長度指令集(3)ARM處理器運行模式
? 用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。? 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理 ? 外部中斷模式(irq):用于通用的中斷處理。? 管理模式(svc):操作系統(tǒng)使用的保護模式。
? 數(shù)據(jù)訪問終止模式(abt):當數(shù)據(jù)或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護。
? 系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)。
? 未定義指令中止模式(und):當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。
運行模式可通過軟件改變,也可通過外部中斷或異常處理改變。用戶模式之外的模式稱為非用戶模式或特權(quán)模式。除用戶模式和系統(tǒng)模式之外的5種稱為異常模式,常用于處理中斷和異常、訪問受保護的系統(tǒng)資源等情況。
2.5 ARM體系的異常處理
(1)ARM體系中3種控制程序執(zhí)行流程的方式: ? 順序執(zhí)行 ? 跳轉(zhuǎn)分支指令
? 異常中斷:處理器暫時中斷當前數(shù)據(jù)流的現(xiàn)象。(2)對異常的響應。ARM處理器執(zhí)行完當前指令后: ? 進入與特定的異常相應的操作模式;
? 將引起異常指令的下一條指令的地址保存到新模式的R14中;
? 將CSPR原值保存到新模式的SPSR中;
? 通過設(shè)置CSPR的第7位來禁止IRQ。如果為FIQ中斷,則還要設(shè)置CSPR的第6位來禁止FIQ;
? 給PC強制賦向量地址值。(3)中斷向量表
指定了異常中斷及其處理程序的對應關(guān)系,它通常存放在存儲地址的低端。
大小為32字節(jié),其中每個異常中斷占據(jù)4字節(jié)空間,用于存放一個跳轉(zhuǎn)指令或者一個向PC寄存器中賦值的指令。
(4)異常優(yōu)先級:當幾個異常中斷同時發(fā)生時,就必須按照一定的次序來處理這些異常中斷。(5)從異常返回
將連接寄存器LR的值減去相應偏移量后送到PC中; 將SPSR復制回CPSR中;
若在進入異常處理時設(shè)置了中斷禁止位,則要清除。通過普通指令控制PC返回
軟件中斷的返回指令 MOVS R15, R14;將鏈接寄存器內(nèi)容移入PC并轉(zhuǎn)換模式 IRQ,F(xiàn)IQ和預取異常終止中斷的返回指令 SUBS R15, R14, #4 數(shù)據(jù)終止異常的返回指令 SUBS R15, R14, #8;異常在導致異常的指令的下一條指令后產(chǎn)生
2.6 ARM內(nèi)部寄存器
(1)寄存器結(jié)構(gòu)
32位ARM有31個32位通用寄存器,6個狀態(tài)寄存器。通用寄存器可用來保存數(shù)據(jù)和地址信息,用R為前綴加寄存器序號表示
15個通用寄存器(R0~R14)、一個或兩個狀態(tài)寄存器及程序計數(shù)器可在任意時間和處理器模式下被訪問,有些處理器模式擁有自身獨立的寄存器
(2)通用寄存器
分成三類:
R0~R7:未分組寄存器。每個未分組寄存器在所有的處理器模式下都表示同一個物理寄存器。R8~R14:分組寄存器。每個分組寄存器與一個用戶模式的寄存器對應。R15:程序計數(shù)器PC。
分組寄存器R8~R14可分為兩組:
R8~R12:每個寄存器對應兩組不同的物理寄存器,一組是FIQ模式下的,記為R8_fiq~R12_fiq, 另一組是除FIQ模式外的:R8_usr~R12_usr。
R13~R14:分別對應6個不同的物理寄存器。用戶模式和系統(tǒng)模式共用一個寄存器,另外5個對應其余5種。
R13 _
R13:被稱為堆棧指針SP,但沒有任何指令強制性使用R13作為堆棧指針
R14又被稱為鏈接寄存器LR(Link Register)。當調(diào)用子程序時,返回地址被自動保存到R14。由于ARM采用了多級流水線技術(shù),所以當正常讀取PC值時,該值為當前指令地址值加8,或是加12。
2.7 ARM體系的存儲系統(tǒng)
(1)地址空間
將存儲器看作是從零地址開始的字節(jié)的線性組合 0-3字節(jié):第1個存儲的字數(shù)據(jù) 4-7字節(jié):第1個存儲的字數(shù)據(jù) 依次排列(2)存儲器格式 大端格式
小端格式
(3)存儲器訪問對準
無論取指還是內(nèi)存訪問都以字、半字或字節(jié)對準訪問 a)非對齊的指令預取操作
ARM狀態(tài):將一個非對齊地址寫入PC,數(shù)據(jù)的第0位和第1位被忽略,PC的bit[1:0]為0 Thumb狀態(tài):數(shù)據(jù)的第0位被忽略,PC的bit[0]為0 b)非對齊地址內(nèi)存的訪問操作(LOAD/STORE操作)
執(zhí)行結(jié)果不可預知
忽略字單元地址低兩位的值,半字單元最低位的值(分別對應訪問字和半字)
在LDR和SWP指令中,對存儲器訪問忽略造成地址不對齊的低地址位,然后使用這些低地址位控制裝載數(shù)據(jù)的循環(huán) ARM指令系統(tǒng)及程序設(shè)計基礎(chǔ)
教學目的:使學生對ARM指令系統(tǒng)及程序設(shè)計的基礎(chǔ)知識有一定的了解。教學重點:ARM指令系統(tǒng)。
教學難點:ARM程序設(shè)計的基礎(chǔ)知識。教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內(nèi)容
3.1 ARM尋址方式
(1)尋址方式
處理器根據(jù)指令中給出的地址信息尋找物理地址的方式。尋找操作數(shù)或操作數(shù)地址的方式。
(2)立即尋址
也叫立即數(shù)尋址,操作數(shù)本身在指令中給出,該操作數(shù)被稱為立即數(shù)。例如: ADD R0, R0, #1;R0?R0+1 立即數(shù)須以“#”為前綴,對于十六進制表示的立即數(shù),還需在“#”后加上“0x”或“&”。(3)寄存器尋址
操作數(shù)存在寄存器中。例如: ADD R0, R1, R2;R0?R1+R2(4)寄存器間接尋址
以寄存器的值作為操作數(shù)地址。例如: ADD R0, R1, [R2]
;R0 ? R1+[R2](5)基址變址尋址
a)基址加偏移的尋址方式
將寄存器內(nèi)容與指令中給出的地址偏移量相加,得到操作數(shù)的有效地址。如: LDR R0, [R1, #4];R0 ? [R1+4]
前變址:基址加變址作為操作數(shù)地址。
后變址:基址作為操作數(shù)的地址,傳送后自動更新基址寄存器的值。
b)基址加索引的尋址方式
將基址寄存器的值與索引寄存器的值相加,形成操作數(shù)的有效地址。例如: LDR R0, [R1, R2]
;R0 ? [R1+R2] c)多寄存器尋址
一條指令可完成多個(最多16個)寄存器值的傳送。例如:
LDMIA R0, {R1, R2, R4};R1 ? [R0] 22
;R2 ? [R0+4];R4 ? [R0+8](6)寄存器移位尋址
操作數(shù)為寄存器中數(shù)做相應的移位而得到 例如:
ARM中的移位或循環(huán)移位操作: ? LSL:邏輯左移(Logical Shift Left)? LSR:邏輯右移(Logical Shift Right)ADD
R0, R1, R2, LSL #3;R0?R1+8×R2 ? ASR:算術(shù)右移(Arithmetic Shift Right)。移位過程中保持符號位不變,若源操作數(shù)為正數(shù),則字的高端空出的位補0。若源操作數(shù)為負數(shù),則字的高端空出的位補1。
? ROR:循環(huán)右移(Rotate Right)。從字的最低端移出的位依次填入字的高端空出的位。? RRX:擴展的循環(huán)右移(Rotate Right Extended)。操作數(shù)向右移一位,左側(cè)空位由狀態(tài)寄存器C位填充。當移位的類型為RRX時,無需指定移位的位數(shù),其它的則須指定移位的位數(shù)。(7)相對尋址
以PC當前值作為基地址,指令中的地址標號作為位移量,兩者相加后得到操作數(shù)的有效地址。例如:
BL
NEXT
MOV ??
PC, LR
;從子程序返回 NEXT
;跳轉(zhuǎn)至子程序 NEXT ??
(8)堆棧尋址
a)堆棧:按先進后出(FILO)的方式工作,使用堆棧指針(Stack Pointer, SP)指示當前操作位置。b)根據(jù)棧指針的指向位置可將堆棧分為
? 滿堆棧:SP指向最后壓入堆棧的數(shù)據(jù)。? 空堆棧:SP指向下個將放入數(shù)據(jù)空位置
c)根據(jù)堆棧的生成方式可將堆棧分為
? 遞增堆棧(Ascending Stack):堆棧由低地址向高地址生成。
? 遞減堆棧(Descending Stack):由高地址向低地址生成。d)ARM支持四種類型堆棧工作方式
滿遞增堆棧:SP指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。滿遞減堆棧:SP指向最后壓入的數(shù)據(jù),且由高地址向低地址生產(chǎn)。
空遞增堆棧:SP指向下個將放入數(shù)據(jù)的空位置,且由低地址向高地址生成。空遞減堆棧:SP指向下個將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。
3.2 ARM指令集
(1)ARM指令集分類 加載/存儲指令
數(shù)據(jù)處理指令 分支指令
狀態(tài)寄存器訪問指令 異常/中斷指令 協(xié)處理器指令(2)ARM指令的特點 所有指令都是32bit;
大多數(shù)指令都在單周期內(nèi)完成; 所有指令都可以條件執(zhí)行; load/store體系結(jié)構(gòu);
指令集可以通過協(xié)處理器擴展。(3)ARM指令的格式
(4)ARM指令的條件執(zhí)行
所有ARM指令都可包含一個可選的條件碼,只有當CPSR中條件標志位滿足指定條件時,指令才會被執(zhí)行。否則以NOP指令通過流水線。
(5)加載/存儲指令
Load:將內(nèi)存中數(shù)據(jù)裝載到寄存器 Store:將寄存器中的數(shù)據(jù)存入內(nèi)存 a)單寄存器傳輸指令
LABEL:相對PC的尋址方式。編譯器在匯編時,會將標號LABEL匯編成PC的偏移量存入該指令的立即數(shù)字段。
B: Byte;S: Sign;H: Half LDR/STR:讀/寫一個32bit字到/從一個32位寄存器,要求讀/寫地址字對齊。LDRB:內(nèi)存8bit字節(jié)?32bit寄存器;不要求地址對齊,寄存器高24位清零。STRB:寄存器低8位?內(nèi)存的某個地址;不要求地址對齊。
LDRH:16bit半字? 32bit寄存器;要求地址半字對齊,寄存器的高16bit清零。STRH:寄存器低16bit?內(nèi)存;要求地址半字對齊。
LDRSH:有符號16bit半字?32bit寄存器中;要求地址半字對齊,寄存器高16bit根據(jù)符號位擴展。
LDRSB:有符號8bit字節(jié)?32bit寄存器中;不要求地址對齊,寄存器高24bit根據(jù)符號位擴展。
“數(shù)據(jù)”一列指的是這條指令所訪問的存儲單元
“基址寄存器”一列的內(nèi)容是指執(zhí)行指令之后“基址寄存器”的內(nèi)容 b)多寄存器傳輸指令
!:表示執(zhí)行完操作后將變化之后的地址值寫入基址寄存器
^:對于LDM操作,如恢復的寄存器中含有PC(R15)寄存器,則指令執(zhí)行的同時CPU自動將SPSR拷貝到CPSR中,例如:
LDMFD {R0-R12, LR, PC}^ 數(shù)據(jù)的傳送發(fā)生在User用戶模式下的寄存器,而非當前模式寄存器,例如:
LDMDB SP, {R0-LR}^ 例如:
STMIA R0!, {R1-R5};以R0為地址指針,將R1-R5保存到內(nèi)存,指針向上移動
c)交換指令
SWP {B} {
SWP R1, R2, [R3];R1?[R3] ,[R3]? R2 SWP R1, R1, [R2];R1與[R2]內(nèi)容互換(6)數(shù)據(jù)處理指令
a)數(shù)據(jù)傳送指令
MOV {cond} {S} Rd, Operand 例如: MOV R1, R0 MOVEQ PC, R14
;將R14值傳到PC b)數(shù)據(jù)取反傳送指令 MVN {cond} {S} Rd, Operand 例如:
MVN R1, #2;將立即數(shù)2取反送至R1 c)算術(shù)運算指令
ADD、ADC ADD|ADC {cond} {S} Rd, Oper1, Oper2 例如: ADDS ADCS ADCS ADC R0, R4, R8 R1, R5, R9;加低端的字;帶進位加第二字
R2, R6, R10;帶進位加第三字 R3, R7, R11;帶進位加第四字
可實現(xiàn) 128位加法 SUB:減法指令
SUB {cond} {S} Rd, Oper1, Oper2 SBC:帶借位減法指令
SBC {cond} {S} Rd, Oper1, Oper2 例:SBCS R0, R1, R2;R0=R1–R2–C RSB:反向減法指令
RSB {cond} {S} Rd, Oper1, Oper2 操作數(shù)2減去操作數(shù)1,例如: RSB R0, R1, R2;R0 = R2 – R1 RSC:帶借位的逆向減法指令 RSC {cond} {S} Rd, Oper1, Oper2 d)邏輯運算指令 AND:與
AND {cond} {S} Rd, Oper1, Oper2 ORR:或
ORR {cond} {S} Rd, Oper1, Oper2 EOR:異或
EOR {cond} {S} Rd, Oper1, Oper2 e)比較指令 CMP CMP {cond} Operand1, Operand2 CMN:反值比較 CMN {cond} Operand1, Operand2 將第一個數(shù)與第二個數(shù)的反值進行比較,相當于完成兩個數(shù)相加。例如: CMN R1, R0;R1+R0,并設(shè)置CPSR f)測試指令 TST TST {cond} Operand1, Operand2
把兩個操作數(shù)按位進行與運算,根據(jù)結(jié)果更新CPSR。
TEQ TEQ {cond} Operand1, Operand2 把兩個操作數(shù)按位進行異或運算,根據(jù)結(jié)果更新CPSR g)乘法指令 MUL MUL {cond} {S} Rd, Oper1, Oper2 Rd?Operand1×Operand2。例如: MUL
R0, R1, R2 MLA MLA {cond} {S} Rd,Oper1,Oper2,Oper3 Rd?Operand1×Operand2+Operand3 例如:
MLA R0, R1, R2, R3;R0 = R1×R2+R3;R0 =R1×R2 UMULL:64位無符號數(shù)乘法指令 UMULL {cond} {S} Rd_L, Rd_H, Operand1, Operand2 Rd_H:Rd_L? Operand1×Operand2 例如: UMULL R0, R1, R2, R3;R0 =(R2×R3)的低32位;R1 =(R2×R3)的高32位 UMLAL: 64位無符號數(shù)乘加指令 UMLAL {cond} {S} Rd_L, Rd_H, Operand1, Operand2 Rd_H:Rd_L+= Operand1×Operand2 例如:
UMLAL
R0, R1, R2, R3;R0 =(R2×R3)的低32位+R0;R1 =(R2×R3)的高32位+R1 SMULL:64位有符號數(shù)乘法指令 SMULL {cond} {S} Rn_L, Rn_H, Operand1, Operand2 Rd_H:Rd_L? Operand1×Operand2 SMLAL: 64位有符號數(shù)乘加指令 SMLAL {cond} {S} Rn_L, Rn_H, Operand1, Operand2 Rd_H:Rd_L+= Operand1×Operand2(7)分支指令
a)B(分支指令)和 BL(帶鏈接分支指令)B {cond} LABEL BL {cond} LABEL
允許向前或向后跳轉(zhuǎn)最高32MB。
BL:帶返回的分支指令,用于調(diào)用一個將其返回地址存入鏈接寄存器的函數(shù)。例如:
SUBPRG BL …… SUBPRG ??;<子程序代碼> MOV PC, LR;返回
b)BX(分支并可選地交換指令集)和BLX(帶鏈接分支并可選地交換指令集)BX {cond} Rm BLX {cond} LABEL | Rm Rm:轉(zhuǎn)移地址,bit[0]為0時,目標地址處為ARM指令,否則為Thumb指令。BX 和 BLX是唯一可使用的切換指令集的方法。
BX 和 BLX指令執(zhí)行與B和BL指令相同的分支操作,并可從ARM指令集切換到THUMB指令集。
c)長跳轉(zhuǎn)
通過向PC寄存器中寫目標地址值,可實現(xiàn)在4GB地址空間中進行任意跳轉(zhuǎn)。例如: MOV MOV LR, PC;保存返回地址
R15, #0x00110000;無條件轉(zhuǎn)向0x110000(8)狀態(tài)寄存器訪問指令 a)MRS MRS {
R3, CPSR;CPSR?R3
x:擴展域,即PSR[15:8] s:狀態(tài)域,即PSR[23:16] f:標志域,即
;設(shè)置所有標志位
(9)異常/中斷指令(續(xù))a)SWI SWI {
SWI 0x01
;調(diào)用編號為01的系統(tǒng)例程
b)BKPT BKPT <16位立即數(shù)> 產(chǎn)生軟件斷點中斷,可用于程序調(diào)試。例如 BKPT 0xF010(10)協(xié)處理器指令 a)CDP CDP {
CDP P6, 2, C5, C10, C3, 16
;激活協(xié)處理器P6的操作,操作碼1和操作碼2值分別為2和16,目標寄存器為C5,源操作數(shù)寄存器為C10和C3 b)MRC和MRC MRC | MCR {
STC:存儲器?協(xié)處理器寄存器 前變址格式
LDC | STC {
LDC | STC {
(1)Thumb指令集的特點
? 是ARM指令集壓縮形式的子集,所有Thumb指令均有對應的ARM指令。? 采用16位二進制編碼,代碼密度小。
? 執(zhí)行Thumb指令時,先動態(tài)解壓縮,然后作為標準的ARM指令執(zhí)行。? 如何區(qū)分指令流取決于CPSR的位T。? 大多Thumb數(shù)據(jù)處理指令采用2地址格式。? 移位操作變成單獨指令。
? 沒有協(xié)處理器指令、單寄存器交換指令、乘加指令、64位乘法指令及程序寄存器處理指令。? 僅分支指令B有條件執(zhí)行功能。
(2)Thumb狀態(tài)切換
a)ARM狀態(tài)進入Thumb狀態(tài) 執(zhí)行帶狀態(tài)切換的轉(zhuǎn)移指令BX。例如: BX R0;若R0最低位為1,則轉(zhuǎn)Thumb狀態(tài)
異常返回。通常用于返回到進入異常前所執(zhí)行的指令流,而不是特地用于切換到Thumb模式。適用于異常前執(zhí)行的是Thumb指令。
b)Thumb 狀態(tài)進入ARM狀態(tài) 執(zhí)行BX指令。
利用異常進入ARM指令流。(3)Thumb指令寄存器的使用 ? 對R0~R7具有全部訪問權(quán)限。
? R8~R12的訪問受到限制,只能通過MOV、ADD和CMP訪問。
? 在每一種特權(quán)模式下都有一組SP、LR和SPSR,分別對應ARM狀態(tài)的R13、R14和R15。(4)Thumb指令與ARM指令的相似點 ? Load/Store結(jié)構(gòu)。
? 支持8位字節(jié)、16位半字和32位字數(shù)據(jù)類型。? 半字以2字節(jié)邊界對準,字以4字節(jié)邊界對準。(5)Thumb指令與ARM指令差異點
? 跳轉(zhuǎn)指令:條件跳轉(zhuǎn)在范圍上有更多的限制,轉(zhuǎn)向子程序只具有無條件轉(zhuǎn)移。
? 數(shù)據(jù)處理指令:對通用寄存器進行操作,操作結(jié)果需放入其中一個操作數(shù)寄存器。因此,許多Thumb指令采用2地址格式,ARM數(shù)據(jù)處理指令大多采用3地址格式。? 單寄存器加載和存儲指令:只能訪問R0~R7。
? PUSH和POP指令使用堆棧指針R13作為基址實現(xiàn)滿遞減堆棧,除R0~R7外,PUSH指令還可存儲R14,POP指令可加載程序指令PC。
? 大多數(shù)Thumb指令是無條件執(zhí)行的,所有ARM指令都是條件執(zhí)行的。? 由于采用高密度編碼,Thumb指令格式?jīng)]有ARM指令格式規(guī)則。(6)Thumb分支指令
a)B 指令——目標為Thumb代碼 B <條件碼>
B指令是Thumb指令集中唯一可條件執(zhí)行的指令。PC = PC +(SignExtend(signed_immed_8)<< 1)B
3.4 3.5 35
3.6 嵌入式系統(tǒng)設(shè)計與開發(fā)過程
(1)嵌入式軟件開發(fā)的特點 a)需要交叉開發(fā)環(huán)境
? 交叉開發(fā)環(huán)境:實現(xiàn)編譯、鏈接和調(diào)試應用程序代碼的環(huán)境,它分散在有通信連接的宿主機與目標環(huán)境之中。
? 宿主機(Host)是一臺通用計算機,一般是PC機。
? 目標機(Target)可以是嵌入式應用軟件的實際運行環(huán)境,也可以是能替代實際環(huán)境的仿真系統(tǒng)。
? 交叉軟件開發(fā)工具包括:交叉編譯器、交叉調(diào)試器和模擬軟件等。b)引入任務(wù)設(shè)計方法
? 嵌入式應用系統(tǒng)以任務(wù)為基本執(zhí)行單元 ? 用多個并發(fā)的任務(wù)代替通用軟件的多個模塊 c)需要固化程序 d)軟件開發(fā)難度大
? 實時性。
? 穩(wěn)定性、可靠性、抗干擾性。(2)軟硬件平臺的選擇 選擇處理器需考慮的因素 ? 處理性能 ? 技術(shù)指標、功耗
? 軟件支持工具、是否內(nèi)置調(diào)試工具 ? 供應商是否提供評估板 軟件平臺的選擇
? 操作系統(tǒng)。開發(fā)工具,與硬件接口難度,內(nèi)存,是否提供硬件驅(qū)動程序,可裁剪性、實時性等
? 編程語言。通用性、可移植性、執(zhí)行效率、可維護性等 ? 集成開發(fā)環(huán)境
(3)嵌入式系統(tǒng)設(shè)計與開發(fā)流程 ? 需求分析 ? 體系結(jié)構(gòu)設(shè)計
? 硬件的設(shè)計、制作及測試 ? 軟件的設(shè)計、實現(xiàn)及測試 ? 系統(tǒng)集成
? 系統(tǒng)性能測試及可靠性測試
STM32微控制器
教學目的:使學生對STM32的性能指標、硬件結(jié)構(gòu)有一定的了解。教學重點:STM32的硬件結(jié)構(gòu)。教學難點:STM32的硬件結(jié)構(gòu)。
教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內(nèi)容
4.1 STM32微控制器的性能指標
(1)STM32F103的主要功能
? ARM Cortex-M3核 ? 最高主頻72MHz ? 512kB Flash、64kB RAM ? 1個USB、1個CAN、5個USART、3個SPI、2個I2C、2個I2S、1個SDIO、112個GPIO
? 3個ADC、2個DAC、8個定時器
? FSMC總線(支持NOR,NAND,SRAM)? 12通道DMA控制器
? Serial wire debug(SWD)、JTAG 接口 ? 啟動:用戶Flash、系統(tǒng)存儲器、SRAM(2)JC-STM32CB核心板
? 核心芯片:ST STM32F103ZET6 ? 8M NOR Flash:SST39VF6401,16bit ? 128M NAND Flash:K9F1G08U0C,8bit ? 8MHz CPU晶振,32768Hz RTC晶振 ? 1個10M/100M以太網(wǎng)接口 ? 1路音頻輸出和1路音頻輸入 ? 1個10-pin JTAG調(diào)試接口 ? 1個4-pin SWD串行調(diào)試接口 ? Reset按鈕、自定義LED,電源LED ? 1個精密可調(diào)電阻連接到片內(nèi)ADC輸入
? 使用CPLD擴展IO口及地址譯碼,型號EPM240T100C5N ? 板載10/100M網(wǎng)卡控制器,型號DM9000AEP,16bit總線接口
STM32
第四篇:嵌入式系統(tǒng)實習報告
一、嵌入式系統(tǒng)開發(fā)與應用概述
在今日,嵌入式ARM 技術(shù)已經(jīng)成為了一門比較熱門的學科,無論是在電子類的什么領(lǐng)域,你都可以看到嵌入式ARM 的影子。如果你還停留在單片機級別的學習,那么實際上你已經(jīng)落下時代腳步了,ARM 嵌入式技術(shù)正以幾何的倍數(shù)高速發(fā)展,它幾乎滲透到了幾乎你所想到的領(lǐng)域。本章節(jié)就是將你領(lǐng)入ARM 的學習大門,開始嵌入式開發(fā)之旅。以嵌入式計算機為技術(shù)核心的嵌入式系統(tǒng)是繼網(wǎng)絡(luò)技術(shù)之后,又一個IT領(lǐng)域新的技術(shù)發(fā)展方向。由于嵌入式系統(tǒng)具有體積小、性能強、功耗低、可靠性高以及面向行業(yè)具體應用等突出特征,目前已經(jīng)廣泛地應用于軍事國防、消費電子、信息家電、網(wǎng)絡(luò)通信、工業(yè)控制等各個領(lǐng)域。嵌入式的廣泛應用可以說是無所不在。
嵌入式微處理器技術(shù)的基礎(chǔ)是通用計算機技術(shù)。現(xiàn)在許多嵌入式處理器也是從早期的pC 機的應用發(fā)展演化過來的,如早期pC 諸如TRS-80、Apple II 和所用的Z80 和6502 處理器,至今仍為低 端的嵌入式應用。在應用中,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優(yōu)點。嵌入式處理器目前主要有Am186/88、386EX、SC-400、power pC、68000、MIpS、ARM 等系列。
在早期實際的嵌入式應用中,芯片選擇時往往以某一種微處理器內(nèi)核為核心,在芯片內(nèi)部集成必要的ROM/EpROM/Flash/EEpROM、SRAM、接口總線及總線控制邏輯、定時/計數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A 等各種必要的功能和外設(shè)。
二、實習設(shè)備
硬件:Embest EduKit-IV實驗平臺、ULINK2仿真器套件、pC機
軟件:μVision IDE for ARM集成開發(fā)環(huán)境、Windows 98/2000/NT/Xp
三、實習目的1.初步掌握液晶屏的使用及其電路設(shè)計方法;掌握S3C2410X處理器的LCD控制器的使用;掌握通過任務(wù)調(diào)用的方法把液晶顯示函數(shù)添加到uC/OS-II中;通過實驗掌握液晶顯示文本及圖形的方法與程序設(shè)計。
2.了解S3C2410X處理器UART相關(guān)控制寄存器的使用; 熟悉ARM處理器系統(tǒng)硬件電路中UART接口的設(shè)計方法:掌握ARM處理器串行通信的軟件編程方法。
3.掌握有關(guān)音頻處理的基礎(chǔ)知識;通過實驗了解IIS音頻接口的工作原理;通過實驗掌握對處理器S3C2410X中IIS模塊電路的控制方法;通過實驗掌握對常用IIS接口音頻芯片的控制方法。
4.了解μC/OS-II移植條件和內(nèi)核基本結(jié)構(gòu);掌握將μC/OS-II內(nèi)核移植到ARM9處理器上的方法和步驟。
四、實習要求
通過對μC/OS-II移植實驗、μC/OS-II LCD顯示實驗、串口通信實驗、IIS音頻實驗、液晶顯示實驗的學習,并將各部分內(nèi)容合并,最終得出實習結(jié)果,實習要求在鍵盤上輸入學號,在液晶顯示屏上顯示相應的學生信息。學生信息包括顯示每個人的照片和姓名系別等,并用鍵控設(shè)置學生輸出的順序,輸入學號就顯示那個學生的信息,然后過一段時間就順序循環(huán)播放。
移植μC/OS-II內(nèi)核到ARM處理器S3C2410,在IDE中觀察其運行狀況編寫S3C2410X處理器的串口通信程序;監(jiān)視串行口UART1動作;將從UART1接收到的字符串回送顯示。將從UART1接收到的字符串回送顯示。
通過使用Embest EduKit-IV實驗板的彩色液晶屏(800*480)進行電路設(shè)計,掌握液晶屏作為人機接口界面的設(shè)計方法,并編寫任務(wù)函數(shù)在uC/OS-II系統(tǒng)中實現(xiàn)位圖顯示。在uC/OS-II中建立五個任務(wù)Tast1和Tast2,其中Tast1順序熄滅四個LED,延遲一會在順序點亮四個LED。Tast2在LCD屏幕上循環(huán)顯示三幅圖片,并打印一些文字信息和背景音樂。過使用Embest EduKit-III實驗板的256 色彩色液晶屏(320x240)進行電路設(shè)計,掌握液晶屏作為人機接口界面的設(shè)計方法,并編寫程序?qū)崿F(xiàn):畫出多個矩形框;顯示ASCII字符;顯示漢字字符;顯示彩色位圖。
五、實習步驟
1.準備實驗環(huán)境
使用ULINK2仿真器連接Embest EduKit-IV實驗平臺的主板JTAG接口;使用Embest EduKit-IV實驗平臺附帶的交叉串口線,連接實驗平臺主板上的COM2和pC機的串口(一般pC只有一個串口,如果有多個請自行選擇,筆記本沒有串口設(shè)備的可購買USB轉(zhuǎn)串口適配器擴充);使用Embest EduKit-IV實驗平臺附帶的電源適配器,連接實驗平臺主板上的電源接口。
2.串口接收設(shè)置
在pC機上運行windows自帶的超級終端串口通信程序,或者使用實驗平臺附帶光盤內(nèi)設(shè)置好了的超級終端,設(shè)置超級終端:波特率115200、1位停止位、無校驗位、無硬件流控制,或者使用其它串口通信程序。(注:超級終端串口的選擇根據(jù)用戶的pC串口硬件不同,請自行選擇,如果pC機只有一個串口,一般是COM1)
3.打開實驗例程
1)打開實驗程序
2)運行μVision IDE for ARM軟件
3)默認打開的工程在源碼編輯窗口會顯示實驗例程的說明文件readme.txt,詳細閱讀并理解實驗內(nèi)容。
4)工程提供了兩種運行方式:一是下載到SDRAM中調(diào)試運行,二是固化到Nor Flash中運行。用戶可以在工具欄Select Target下拉框中選擇在RAM中調(diào)試運行還是固化Flash中運行。下面實驗將介紹下載到SDRAM中調(diào)試運行,所以我們在Select Target下拉框中選擇UART_Test IN RAM。
5)接下來開始編譯鏈接工程,在菜單欄“projiet”選擇“Build target”或者“Rebuild all target files”編譯整個工程。
6編譯完成后,在輸出窗口可以看到編譯提示信息,比如““.SDRAMUART_Test.axf”-0 Error(s), 1 Warning(s).”,如果顯示“0 Error(s)”即表示編譯成功。
7)撥動實驗平臺電源開關(guān),給實驗平臺上電,單擊菜單欄Debug->Start/Stop Debug Session項將編譯出來的映像文件下載到SDRAM中,或者單擊工具欄“”按鈕來下載。
8)下載完成后,單擊菜單欄Debug->Run項運行程序,或者單擊工具欄“”按鈕來全速運行程序。用戶也可以使用進行單步調(diào)試程序。
9)全速運行后,用戶可以在超級終端看到程序運行的信息。
10)用戶可以Stop程序運行,使用μVision IDE for ARM的一些調(diào)試窗口跟蹤查看程序運行的信息。注:如果在第4)步用戶選擇在Flash中運行,則編譯鏈接成功后,單擊菜單欄Flash->Download項將程序固化到NorFlash中,從實驗平臺的主板拔出JTAG線,給實驗平臺重新上電,程序?qū)⒆詣舆\行。
部分程序圖:
串口通信實驗:
IIS音頻實驗:
六、實習體會
在嵌入式系統(tǒng)中,除了課本上的基礎(chǔ)知識外,還學會了軟件編程的基本思路,掌握了液晶屏的使用及其電路設(shè)計方法;掌握有關(guān)音頻處理的基礎(chǔ)知識;掌握液晶顯示文本及圖形的方法與程序設(shè)計。
通過這次設(shè)計,掌握了液晶顯示實驗、μC/OS-II移植、μC/OS-IILCD顯示的工作原理及串口通信實驗的工作過程,學會了使用仿真軟件Embest EduKit-IV實驗平臺及ULINK2仿真器套件,并學會通過應用軟件仿真來實現(xiàn)各種通信系統(tǒng)的設(shè)計,對以后的學習和工作都起到了一定的作用,加強了動手能力和學業(yè)技能。雖然花了很長時間編寫軟件程序設(shè)計,但這一切還是理論上的。希望學校能提供機會和條件,讓我們能夠去真正地將理論和實踐相結(jié)合。通過這次程序,感覺自己所掌握的知識是那么的有限,還有許多需要改進和不足的地方,同時也幫助了我怎樣學好這門課程,增加了我對這門學科的興趣。總體來說,這次實習我受益匪淺。在摸索該如何設(shè)計電路使之實現(xiàn)所需功能的過程中特別有趣,培養(yǎng)了我的設(shè)計思維,增加了實際操作能力。在讓我體會到了設(shè)計電路的艱辛的同時,更讓我體會到成功的喜悅和快樂。通過這次實習通信系統(tǒng)的設(shè)計,使我更加清楚以后的發(fā)展及學習的方向。
最后感謝老師這個學期的指導和幫助!
七、參考文獻
《ARM9嵌入式系統(tǒng)設(shè)計與開發(fā)應用》熊茂華、楊震倫編著 清華大學出版社
《ARM9嵌入式系統(tǒng)設(shè)計與開發(fā)教程》于明編著 電子工業(yè)出版社
《Linux嵌入式系統(tǒng)教程》馬忠梅 北京航空航天大學出版社
第五篇:北航—嵌入式系統(tǒng)設(shè)計教學大綱
《嵌入式系統(tǒng)設(shè)計》課程計劃
北航機器人研究所
王田苗
魏洪興
一、課程名稱:嵌入式系統(tǒng)設(shè)計
二、課程目的:
嵌入式系統(tǒng)技術(shù)已被廣泛地應用于工業(yè)控制系統(tǒng)、信息家電、通信設(shè)備、醫(yī)療儀器、智能儀器儀表等眾多領(lǐng)域。如手機、PDA、MP3、手持設(shè)備、智能電話、機頂盒等,可以說嵌入式系統(tǒng)無處不在。
通過本課程學習,學生可以了解嵌入式系統(tǒng)技術(shù)基本概念、特點、分類,掌握嵌入式系統(tǒng)軟硬件設(shè)計的基本方法。本課程的特點是針對目前流行的基于ARM架構(gòu)的嵌入式微處理器與源碼公開的實時操作系統(tǒng)選擇?C/OS進行詳細剖析,并結(jié)合具體嵌入式系統(tǒng)開發(fā)實驗,使學生能夠熟練掌握嵌入式系統(tǒng)的設(shè)計與開發(fā)方法。
本門課程以采用講課和實驗相結(jié)合的方式,注重培養(yǎng)學生的實際應用能力與創(chuàng)新能力,以達到“學習嵌入式,使用嵌入式”的教學目的。
三、課程內(nèi)容(共36學時)
一、引言(2學時)
1、什么是嵌入式系統(tǒng)
2、嵌入式系統(tǒng)的發(fā)展
3、嵌入式系統(tǒng)的特點
4、嵌入式系統(tǒng)的應用領(lǐng)域
5、嵌入式系統(tǒng)的分類
6、本門課程的內(nèi)容與體系結(jié)構(gòu)
二、嵌入式系統(tǒng)設(shè)計基本概念(2學時)
1、典型嵌入式系統(tǒng)基本組成
2、什么是嵌入式系統(tǒng)
3、嵌入式系統(tǒng)的基本特點
4、嵌入式系統(tǒng)的分類
5、嵌入式系統(tǒng)的主要應用領(lǐng)域
6、嵌入式技術(shù)的發(fā)展趨勢
7、嵌入式技術(shù)的一些基本概念
三、嵌入式系統(tǒng)硬件平臺(2學時)
1、基本結(jié)構(gòu)
2、主要分類
四、嵌入式系統(tǒng)軟件平臺(2學時)
1、基本結(jié)構(gòu)
2、主要分類
五、嵌入式系統(tǒng)設(shè)計開發(fā)方法(2學時)
1、傳統(tǒng)研發(fā)基本思路
2、嵌入式研究開發(fā)基本方法
3、選型基本準則
? 硬件平臺的選擇 ? 軟件系統(tǒng)的選擇
六、基于ARM架構(gòu)的嵌入式微處理器與?C/OS實時操作系統(tǒng)(2學時)
1、為什么選用ARM結(jié)構(gòu)
2、為什么選用?C/OS系統(tǒng)
3、ARM結(jié)構(gòu)簡介
4、?C/OS系統(tǒng)簡介
5、嵌入式實驗平臺簡介
七、嵌入式仿真開發(fā)工具簡介(2學時)
1、SDT仿真環(huán)境概述
2、ARM仿真器的流程簡介
3、APM開發(fā)工具
? 建立項目文件 ? 配置項目工具
4、ADW開發(fā)工具
? 環(huán)境簡介
? 工具配置和調(diào)試
八、嵌入式系統(tǒng)的軟件結(jié)構(gòu)設(shè)計(2學時)
1、基于?C/OS-Ⅱ擴展RTOS的體系結(jié)構(gòu)
2、建立文件系統(tǒng)
3、外設(shè)及驅(qū)動程序
4、圖形用戶接口(GUI)函數(shù)
5、基本繪圖函數(shù)
6、系統(tǒng)的消息隊列
7、其他實用的應用程序接口(API)函數(shù)
九、嵌入式系統(tǒng)的硬件結(jié)構(gòu)設(shè)計(2學時)
1、ARM7微處理器簡介
2、基于S3C44B0X微處理器的嵌入式系統(tǒng)
3、存儲器系統(tǒng)介紹
4、接口介紹
5、人機交互接口
十、嵌入式系統(tǒng)設(shè)計實驗(18學時)
四、實驗內(nèi)容
1、LCD的驅(qū)動控制實驗
2、ARM的A/D接口實驗
3、ARM的鍵盤驅(qū)動實驗
4、ARM的I/O驅(qū)動實驗
5、ARM的UART通訊實驗
6、RTOS的移植實驗
7、ARM SDT 2.5開發(fā)環(huán)境實驗
8、嵌入式系統(tǒng)的圖形接口函數(shù)GUI實驗
9、實時操作系統(tǒng)的消息循環(huán)實驗
10、USB接口設(shè)計實驗
11、嵌入式文件系統(tǒng)設(shè)計實驗
12、嵌入式控制設(shè)計實驗 13.觸摸屏程序設(shè)計實驗 14.網(wǎng)絡(luò)通訊程序設(shè)計實驗 15.綜合實驗
五、主要教材:
《實用嵌入式系統(tǒng)設(shè)計與開發(fā)—基于ARM微處理器與μCOS-II實時操作系統(tǒng)》,編著 王田苗,清華大學出版社,2002.9