ucos在ARM上的移植_第1頁
ucos在ARM上的移植_第2頁
ucos在ARM上的移植_第3頁
ucos在ARM上的移植_第4頁
ucos在ARM上的移植_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、嵌入式操作系統(tǒng) uC/OS-II 在 ARM 上的移植研究李玉剛(南方醫(yī)科大學(xué)廣州廣東省 510515摘要:隨著 ARM 技術(shù)的廣泛應(yīng)用 , 建立基于 ARM 構(gòu)架的嵌入式操作系統(tǒng)已成 為當前研究的熱點。文中結(jié)合實例論述了基于 ARM 內(nèi)核的微處理器上的嵌入式 C/OS-II 操 作系統(tǒng)的移植技術(shù) ,介紹了 C/OS-II 系統(tǒng)主要特點 ,提出了移植條件及移植的實現(xiàn)方 案過程 ,對編寫啟動代碼進行了測試驗證通過的整體設(shè)計。關(guān)鍵字: ARM;嵌入式操作系統(tǒng) ;移植; C/OSII中圖分類號 : TP311 文獻標識碼 :AResearch of Porting Embedded-ICI /OpS

2、erating System Based on ARMLiYuGang(Southern medical university, GuangZhou, GuangDong, 510515Abstract:With the applications of ARM technique ,building the embedded operating system based on ARM processor has been a hot point of research. Discusses the porting of C/O-ISI RTOS on ARM kernel architectu

3、re. Introduce primary characteristics of C/OS-II system and presents the prerequisite and realization process of transplant . Finally ,explain the reason of program start code and validate through testing.Keywords: ARM;embedded operating system;porting;-II C/OS1 ARM7 微處理器體系結(jié)構(gòu)和 C/OS-內(nèi)核結(jié)構(gòu)1.1 ARM7 微處理器

4、體系結(jié)構(gòu)90年代 ,ARM32 位嵌人式 RISC(精簡指令集計算機處理器擴展到世界范圍 ,占據(jù) 了低功耗、低成本和高性能的嵌入式系統(tǒng)應(yīng)用領(lǐng)域的領(lǐng)先地位。32 位 RISC處理器受到青睞 ,領(lǐng)先的是 ARM (Advanced RISC Machines嵌入式微處理器系列。 ARM 公 司專注于設(shè)計 ,其內(nèi)核耗電少、成本低、功能強 ,特有 16 /32位雙指令集。 ARM 已成 為移動通信、手持計算、多媒體數(shù)字消費等嵌入式解決方案的RISC 標準。在所有ARM 處理器系列中 , ARM7 處理器系列應(yīng)用最廣 , 采用 ARM7 處理器作為內(nèi)核生產(chǎn) 芯片的公司最多。ARM7 系列為低功耗 32

5、位核,最適用于對價位和功耗敏感的消費類產(chǎn)品。ARM7 系列的特點是 :具有嵌入式 ICE-RT 邏輯;非常低的功耗 ;能提供 0.9 106 條指 令/MHz 的 3 級流水線和馮 諾依曼結(jié)構(gòu)。ARM7 的主要應(yīng)用領(lǐng)域為 :因特網(wǎng)設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備以及移動電話 等多種多樣的媒體和嵌入式應(yīng)用。 ARM7 系列具體可分為 ARM7TDMI 、 ARM7TDMI-S 、ARM720T 、ARM7EJ 等型號。1.2 C/O-S內(nèi)核結(jié)構(gòu)C/OS是源碼公開的實時操作系統(tǒng) ,后來推出的 C/OS-是它的升級版本 ,它的 全部源代碼約有 5500行,結(jié)構(gòu)非常簡潔。對于普通用戶來說 ,在 Intern

6、et上就能找到 完整的嵌入式實施內(nèi)核的源代碼。至今 ,從 8位到 64位, C/O-S已在超過 40種不 同的微處理器上運行。世界上已有數(shù)千人在各個領(lǐng)域中使用C/OS-,這些領(lǐng)域包括:照相機行業(yè)、航空業(yè)、高端音響、醫(yī)療器械、電子樂器、發(fā)動機控制、網(wǎng)絡(luò)設(shè) 備、高速公路電話系統(tǒng)、自動提款機及工業(yè)機器人等。許多高校將C/OS-用于實時教學(xué)系統(tǒng)。 C/OS-體系結(jié)構(gòu)見圖 1。圖1 C/O-S體系結(jié)構(gòu) 2 C/O-SII 的移植2.1 uC/OS-II 內(nèi)核移植要點uC/OS-II 其 90%的代碼是用 C語言寫的 ,可以直接移植到有 C 語言編譯器的處 理器上,但 是移植工作主要都集中在多任務(wù)切換的實

7、現(xiàn)上 ,因為這部分代碼用來保存 和恢復(fù) CPU現(xiàn)場(即寫/讀相關(guān)寄存器 , 不能用 C語言,只能使用匯編語言完成。將 uC/OS-II 移植到 ARM 處理器上 ,需要修改三個與 ARM 體系結(jié)構(gòu)相關(guān)的文件。以下 分別介紹這三個文件的移植工作。(1OS_CPU.H 文件* 數(shù)據(jù)類型定義數(shù)據(jù)類型的修改與所用的編譯器相關(guān) ,不同的編譯器使用不同的字節(jié)長度表示 同一數(shù)據(jù)類型。* 堆棧單位在任務(wù)切換時 ,C P U 現(xiàn)場的寄存器將保存在當前運行任務(wù)的堆棧中 ,所以 OS_STK 數(shù)據(jù)類型應(yīng)該與 C P U 的寄存器長度一致。* 堆棧增長方向2410A 堆棧由高地址向低地址增長。在函數(shù)調(diào)用時 ,入口參數(shù)

8、和返回地址一般 保存在當前任務(wù)的堆棧中 ,編譯器的編譯選項和由此生成的堆棧指令就會決定堆棧 的增長方向。* 宏定義包括開關(guān)中斷的宏定義 ,以及進行任務(wù)切換的宏定義。(2OS_CPU_C.C 文件* 任務(wù)堆棧初始化任務(wù)初始化時的堆棧設(shè)計 ,也就是在堆棧增長方向上如何定義每個需要保存的 寄存器位置。在 ARM 體系結(jié)構(gòu)下 ,任務(wù)堆??臻g由高至低依次將保存著 pc、lr 等 寄存器。移植中有兩點需要說明 : 一是, 當前任務(wù)堆棧初始化完成后 ,OSTaskStkInit 返回新的堆棧指 S T K , 在OSTaskCreate執(zhí)( 行時 ,將會調(diào)用 OSTaskStkInit的初始化過程 ,然后通

9、過 OSTCBInit(軟件函數(shù)調(diào)用,將返回的 SP 指針保存到該任務(wù)的 TCB 塊中。二是 ,初始狀態(tài)的堆棧 是模擬了一次中斷后的堆棧結(jié)構(gòu) ,因為任務(wù)創(chuàng)建后并不是直接就獲得執(zhí)行 ,而是通過 OSSched(函數(shù)進行調(diào)度分配 ,滿足執(zhí)行條件后才能獲得執(zhí)行。為了使這個調(diào)度簡單 一致,就預(yù)先將該任務(wù)的 PC 指針和返回地址 LR 都指向函數(shù)入口 ,以便被調(diào)度時從堆 棧中恢復(fù)剛開始運行時的 CPU 現(xiàn)場。* 系統(tǒng)鉤子函數(shù)移植中需要實現(xiàn)幾個操作系統(tǒng)規(guī)定的 hook 函數(shù), 如下:OSSTaskCreateHook(OSTaskDelHook(OSTaskSwHook(OSTaskStatHook(OS

10、TimeTickHook(若無特殊需求 ,只需簡單地將它們都實現(xiàn)為空函數(shù)即可。(3OS_CPU_A.S 文件* OSStartHighRdy(. 此函數(shù)是在 OSStart(多任務(wù)啟動后 ,負責從最高優(yōu)先級任務(wù) 的 TCB 控制塊中獲得該任務(wù)的堆棧指針 SP,通過 SP 依次將 CPU 現(xiàn)場恢復(fù) ,這時系 統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務(wù)進程 ,直到該任務(wù)被阻塞或者被其他更高優(yōu)先 級的任務(wù)搶占 CPU。該函數(shù)僅在多任務(wù)啟動時被執(zhí)行一次 , 即執(zhí)行最高優(yōu)先級任務(wù) 之后多任務(wù)的調(diào)度和切換由以下函數(shù)實現(xiàn)。* OSCtxSw(.任務(wù)級的上下文切換 ,當任務(wù)因為被阻塞而主動請求 CPU 調(diào)度時 被執(zhí)行

11、,由于此時的任務(wù)切換在非異常模式下進行 ,因此區(qū)別于中斷級別的任務(wù)切 換。它的工作是先將當前任務(wù)的 CPU 現(xiàn)場保存到該任務(wù)堆棧中 ,然后獲得最高優(yōu)先 級任務(wù)的堆棧指針 ,從該堆棧中恢復(fù)此任務(wù)的 CPU 現(xiàn)場,使之繼續(xù)執(zhí)行。這樣就完成 了一次任務(wù)切換。* OSIntCtxSw(. 中斷級的任務(wù)切換 ,在時鐘中斷 ISR(中斷服務(wù)例程中發(fā)現(xiàn)有高優(yōu) 先級任務(wù)等待的時鐘信號到來 ,則在中斷退出后并不返回被中斷任務(wù) ,而是直接調(diào)度 就緒的高優(yōu)先級任務(wù)執(zhí)行 ,從而能夠盡快地讓高優(yōu)先級的任務(wù)得到響應(yīng) ,保證系統(tǒng)的 實時性能。其原理基本上與任務(wù)級的切換相同 ,但是由于進入中斷時已經(jīng)保存了被 中斷任務(wù)的 CP

12、U 現(xiàn)場,因此不用再進行類似的操作 ,只需對堆棧指針做相應(yīng)調(diào)整。* OSTickISR(. 時鐘中斷處理函數(shù) ,其主要任務(wù)是負責處理時鐘中斷 ,調(diào)用系統(tǒng)實 現(xiàn)的 OSTimeTick 函數(shù) ,如果有等待時鐘信號的高優(yōu)先級任務(wù) ,則需要在中斷級別上 調(diào)度其執(zhí)行。其他相關(guān)的兩個函數(shù)是 OSIntEnter(和 OSIntExit(,都需要在 ISR 中執(zhí) 行。*OS_ENTER_CRITICAL( &OS_EXIT_CRITICAL(. 這兩個函數(shù)分別是退出臨界 區(qū)和進入臨界區(qū)的宏指令實現(xiàn)。主要用于在進入臨界區(qū)之前關(guān)閉中斷,在退出臨界區(qū)的時候恢復(fù)原來的中斷狀態(tài)。它的實現(xiàn)比較簡單 ,可以直接開關(guān)中斷

13、來實現(xiàn) ,也可 以通過保存關(guān)閉 / 恢復(fù)中斷屏蔽位來實現(xiàn)。2.2 快速自啟動程序設(shè)計為保證移植代碼以及應(yīng)用代碼在處理器上能夠執(zhí)行 ,還必須為處理器編寫啟動 代碼。啟動代碼簡單地說就是為 Main ( 函數(shù)的運行準備環(huán)境。包括初始化異常向 量表、堆棧以及與目標平臺的相關(guān)定義。啟動程序用匯編語言編寫 ,要完成的任務(wù) 包括:硬件初始化 ,系統(tǒng)存儲系統(tǒng)的配置 ,復(fù)制二級中斷向量表等 (如圖 2 所示 。圖 2 系統(tǒng)啟動由于系統(tǒng)的資源有限 ,程序首先固化在 ROM 中運行。為提高系統(tǒng)的實時性 ,加 快代碼的執(zhí)行速度 ,系統(tǒng)啟動后程序被搬移到 RAM 中,因為 RAM 的存取速度要比 ROM 快得多 ,這

14、樣大大提升系 統(tǒng)的性能。3 系統(tǒng)測試移植完成后的系統(tǒng)包括 4 個部分 :1 自啟動程序 ;2C/ OS- II 系統(tǒng)文件;3 移植代碼 ;4 應(yīng)用程序。開發(fā)環(huán)境是 ARM 公司提供的 ADS1.2(ARM Developer Suite 。為了驗證C/OS-II 移植的成功 ,創(chuàng)建了下面 3 個任務(wù) :(1 D/A 輸出;(2 A/D 采集 ;(3 LCD 顯示。使用信號量來實現(xiàn)模擬量的采集 (A/D 和模擬量的控制 (D/A 之間的通訊 ,同時模 擬量和控制量通過 LCD 顯示系統(tǒng)運行結(jié)果??梢杂^測到 ,LCD 顯示的數(shù)據(jù)隨模擬量 的輸出而變化 ,從而驗證移植成功。4 小結(jié) :本文作者創(chuàng)新點

15、是利用實時多任務(wù)操作系統(tǒng)管理硬件資源 ,進行任務(wù)協(xié)調(diào)方面 設(shè)計,使應(yīng)用程序得以開發(fā)利用。對于普通用戶來說 ,在 Internet上就能找到完整的 C /OS-嵌入式實時內(nèi)核的源代碼??梢岳闷溟_放的源代碼為今后的移植工作 服務(wù)。從以上的范例實踐中 ,不難看出 C/OS-是一個具有實時操作系統(tǒng)基本功能 的可移植、可裁剪、占先式的實時多任務(wù)內(nèi)核。在嵌入式操作系統(tǒng)平臺上開發(fā)應(yīng)用 程序有其獨到之處。參考文獻 :1 宋暉,高小明. 基于 ARM 的嵌入式操作系統(tǒng) C/OS-II 的移植.微計算機信 息 ,2006, 2-2: 135-136.2 Jean L. 嵌入式實時操作系統(tǒng) C/ OS- IIM . 邵貝貝譯 . 北京:北京航空航天 大學(xué)出版社 ,2003.3 杜春雷. ARM 體系結(jié)構(gòu)與編程 M . 北京: 清華大學(xué)出版社 ,2004.4 王田苗. 嵌入式系統(tǒng)設(shè)計與實例開發(fā) 基于 ARM 微處理器 C /OS- 實時操作系統(tǒng) M. 北京:清華大學(xué)出版社 , 2003.5 馬忠梅,徐英慧,等. AT91 系列 ARM 核微控制器結(jié)構(gòu)與開發(fā) M . 北京:北京 航空航天大學(xué)出版社 ,2003.6 Atmel Corpration. AT91R40008 Data Sheet Z . Atmel Corporation ,2003.作者介紹: 李玉剛 (1979-男

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論