




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)實 驗 指 導(dǎo) 書編 寫:周 立 功、劉偉春邵陽學(xué)院信息工程系文檔可自由編輯打印MagicARM2410教學(xué)實驗開發(fā)平臺系統(tǒng)概述一、簡介 MagicARM2410教學(xué)實驗開發(fā)平臺是一款可使用C/OS-II、Linux和WinCE操作系統(tǒng)、支持QT、MiniGUI圖形系統(tǒng)、集眾多功能于一身的ARM9教學(xué)實驗開發(fā)平臺。采用Samsung公司的ARM920T內(nèi)核的S3C2410A微處理器,擴展有充足的存儲資源和眾多典型的嵌入式系統(tǒng)接口,是高校嵌入式系統(tǒng)創(chuàng)新實驗室首選平臺。 二、實驗箱的組成 MagicARM2410實驗箱硬件主要由以下6個部份組成:DeviceARM2410核心板(6層板工
2、藝)、MagicARM2410實驗箱主板(4層板工藝)、實驗箱電源板(在實驗箱內(nèi)部)、簡易JTAG仿真器、GPRS模塊(選件)、VGA PACK板(選件)、CS8900 PACK板(選件)。MagicARM2410實驗箱功能框圖三、軟件資源 Linux (v2.4.18)嵌入式操作系統(tǒng) MiniGUI圖形用戶界面學(xué)習(xí)版軟件包(Linux/uCLinux) Qt/Embedded和Qtopia支持 LED、蜂鳴器驅(qū)動(for Linux) 按鍵驅(qū)動(for Linux) I2C驅(qū)動程序 (for Linux) USB Device驅(qū)動程序 (for Linux) USB HUB驅(qū)動(for Li
3、nux) USB HID驅(qū)動(鼠標(biāo)、鍵盤,for Linux) USB大容量驅(qū)動(for Linux) 基于OV511芯片的USB攝像頭驅(qū)動(for Linux) 基于OV511芯片的USB攝像頭驅(qū)動(for Linux) video4linux視頻軟件(for Linux) PCMCIA驅(qū)動(for Linux) IDE驅(qū)動(for Linux) SD/MMC卡驅(qū)動程序 (for Linux) Framebuffer 驅(qū)動-TFT 640×480液晶屏 (for Linux) 觸摸屏驅(qū)動(for Linux) 10M/100M以太網(wǎng)卡DM9000驅(qū)動 (for Linux) Mad
4、play、boa移植 (for Linux) uC/OS-II (v2.52)移植代碼 ZLG/FS文件管理系統(tǒng)軟件包 ZLG/FFS支持寫平衡的NAND Flash驅(qū)動軟件包 (for uC/OS-II) ZLG/FTP-S 嵌入式FTP服務(wù)器軟件包 (for uC/OS-II) 支持RS485/422 MODBUS RTU協(xié)議軟件包 (for uC/OS-II) ZLG/GPS軟件包 (for uC/OS-II) ZLG/GPRS軟件包 (for uC/OS-II) 串口軟件包 I2C軟件包四、硬件配置表實驗一 GPIO輸出控制實驗1實驗?zāi)康?(1)掌握DeviceARM2410專用工程模
5、板和EasyJTAG-H仿真器的安裝和使用; (2)能夠在MagicARM2410實驗箱上運行第一個程序(無操作系統(tǒng)); (3)熟悉S3C2410A處理器的I/O配置方法及GPIO輸出控制。 2 實驗設(shè)備 硬件:PC機 1臺;MagicARM2410教學(xué)實驗開發(fā)平臺1臺 軟件:Windows 98/2000/XP操作系統(tǒng);ADS 1.2集成開發(fā)環(huán)境3 實驗內(nèi)容 控制MagicARM2410實驗箱上的LED1LED4顯示及蜂鳴器報警。先使用片外SDRAM進(jìn)行調(diào)試,調(diào)試通過后將程序固化到片外NOR FLASH中,脫機運行程序。4實驗原理 S3C2410A具有117個通用I/O口,分為AH等8個端口
6、,由于每個I/O都有第2功能,甚至第3功能,所以需要通過設(shè)置GPxCON寄存器來選擇GPx口I/O的功能,其中x可以為A、B、C、D、E、F、G、H,表示相應(yīng)的I/O端口; 當(dāng)I/O設(shè)置為GPIO輸出模式(Output模式)時,可以通過寫GPxDAT控制相應(yīng)I/O口輸出高電平或低電平。GPxDAT為1的位對應(yīng)I/O輸出高電平,為0的位對應(yīng)I/O輸出低電平;實驗電路圖:5實驗步驟調(diào)試程序(1) 為ADS1.2增加DeviceARM2410專用工程模板(若已增加過,此步省略)。(2) 連接EasyJTAG-H仿真器和MagicARM2410實驗箱,然后安裝EasyJTAG-H仿真器(若已經(jīng)安裝過,
7、此步省略)。(3) 啟動ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一個工程LEDCON。(4) 在工程src組中的main.c中編寫實驗代碼。(5) 選用DebugRel生成目標(biāo),然后編譯鏈接工程。(6) 將MagicARM2410實驗箱上的蜂鳴器跳線JP9短接,將啟動方式選擇跳線JP8短接,然后按RST鍵復(fù)位系統(tǒng)。(7) 選擇【Project】->【Debug】,啟動AXD進(jìn)行JTAG仿真調(diào)試(需要正確設(shè)置仿真器,參考<<實驗指導(dǎo)>>第2章的內(nèi)容)。(8) 全速運行程序,程序?qū)趍ain.c的主
8、函數(shù)中停止(因為main函數(shù)起始處默認(rèn)設(shè)置有斷點)。(9) 單步運行程序,或者全速運行程序,判斷蜂鳴器及LED1LED4的控制是否正確。 固化程序(10) 仿真調(diào)試通過后,關(guān)閉AXD。在ADS 1.2集成開發(fā)環(huán)境中選用Release生成目標(biāo),并設(shè)置生成LEDCON.hex文件(或者LEDCON.bin文件),然后編譯鏈接工程。(11) 將啟動方式選擇跳線JP8斷開,然后按RST鍵復(fù)位系統(tǒng)。(12) 使用Flash Programmer軟件將LEDCON.hex燒寫到片外NOR FLASH,或者使用WR_NORFlash工程將LEDCON.bin燒寫到片外NOR FLASH。(13) 將Easy
9、JTAG-H仿真器拔出,斷開與MagicARM2410實驗箱的連接,然后給MagicARM2410實驗箱下電,然后再重新上電,觀察程序是否能脫機運行。 6思考題 (1)為什么這個實驗的工程不需要設(shè)置鏈接地址? (2)在S3C2410A處理器中,有哪些I/O只能設(shè)置為GPIO輸出模式(Output模式)? 7. 實驗參考程序*-* : main.c* Description: MagicARM2410實驗箱的基礎(chǔ)實驗-GPIO輸出控制實驗。* 使用GPIO控制LED1LED4及蜂鳴器,先蜂鳴器響一聲,全部閃爍5次,然后指示0F的16進(jìn)制數(shù)值。*-#include "config.h&q
10、uot;/ 定義LED控制口 (輸出高電平時點亮LED)#define LED1_CON (1<<11) /* GPE11口 */#define LED2_CON (1<<12) /* GPE12口 */#define LED3_CON (1<<4) /* GPH4口 */#define LED4_CON (1<<6) /* GPH6口 */ 定義蜂鳴器控制口#define BEEP (1<<10) /* GPH10口 */#define BEEP_MASK (BEEP)/* Function name: DelayNS* Descr
11、iptions: 長軟件延時。* 延時時間與系統(tǒng)時鐘有關(guān)。* Input: dly延時參數(shù),值越大,延時越久* Output: 無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+);/* Function name: RunBeep* Descriptions: 控制蜂鳴器Be一聲音。 * Input: 無* Output: 無*/void RunBeep(void) rGPHDAT = rGPHDAT & BEEP_MASK; / BEEP = 0 DelayNS(5)
12、; rGPHDAT = rGPHDAT | BEEP; / BEEP = 1 DelayNS(5);/* Function name: LED_DispAllOn* Descriptions: 控制LED1LED4全部點亮。 * Input: 無* Output: 無*/void LED_DispAllOn(void) rGPEDAT = rGPEDAT | (0x03<<11); rGPHDAT = rGPHDAT | (0x05<<4); /* Function name: LED_DispAllOff* Descriptions: 控制LED1LED4全部熄滅。
13、* Input: 無* Output: 無*/void LED_DispAllOff(void) rGPEDAT = rGPEDAT & (0x03<<11); rGPHDAT = rGPHDAT & (0x05<<4); /* Function name: LED_DispNum* Descriptions: 控制LED1LED4顯示指定16進(jìn)制數(shù)值。LED4為最高位,LED1為最低為,點亮表示該位為1。 * Input: dat 顯示數(shù)值(低4位有效)* Output: 無*/void LED_DispNum(uint32 dat) dat = da
14、t & 0x0000000F; / 參數(shù)過濾 / 控制LED4、LED3顯示(d3、d2位) if(dat & 0x08) rGPHDAT = rGPHDAT | (0x01<<6); else rGPHDAT = rGPHDAT & (0x01<<6); if(dat & 0x04) rGPHDAT = rGPHDAT | (0x01<<4); else rGPHDAT = rGPHDAT & (0x01<<4); / 控制LED2、LED1顯示(d1、d0位) rGPEDAT = (rGPEDAT &a
15、mp; (0x03<<11) | (dat&0x03) << 11); /* Function name: main* Descriptions: 初始化I/O,然后控制LED顯示。 * Input: 無* Output: 系統(tǒng)返回值0*/int main(void) int i; / 初始化I/O rGPECON = (rGPECON & (0x0F<<22) | (0x05<<22); / rGPECON25:22 = 0101b,設(shè)置GPE11、GPE12為GPIO輸出模式 rGPHCON = (rGPHCON &
16、(0x33<<8) | (0x11<<8); / rGPHCON13:8 = 01xx01b,設(shè)置GPH4、GPH6為GPIO輸出模式 rGPHCON = (rGPHCON & (0x03<<20) | (0x01<<20); / rGPHCON21:20 = 01b,設(shè)置GPH10為GPIO輸出模式 / LED顯示控制 while(1) RunBeep(); / 蜂鳴器響一聲 / LED全閃爍5次 for(i=0; i<5; i+) LED_DispAllOff(); / LED全熄滅 DelayNS(5); LED_DispAl
17、lOn(); / LED全點亮 DelayNS(5); / 控制LED指示0F的16進(jìn)制數(shù)值 for(i=0; i<16; i+) LED_DispNum(i); / 顯示數(shù)值i DelayNS(5); return(0);/* End Of File*/實驗二 外部中斷實驗1實驗?zāi)康?掌握S3C2410A處理器外部中斷的引腳功能設(shè)置; 掌握中斷初始化以及中斷服務(wù)函數(shù)的編寫。2 實驗設(shè)備 硬件:PC機 1臺;MagicARM2410教學(xué)實驗開發(fā)平臺1臺 軟件:Windows 98/2000/XP操作系統(tǒng);ADS 1.2集成開發(fā)環(huán)境3 實驗內(nèi)容 設(shè)置GPF4引腳為外部中斷EINT4功能,下
18、降沿觸發(fā)模式。初始化S3C2410A中斷控制器,設(shè)置EINT4為IRQ中斷,并使能中斷允許。初始化完成后,等待外部中斷產(chǎn)生。中斷服務(wù)程序里負(fù)責(zé)把LED1控制口輸出信號取反,清除中斷標(biāo)志后退出中斷。4實驗原理 獨立按鍵KEY1電路使用了GPF4口,設(shè)置GPFCON寄存器可以選擇GPF4引腳為外部中斷EINT4功能,此時通過按下KEY1鍵即可觸發(fā)外部中斷; 對于S3C2410A的眾多中斷源,通過設(shè)置INTMOD寄存器可將它們分為IRQ中斷或FIQ中斷,一般只設(shè)置一個中斷源為FIQ中斷。對于多個IRQ中斷,通過PRIORITY寄存器可以設(shè)置中斷的優(yōu)先級,一般將其設(shè)置為0使用默認(rèn)固定的優(yōu)先級即可; 設(shè)
19、置INTMSK寄存器使能某個中斷源的中斷允許,有些中斷源還需要設(shè)置SUBMASK寄存器使能(比如UART的發(fā)送中斷和接收中斷); 對于外部中斷EINT4EINT23,由于它們在S3C2410A的中斷控制器中不是獨立中斷源(EINT4EINT7共用一個中斷源,EINT8EINT23共用另一個中斷源),所以還需要設(shè)置EINTMASK寄存器來使能某一個外部中斷; 由于S3C2410A的中斷控制器不是向量中斷控制器,即處理器硬件不能自動獲取對應(yīng)于中斷源的中斷服務(wù)程序地址,所以在IRQ中斷服務(wù)程序中要通過中斷標(biāo)志寄存器INTPND來獲得對應(yīng)的中斷服務(wù)程序地址(參考ARM Executable Image
20、 for DeviceARM2410工程模板的Target.c文件,其中的IRQ_Exception函數(shù))。 在中斷服務(wù)程序中,退出中斷之前要清除中斷標(biāo)志,即對SRCPND和INTPND寄存器相應(yīng)位寫1,先清除SRCPND寄存器,再清除INTPND寄存器。對于外部中斷EINT4EINT23中斷,要最先清除EINTPEND寄存器中的中斷標(biāo)志。 實驗電路圖:5實驗步驟(1) 啟動ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一個工程EINT。(2) 在工程src組中的main.c中編寫實驗代碼。(3) 選用DebugRel生成目標(biāo),然后
21、編譯鏈接工程。 (4) 將MagicARM2410實驗箱上的啟動方式選擇跳線JP8短接,然后按RST鍵復(fù)位系統(tǒng)。(5) 選擇【Project】->【Debug】,啟動AXD進(jìn)行JTAG仿真調(diào)試。 (6) 在中斷服務(wù)程序中設(shè)置斷點,全速運行程序,按下/釋放KEY1按鍵,使EINT4為低/高電平(產(chǎn)生中斷)。(7) 取消中斷服務(wù)程序中有斷點,全速運行程序,按下/釋放KEY1按鍵,觀察LED1燈的變化。 6思考題 EINT4與EINT0的中斷設(shè)置和中斷標(biāo)志清除有什么異同?7 參考代碼*-* : main.c* Description: MagicARM2410實驗箱的基礎(chǔ)實驗-外部中斷實驗。*
22、 使用外部中斷EINT4進(jìn)行LED1的控制,每當(dāng)有一次中斷,就把LED1控制口輸出信號取反一次。*-*/#include "config.h"/ 定義LED控制口 (輸出高電平時點亮LED)#define LED1_CON (1<<11) /* GPE11口 */#define LED2_CON (1<<12) /* GPE12口 */#define LED3_CON (1<<4) /* GPH4口 */#define LED4_CON (1<<6) /* GPH6口 */ 定義獨立按鍵KEY1的輸入口#define KEY_
23、CON(1<<4) /* GPF4口 */ 定義LED1控制值變量uint8 ledcon = 0x00;/* Function name: DelayNS* Descriptions: 長軟件延時。* 延時時間與系統(tǒng)時鐘有關(guān)。* Input: dly延時參數(shù),值越大,延時越久* Output: 無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+);/* Function name: IRQ_Eint4* Descriptions: Eint4中斷服務(wù)程序。把LED1
24、控制口輸出信號取反。 * Input: 無* Output: 無*/void IRQ_Eint4(void) int i;/ 按鍵去抖動rGPFCON = rGPFCON & (0x03<<8);/ 設(shè)置為GPIO輸入方式for(i=0; i<10000; i+);/ 延時去抖動if(rGPFDAT&KEY_CON) / 若是假按鍵,則直接退出 rGPFCON = rGPFCON | (0x02<<8);/ 設(shè)置回EINT4中斷口/ 清除中斷標(biāo)志rEINTPEND = (1<<4);rSRCPND = (1<<4);rINT
25、PND = rINTPND;return;rGPFCON = rGPFCON | (0x02<<8); / 設(shè)置回EINT4中斷口/ 把LED1控制口輸出信號取反if(ledcon) ledcon = 0; rGPEDAT = rGPEDAT & (LED1_CON) ;else ledcon = 1; rGPEDAT = rGPEDAT | LED1_CON;/ 清除中斷標(biāo)志rEINTPEND = (1<<4);rSRCPND = (1<<4);rINTPND = rINTPND;/* Function name: EINT_init* Descr
26、iptions: 外部中斷初始化。設(shè)置GPF4引腳為外部中斷EINT4功能,下降沿觸發(fā)模式,并使能中斷允許。 * Input: 無* Output: 無*/void EINT_init(void) rGPFCON = (rGPFCON & 0xFFFFFCFF) | (0x02<<8);/ 設(shè)置GPF4引腳為外部中斷EINT4功能rEXTINT0 = (0x2<<16); / 外部中斷EINT4設(shè)置為下降沿觸發(fā)VICVectAddr4 = (uint32) IRQ_Eint4; / 中斷向量地址設(shè)置rPRIORITY = 0x00000000; / 使用默認(rèn)的固
27、定的優(yōu)先級rINTMOD = 0x00000000; / 所有中斷均為IRQ中斷rINTMSK = 0x0000010; / 使能EINT4中斷rEINTMASK = 0x0000010; /* Function name: LED_DispAllOff* Descriptions: 控制LED1LED4全部熄滅。 * Input: 無* Output: 無*/void LED_DispAllOff(void) rGPEDAT = rGPEDAT & (0x03<<11); rGPHDAT = rGPHDAT & (0x05<<4); /* Functi
28、on name: main* Descriptions: 初始化外部中斷EINT4,然后循環(huán)等待中斷。* Input: 無* Output: 系統(tǒng)返回值0*/int main(void) / 初始化I/O rGPECON = (rGPECON & (0x0F<<22) | (0x05<<22); / rGPECON25:22 = 0101b,設(shè)置GPE11、GPE12為GPIO輸出模式 rGPHCON = (rGPHCON & (0x33<<8) | (0x11<<8); / rGPHCON13:8 = 01xx01b,設(shè)置GPH
29、4、GPH6為GPIO輸出模式 LED_DispAllOff(); / 熄滅LED1-LED4 EINT_init(); / 外部中斷初始化IRQEnable(); / 使能IRQ中斷 (清零CPSR寄存器的I位) while(1); / 等待外部中斷 return(0);/* End Of File*/實驗三 步進(jìn)電機控制實驗1實驗?zāi)康?了解步進(jìn)電機的控制原理,掌握電機轉(zhuǎn)動控制和調(diào)速方法。2 實驗設(shè)備 硬件:PC機 1臺;MagicARM2410教學(xué)實驗開發(fā)平臺1臺 軟件:Windows 98/2000/XP操作系統(tǒng);ADS 1.2集成開發(fā)環(huán)境3實驗內(nèi)容 通過4個GPIO輸出有序的矩形脈沖,
30、控制ULN2003驅(qū)動四相步進(jìn)電機實現(xiàn)正轉(zhuǎn),調(diào)速的功能;控制的方法采用雙四拍(ABBCCDDAAB);4. 實驗原理 步進(jìn)電機是一種將電脈轉(zhuǎn)換為角位移的數(shù)據(jù)控制電機,即給它一個脈沖信號,它就按設(shè)定的方向轉(zhuǎn)動一個固定的角度。用戶可以通過控制脈沖的個數(shù)來控制角位移量,從而實現(xiàn)準(zhǔn)確的定位操作;另外,通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。當(dāng)然,對于步進(jìn)電機各相繞組(即內(nèi)部線圈)的控制脈沖要有一定的順序,否則電機無法正常旋轉(zhuǎn)。 MagicARM2410實驗箱上的步進(jìn)電機為四相步進(jìn)電機,電機步距角為18度。S3C2410A的GPIO驅(qū)動能力有限,必須通過ULN2003 達(dá)林頓集
31、成驅(qū)動芯片驅(qū)動步進(jìn)電機,在步進(jìn)電機和驅(qū)動電路之間連接了電阻,防止控制紊亂造成電機的損壞; 實驗電路圖:5實驗步驟(1) 啟動ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一個工程StepMoto。(2) 在工程src組中的main.c中編寫實驗代碼。(3) 選用DebugRel生成目標(biāo),然后編譯鏈接工程。 (4) 將MagicARM2410實驗箱上的步進(jìn)電機控制電路的電源跳線JP5短接,將步進(jìn)電機控制口跳線JP6短接。 (5) 選擇【Project】->【Debug】,啟動AXD進(jìn)行JTAG仿真調(diào)試。(6) 全速運行程序,觀察
32、步進(jìn)電機轉(zhuǎn)動方向及速度。(7) 改變控制步序延時參數(shù),觀察步進(jìn)電機轉(zhuǎn)動的速度。 6. 思考題 (1)如何控制步進(jìn)電機反轉(zhuǎn)? (2) 怎么樣修改才能提高步進(jìn)電機的轉(zhuǎn)速?7. 參考代碼*-* : main.c* Last modified Date: 2006-01-09* Last Version: v1.0* Description: MagicARM2410實驗箱的基礎(chǔ)實驗-步進(jìn)電機控制實驗。* 使用GPIO控制步進(jìn)電機轉(zhuǎn)動,采用雙四拍控制方式。*-*/#include "config.h"/ 步進(jìn)電機控制口線及操作宏函數(shù)定義#define MOTOA (1<<
33、;5) /* GPC5 */#define MOTOB(1<<6) /* GPC6 */#define MOTOC (1<<7) /* GPC7 */#define MOTOD(1<<0) /* GPC0 */#define GPIOSET(PIN) rGPCDAT = rGPCDAT | PIN /* 設(shè)置PIN輸出1,PIN為MOTOA-MOTOD */#define GPIOCLR(PIN) rGPCDAT = rGPCDAT & (PIN) /* 設(shè)置PIN輸出0,PIN為MOTOA-MOTOD */* Function name: Dela
34、yNS* Descriptions: 長軟件延時。* 延時時間與系統(tǒng)時鐘有關(guān)。* Input: dly延時參數(shù),值越大,延時越久* Output: 無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+);/* Function name: MOTO_Mode2()* Descriptions: 步進(jìn)電機雙四拍程序。* 時序控制為AB-BC-CD-DA-AB,共控制運轉(zhuǎn)4圈(電機步距角為18度)。* Input: dly每一步的延時控制。值越大,延時越久* Output: 無*/vo
35、id MOTO_Mode2(uint8 dly) uint32 i; for(i=0; i<20; i+) / AB相有效 GPIOSET(MOTOA); GPIOSET(MOTOB); DelayNS(dly); GPIOCLR(MOTOA); GPIOCLR(MOTOB); / BC相有效 GPIOSET(MOTOB); GPIOSET(MOTOC); DelayNS(dly); GPIOCLR(MOTOB); GPIOCLR(MOTOC); / CD相有效 GPIOSET(MOTOC); GPIOSET(MOTOD); DelayNS(dly); GPIOCLR(MOTOC); G
36、PIOCLR(MOTOD); / DA相有效 GPIOSET(MOTOD); GPIOSET(MOTOA); DelayNS(dly); GPIOCLR(MOTOD); GPIOCLR(MOTOA); /* Function name: main* Descriptions: 使用GPIO控制步進(jìn)電機轉(zhuǎn)動,采用雙四拍控制方式。 * Input: 無* Output: 系統(tǒng)返回值0*/int main(void) / 步進(jìn)電機控制口設(shè)置 rGPCCON = (rGPCCON & (0x0000FC03) | (0x00005401);/ GPC0、GPC5-7口設(shè)置為輸出 rGPCUP
37、= rGPCUP | 0x00E1; / 禁止GPC0、GPC5-7口的上拉電阻 rGPCDAT = rGPCDAT & (0x00E1); / 設(shè)置GPC0、GPC5-7口輸出低電平 while(1) MOTO_Mode2(1); / 控制步進(jìn)電機正轉(zhuǎn) DelayNS(50); / 停止步進(jìn)電機,延時 return(0);/* End Of File*/實驗四 C/OS-II移植實驗1實驗?zāi)康模?)掌掌握將C/OS-II操作系統(tǒng)移植到ARM9處理器的方法。(2)了解C/OS-II操作系統(tǒng)的基本原理和移植條件。2 實驗設(shè)備 硬件:PC機 1臺;MagicARM2410教學(xué)實驗開發(fā)平臺1
38、臺 軟件:Windows 98/2000/XP操作系統(tǒng);ADS 1.2集成開發(fā)環(huán)境3 實驗內(nèi)容 學(xué)習(xí)移植C/OS-II操作系統(tǒng)到ARM9處理器,然后編寫一個簡單的多任務(wù)應(yīng)用程序,實現(xiàn)LED流水燈控制。4. 實驗原理 C/OS-II概述: C/OS-II是一個完整的、可移植、可固化、可剪裁的占先式實時多任務(wù)內(nèi)核。µC/OS-II是用ANSI C語言編寫,包含一小部分匯編代碼,使之可以供不同架構(gòu)的微處理器使用。µC/OS-II可以管理64個任務(wù),具有信號量、互斥信號量、事件標(biāo)志組、消息郵箱、消息隊列、任務(wù)管理、時間管理和內(nèi)存塊管理等系統(tǒng)功能。 C/OS-II軟件體系結(jié)構(gòu) 如圖
39、3.1所示,由圖可以看出,C/OS-II包括以下3個部分:(1)C/OS-II核心代碼:包括10個C程序文件和1個頭文件,主要實現(xiàn)了系統(tǒng)調(diào)度、任務(wù)管理、內(nèi)存管理、信號量、消息郵箱和消息隊列等系統(tǒng)功能。此部分的代碼與處理器無關(guān)。(2)C/OS-II配置代碼:包括2個頭文件,用于裁剪和配置C/OS-II。此部分的代碼與用戶實際應(yīng)用相關(guān)。(3)C/OS-II移植代碼:包括1個匯編文件、1個C程序文件和1個頭文件,這是移植C/OS-II所需要的代碼。此部分的代碼與處理器相關(guān)。 C/OS-II移植條件: 移植C/OS-II之前需要注意,目標(biāo)處理器必須滿足以下幾點要求:(1)處理器的C編譯器能產(chǎn)生可重入型代碼;(2)處理器支持中斷,并且能產(chǎn)生定時中斷;(3)用C語言就可以開/關(guān)中斷;(4)處理器有將堆棧指針以及其它CPU寄存器的內(nèi)容讀出,并保存到堆棧或內(nèi)存中去的指令。 S3C2410A微控制器可以滿足第2、4和5點要求,使用ADS 1.2的C編譯器可以滿足第1、3點要求。 C/OS-II移植步驟:(1) OS_CPU.H的移植 在OS_CPU.H文件中定義與處理器相關(guān)(實際上是與編譯器相關(guān))的數(shù)據(jù)類型,如BOOLEAN、INT8U、INT8S等等。 在OS_CPU.H文件中定義與處理器相關(guān)的宏,主要是進(jìn)入臨界區(qū)的OS_ENTER_CRITICAL和退出臨界區(qū)的OS_EXIT_CRITICA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)三年班級活動方案
- 法官三八節(jié)活動方案
- 民航攝影大賽活動方案
- 榜樣在身邊系列活動方案
- 模擬課堂教研活動方案
- 樓梯文化墻活動方案
- 武術(shù)課展示活動方案
- 法律文物征集活動方案
- 畢業(yè)詩歌征集活動方案
- 夢想與希望課堂活動方案
- 病區(qū)醫(yī)院感染管理質(zhì)量評價標(biāo)準(zhǔn)(2024年)
- 2024年惠州市第一婦幼保健院招聘衛(wèi)生專業(yè)技術(shù)人員考試真題
- 譯林版(2024)七年級下冊英語期末復(fù)習(xí)綜合練習(xí)試卷(含答案)
- 2025年園藝師職業(yè)資格考試卷及答案
- 放射職業(yè)衛(wèi)生培訓(xùn)課件
- 中學(xué)論文推選管理制度
- 普外科學(xué)科核心知識體系
- 小學(xué)數(shù)學(xué)教學(xué)中如何培養(yǎng)學(xué)生數(shù)感
- 數(shù)學(xué) 2024-2025學(xué)年人教版(2024)七年級數(shù)學(xué)下冊期末考試測試卷
- 貴州省貴陽市部分學(xué)校2024-2025學(xué)年高二下冊期末聯(lián)考數(shù)學(xué)試卷(附答案)
- 2025至2030中國二手車市場發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
評論
0/150
提交評論