




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于S3C44B0X嵌入式操作系統(tǒng)c/0S摘要:當(dāng)前,傳統(tǒng)的前后臺系統(tǒng)已成為阻礙嵌入式系統(tǒng)發(fā)展的一大瓶頸,嵌入式操作系統(tǒng)的使用,能夠簡化嵌入式系統(tǒng)的應(yīng)用開發(fā),有效地確保系統(tǒng)的實時性和穩(wěn)定性。本文以此為背景,闡述了嵌入式操作系統(tǒng)c/OS -移植到基于ARM7的S3C44B0X芯片移植過程。最終使嵌入式系統(tǒng)開發(fā)平臺得以實現(xiàn)。論文關(guān)鍵詞:嵌入式,S3C44B0X,實時內(nèi)核c/OS-,移植是非常必要的。而操作系統(tǒng)是一個通用的程序,要在自己的嵌入式系統(tǒng)中應(yīng)用它,必須結(jié)合所用處理器的不同進行相應(yīng)邊編寫或改寫。本文結(jié)合實例,對基于S3C44B0X的嵌入式操作系統(tǒng)c/0S-平臺的實現(xiàn)的移植過程進行研究,最后通
2、過測試,驗證了嵌入式開發(fā)平臺的成功實現(xiàn)。1、 實時內(nèi)核c/OS-c/OS-,是一個可固化、可裁剪、占先式的實時多任務(wù)操作系統(tǒng),它運行就緒狀態(tài)下優(yōu)先級最高的任務(wù),絕大部分源代碼是用便于移植的C語言編寫,小部分匯編語言代碼已被壓縮到最低限度,使之可供不同構(gòu)架的微處理器上使用【3】。c/OS -所具有源代碼公開、執(zhí)行效率高、占用空間小等特點受到廣大用戶的青睞。2 C/ OS - II 在S3C44B0X上的移植移植就是指使一個實時內(nèi)核能在其它微處理器或微控制器上運行。本文采用S3C44B0X芯片,開發(fā)環(huán)境采用Keil uVision3 ,基本滿足開發(fā)要求。S3C44BOX是一款基于ARM7的SOC芯
3、片。該芯片片上功能強大,技術(shù)成熟,具有低成本、低功耗、高性能等優(yōu)點【1】。移植工作主要集中在與處理器相關(guān)的3個文件中【2】:OS_CPU.H 、OS_ CPU_ C. C 、OS_ CPU_A.S。其中:OS_ CPU.H 文件主要包含與編譯器相關(guān)的數(shù)據(jù)類型定義、堆棧類型定義、兩個宏定義和幾個函數(shù)說明;OS_ CPU_ C. C 包含與移植有關(guān)6個C函數(shù),為OSTaskStkInit(), OSTaskCreateHook(),OSTaskDelHook(),OSTaskSwHook(),OSTaskStatHook(),OSTimeTick_Hook(),其中后面5個函數(shù)為鉤子函數(shù),可以沒有
4、實際內(nèi)容, 但必須要聲明,用于擴充自己需要的功能。OS_CPU_A.S 中包含與移植有關(guān)的4個匯編語言函數(shù),為OSStartHigh()、OSCtxSW()、OSIntCtxSw(),OSTickISR()。21 OS_CPU. H文件移植此文件中主要包含與編譯器相關(guān)數(shù)據(jù)類型定義、堆棧類型定義、兩個宏定義和幾個函數(shù)說明。數(shù)據(jù)類型定義部分代碼如下【3】:typedef unsigned short INT16U; /*16位有符號整數(shù)*/typedef unsigned long INT32U; /*32位無符號整數(shù)*/typedef unsigned int OS_STK;/*堆棧入口寬度為1
5、6位*/#define OS_STK_GROWTH 1 /*堆棧增長方向從上向下滿遞減堆棧*/#define OS_ENTER_CRITICAL() cpu_sr =OS_CPU_SR_Save();/*關(guān)中斷,執(zhí)行臨界代碼*/#define OS_EXIT_CRITICAL() OS_CPU_SR_Restore (cpu_sr);/*開中斷*/在本例移植中,使用軟中斷指令SWI作為底層接口,使用不同功能號區(qū)分不同函數(shù)。用關(guān)鍵字_swi 聲明一個不存在的函數(shù),則調(diào)用該函數(shù)就在調(diào)用的地方插入一條SWI指令并可指定功能號。SWI函數(shù)部分代碼如下【3】:_swi(0 x00) void OS_TA
6、SK_SW(void); /*任務(wù)級任務(wù)切換函數(shù)*/_swi(0 x01) void_OSStartHighRdy( void);/ *運行優(yōu)先級最高的任務(wù)*/_swi(0 x02) void OS_ENTER_CRITICAL(void) ; /*關(guān)中斷* /_swi(0 x03) void OS_EXIT_CRITICAL(void) ; / * 開中斷* /22 OS_CPU_C. C 文件移植c/OS-中,每個任務(wù)要有自己的堆??臻g,以便進行任務(wù)切換時保存和恢復(fù)現(xiàn)場。因此必先確定任務(wù)堆棧結(jié)構(gòu),而任務(wù)堆棧結(jié)構(gòu)與CPU體系結(jié)構(gòu)、編譯器密切關(guān)聯(lián)。OSTaskStkInit() 函數(shù)關(guān)鍵代碼如
7、下:*-stk=(unsigned int)task; /*pc*/*-stk=(unsigned int)task /*lr*/*-stk=0; /*r12.r1,其它同理*/*-stk=(unsigned int)pdata; /*r0,第一個參數(shù)用r0傳遞*/*-stk=(SVC32MODE|0 x0|); /* cpsr 關(guān)閉irq,fiq*/*-stk=(SVC32MODE|0 x0); /*spsr IRQ,關(guān)閉FIQ*/return(OS_STK *)stk);/*堆棧指針保存在任務(wù)的OS_TCB中*/此文件中的幾個系統(tǒng)規(guī)定的hook函數(shù)在本移植均將它們都設(shè)置為空函數(shù)。23 OS
8、_CPU_ A. S 文件移植此文件中需要編寫4 個匯編語言函數(shù)【3】:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw( )、OSTickISR( )。多任務(wù)啟動函數(shù)OSStart( )調(diào)用OSStartHightRdy( )函數(shù), 運行優(yōu)先級最高的任務(wù)。OSCtxSw()函數(shù)是由任務(wù)級任務(wù)切換函數(shù)OS_TASK_SW()調(diào)用,實現(xiàn)從低優(yōu)先級向高優(yōu)先級切換。文中任務(wù)級切換是通過SWI軟中斷來實現(xiàn)的。軟中斷的異常處理程序掛接到CPU內(nèi)核,通過修改啟動代碼里的異常向量表實現(xiàn)。中斷服務(wù)程序與CPU 芯片相關(guān),中斷源的掛接通過增加匯編接口的支持來實現(xiàn),即在文件IRQ.S的適
9、當(dāng)位置添加如下的程序代碼【2】:IRQ.Handler HANDL ER IRQ.Exception ; IRQ 中斷OSIntCtxSw()是中斷級任務(wù)切換函數(shù),在中斷退出時由函數(shù)OSIntExit()調(diào)用。此函數(shù)基本原理與任務(wù)級切換相同,只是由于進入中斷時已保存了被中斷任務(wù)的環(huán)境變量,就不進行類似操作,只需要對堆棧指針進行調(diào)整即可。部分代碼如下:LDR r4,addr_OSTCBCur;/*得到當(dāng)前任務(wù)的TCB地址*/LDR r5,addr_OSTCBHighRdy;/*得到高優(yōu)先級任務(wù)的TCB地址*/LDR r5,;/*得到堆棧指針*/LDR sp,;/*切換到新的堆棧*/STR r5,
10、;/*設(shè)置新的當(dāng)前任務(wù)的TCB地址*/LDMFD sp!,r4 /*新任務(wù)cpsr出棧*/MSR CPSR_cxsf,r4LDMFD sp!,r0-r12,lr,pc;/*r0-r12,lr&pc出棧,運行新任務(wù)*/系統(tǒng)時鐘節(jié)拍中斷函數(shù)OSTickISR()為內(nèi)核提供時鐘節(jié)拍。其周期決定了內(nèi)核所能給應(yīng)用系統(tǒng)提供的最小時間間隔服務(wù)。本移植中,IRQ是受C/OS-II管理的中斷,對FIQ不處理。時鐘節(jié)拍的移植可通過匯編宏完成。完成上述工作后,C/OS-II就可以運行在ARM處理器上了。3 移植測試測試操作系統(tǒng)移植代碼的正確性可以在沒有應(yīng)用程序的情況下進行,即讓內(nèi)核自己測試自己。筆者通過以下測試用例
11、,經(jīng)過編譯、鏈接及下載到目標(biāo)板中。驗證系統(tǒng)移植是成功的。void OSTaskIdleHook (void)static i=0;if(i%20000=0) /*每20000次點亮一個LED,*/sysUtilsLightLed(LED_ALL,FALSE); /*關(guān)閉所有的LED */sysUtilsLightLed(i%3+1,TRUE); /*循環(huán)點亮一個LED*/i+;return ;4 結(jié)語C/OS-II 是一個具有良好應(yīng)用前景的嵌入式實時內(nèi)核,本文通過具體事例,成功實現(xiàn)了C/OS-II在S3C44B0X上的移植。通過簡單的測試用例,驗證了移植是正確的,此成功移植為C/OS-II 嵌入式實時系統(tǒng)的復(fù)雜應(yīng)用,提供了
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)檢驗技術(shù)
- 倉庫屋面彩鋼瓦施工方案
- “雙減”背景下多元評價對有效構(gòu)建初中體育課堂的作用研究
- 鄉(xiāng)村蘑菇售賣合同范例
- 俱樂部選手簽約合同范例
- 鐵塔土建施工方案
- 業(yè)務(wù)員聘用合同范例
- 內(nèi)部銷售承包協(xié)議合同范例
- 修復(fù)窯洞合同范例
- 農(nóng)戶房屋回收合同范例
- 《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 《義務(wù)教育語文課程標(biāo)準(zhǔn)》2022年修訂版原版
- 【小升初】部編版2022-2023學(xué)年四川省綿陽市語文升學(xué)分班考真題專項模擬試卷(04 現(xiàn)代文閱讀)含解析
- 人教版(2019)高中英語必修第二冊:Unit5Music單元測試(含答案與解析)
- 21級全新版大學(xué)進階英語2 國際班 教案
- 圖解心經(jīng)心得整理分享PPT課件
- 武漢市第五醫(yī)院重離子治療中心項目可行性研究報告
- (完整版)學(xué)生課堂學(xué)習(xí)自我評價表
- 《英語專業(yè)畢業(yè)論文寫作指導(dǎo)》
- SAE-J400-2002-中文版
- 不銹鋼電梯門套安裝技術(shù)交底_
評論
0/150
提交評論