




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京航空航天大學(xué) ARM9實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三 UC-OS移植實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康脑趦?nèi)核移植了uCOS-II 的處理器上創(chuàng)建任務(wù)。二、實(shí)驗(yàn)內(nèi)容1運(yùn)行實(shí)驗(yàn)十,在超級(jí)終端上觀察四個(gè)任務(wù)的切換。 2. 任務(wù)13,每個(gè)控制“紅”、“綠”、“藍(lán)”一種顏色的顯示,適當(dāng)增加OSTimeDly()的時(shí)間,且優(yōu)先級(jí)高的任務(wù)延時(shí)時(shí)間加長(zhǎng),以便看清三種顏色。 3. 引入一個(gè)全局變量 BOOLEAN ac_key,解決完整刷屏問題。 4. #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define RdURXH0()(*(volatile unsigned char *)0x50000024) 當(dāng)鍵盤有輸入時(shí)在超級(jí)終端上顯示相應(yīng)的字符。三、實(shí)驗(yàn)設(shè)備硬件:ARM嵌入式開發(fā)平臺(tái)、用于ARM920T的JTAG仿真器、PC機(jī)Pentium100以上。軟件:PC機(jī)操作系統(tǒng)Win2000或WinXP、ARM ADS1.2集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。四、實(shí)驗(yàn)原理所謂移植,指的是一個(gè)操作系統(tǒng)可以在某個(gè)微處理器或者微控制器上運(yùn)行。雖然uCOS-II的大部分源代碼是用C語言寫成的,仍需要用C語言和匯編語言完成一些與處理器相關(guān)的代碼。比如:uCOS-II在讀寫處理器、寄存器時(shí)只能通過匯編語言來實(shí)現(xiàn)。因?yàn)閡COS-II在設(shè)計(jì)的時(shí)候就己經(jīng)充分考慮了可移植性,所以,uCOS-II的移植還是比較容易的。要使uCOS一工工可以正常工作,處理器必須滿足以下要求:1)處理器的C編譯器能產(chǎn)生可重入代碼。2)在程序中可以打開或者關(guān)閉中斷。3)處理器支持中斷,并A能產(chǎn)生定時(shí)中斷(通常在10Hz1000Hz之間)。4)處理器支持能夠容納一定量數(shù)據(jù)的硬件堆棧。5) 處理器有將堆棧指針和其它CPU寄存器存儲(chǔ)和讀出到堆棧(或者內(nèi)存)的指令。uCOS-II進(jìn)行任務(wù)調(diào)度的時(shí)候,會(huì)把當(dāng)前任務(wù)的CPU寄存器存放到此任務(wù)的堆棧中,然后,再?gòu)牧硪粋€(gè)任務(wù)的堆棧中恢復(fù)原來的工作寄存器,繼續(xù)運(yùn)行另一個(gè)任務(wù)。所以,寄存器的入棧和出棧是uCOS一工工多任務(wù)調(diào)度的基礎(chǔ)。五、實(shí)驗(yàn)步驟1 以實(shí)驗(yàn)十為模板,將實(shí)驗(yàn)六 inc目錄下的LCD320.H 和src目錄下的LCD640.C拷到 模板下的相應(yīng)目錄,將LCD640.C加入工程中。2 包含以下頭文件 #include “inc/lcd320.h”。3 改LCD640.C 文件中包含頭文件的路徑 。 #include ./inc/drv/reg2410.h 4 聲明引用的變量 extern U32 LCDBufferII2LCDHEIGHTLCDWIDTH; 六、 源程序#include./ucos-ii/includes.h /* uC/OS interface */#include ./ucos-ii/add/osaddition.h#include ./inc/drivers.h#include ./inc/sys/lib.h#include ./src/gui/gui.h#include ./inc/lcd320.h#include #include /#include .inc/lcd320.h/#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting OS_EVENT *MboxSem;/*任務(wù)定義*/*OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system task刷新任務(wù)堆棧#define SYS_Task_Prio1 void SYS_Task(void *Id);*/OS_STK task1_StackSTACKSIZE=0, ; /Main_Test_Task堆棧void Task1(void *Id); /Main_Test_Task#define Task1_Prio 12OS_STK task2_StackSTACKSIZE=0, ; /test_Test_Task堆棧void Task2(void *Id); /test_Test_Task#define Task2_Prio 15OS_STK task3_StackSTACKSIZE=0, ; /test_Test_Task堆棧void Task3(void *Id); /test_Test_Task#define Task3_Prio 17OS_STK task4_StackSTACKSIZE=0, ; /test_Test_Task堆棧void Task4(void *Id); /test_Test_Task#define Task4_Prio 10extern U32 LCDBufferII2LCDHEIGHTLCDWIDTH; extern BOOLEAN ac_key=1;int k,j;#define rUTRSTAT0 (*(volatile unsigned *)0x50000010)#define RdURXH0() (*(volatile unsigned char *)0x50000024)/*已經(jīng)定義的OS任務(wù)*#define SYS_Task_Prio1#define Touch_Screen_Task_Prio9#define Main_Task_Prio 12#define Key_Scan_Task_Prio 58#define Lcd_Fresh_prio 59#define Led_Flash_Prio 60*/*事件定義*/ Main function. /int main(void)ARMTargetInit(); / do target (uHAL based ARM system) initialisation /OSInit(); / needed by uC/OS-II / LCD_Init();/OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_StackSTACKSIZE-1, SYS_Task_Prio); OSTaskCreate(Task1, (void *)0, (OS_STK *)&task1_StackSTACKSIZE-1, Task1_Prio); OSTaskCreate(Task2, (void *)0, (OS_STK *)&task2_StackSTACKSIZE-1, Task2_Prio); OSTaskCreate(Task3, (void *)0, (OS_STK *)&task3_StackSTACKSIZE-1, Task3_Prio); OSTaskCreate(Task4, (void *)0, (OS_STK *)&task4_StackSTACKSIZE-1, Task4_Prio); OSAddTask_Init(0); BSPprintf(0,Starting uCOS-II.n);OSStart(); / start the OS / never reached /return 0;/void Task1(void *Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,RED%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x000000ff; LCD_Refresh(); OSTimeDly(10000); ac_key=1; void Task2(void *Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,GREEN%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x0000fc00; LCD_Refresh(); ac_key=1; OSTimeDly(8000); void Task3(void *Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,BLUE%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x00f80000; LCD_Refresh(); ac_key=1; OSTimeDly(6000); void Task4(void *Id) char s;for(;) ac_key=0; if (rUTRSTAT0 & 1) s=RdURXH0(); OSTi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)士常識(shí)考試題及答案
- 戶外操場(chǎng)考試題及答案
- 第五版兒科護(hù)理學(xué)考試題及答案
- 社區(qū)試題及答案
- 新安法試題及答案
- 漢語通論考試題及答案
- 函數(shù)大學(xué)考試題及答案
- 喜茶營(yíng)銷活動(dòng)策劃方案
- 周日營(yíng)地活動(dòng)方案
- 團(tuán)員實(shí)踐活動(dòng)活動(dòng)方案
- 報(bào)銷醫(yī)保委托書
- 2025年內(nèi)蒙古錫林郭勒盟事業(yè)單位人才引進(jìn)歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 輻射防護(hù)復(fù)習(xí)題及答案
- 各種惡劣天氣行車安全培訓(xùn)
- 化工裝置報(bào)廢拆除施工方案
- 華東理工大學(xué)《生物信息學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 《秦腔》課件統(tǒng)編版高中語文選擇性必修下冊(cè)
- DB51-T 2975-2022 氣凝膠復(fù)合保溫隔熱材料及系統(tǒng)通.用技術(shù)條件
- 第三講加快發(fā)展新質(zhì)生產(chǎn)力-2024年形勢(shì)與政策
- 腦出血疑難病例討論護(hù)理
- 雨季行車安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論