胡夢(mèng)寒
摘 要:本文討論了將一個(gè)具有高可靠性的可剝奪型多任務(wù)實(shí)時(shí)內(nèi)核uC/OS-II在Freescale單片機(jī)MC9S12DG128B上移植的原理和方法。給出了一個(gè)以Freescale Code Warrior 為編譯器,MC9S12DG128B為處理器的對(duì)uC/OS-II系統(tǒng)進(jìn)行移植的具體實(shí)例。
關(guān)鍵詞:uC/OS-II;MC9S12DG128B;移植
嵌入式操作系統(tǒng)近年來備受人們關(guān)注,其開發(fā)出來的產(chǎn)品已經(jīng)應(yīng)用到生活的各個(gè)角落。uC/OS-II系統(tǒng)作為嵌入式操作系統(tǒng)的一種,具有高可靠性、穩(wěn)定性和實(shí)時(shí)性。MC9S12DG128B是16位單片機(jī),具有資源豐富、功能強(qiáng)大、運(yùn)行穩(wěn)定且價(jià)格低廉的特點(diǎn)。本文將介紹uC/OS-II實(shí)時(shí)內(nèi)核在MC9S12DG128B上的移植過程。
1 移植前的準(zhǔn)備工作
1.1 uC/OS-II系統(tǒng)特點(diǎn)
uC/OS-II實(shí)時(shí)操作系統(tǒng)使用可剝離型內(nèi)核,CPU總是運(yùn)行多個(gè)任務(wù)中優(yōu)先級(jí)最高的任務(wù)。它具有很強(qiáng)的可移植性、內(nèi)核可裁減性、可確定性的特點(diǎn),并提供很多系統(tǒng)服務(wù)。
1.2 MC9S12DG128B硬件資源
MC9S12DG128B是16位單片機(jī),DG128CPU具有6個(gè)寄存器,13種尋址方式和400多條指令,同時(shí),DG128具有豐富的I/O接口,MC9S12DG128B典型的內(nèi)部時(shí)鐘頻率為16MHZ,支持定時(shí)中斷,具有128k的Flash,8k字節(jié)的RAM和2k字的EEPROM。
1.3 移植過程編譯器
開發(fā)編譯工具:CodeWarrior For HCS12X_v4.7。
1.4 uC/OS-II模塊
uC/OS-II的軟硬件體系結(jié)構(gòu)如圖1所示。應(yīng)用程序處于系統(tǒng)的頂層,無限循環(huán)設(shè)計(jì),每個(gè)任務(wù)獨(dú)占CPU。
2 具體移植步驟
以下是具體的移植步驟,與硬件相關(guān)的各個(gè)文件需修改。
2.1 文件OS_CPU.H
包含與處理器相關(guān)的、#define語句定義的常數(shù)、宏以及數(shù)據(jù)類型。
2.2 數(shù)據(jù)類型定義
不同編譯器會(huì)使用不同的字節(jié)長(zhǎng)度來表示同一數(shù)據(jù)類型。uC/OS-II的移植包含一系列的數(shù)據(jù)類型定義。
2.3 堆棧單位
OS_STK的數(shù)據(jù)類型必與須處理器的寄存器長(zhǎng)度一致。
2.4 堆棧方向
需預(yù)先設(shè)定堆棧的增長(zhǎng)方向,因?yàn)椴煌幚砥?,?shù)據(jù)入堆棧時(shí)堆棧指針的增長(zhǎng)方向不一樣。
2.5 臨界區(qū)
需定義兩個(gè)保護(hù)臨界區(qū)的宏。
2.6 設(shè)置OS_TASK_SW()
#define OS_TASK_SW() asm(swi)
2.7 文件OS_CPU_A.ASM
uC/OS-II移植要求編寫四個(gè)匯編函數(shù),分別是OSTickISR()、OSStartHighRdy()、OSCtxSw()和OSIntCtxSw(),移植過程將對(duì)相應(yīng)函數(shù)進(jìn)行修改。
3 實(shí)驗(yàn)及其結(jié)果分析
為驗(yàn)證移植的正確性,本文將通過應(yīng)用任務(wù)實(shí)驗(yàn)來實(shí)施驗(yàn)證。實(shí)驗(yàn)必須在確保C編譯器,匯編編譯器及鏈接器正常工作的情況下進(jìn)行,測(cè)試修改過的移植函數(shù)在9S12環(huán)境下運(yùn)行是否正常。
根據(jù)實(shí)驗(yàn)結(jié)果可以看出,任務(wù)TestTask1和TestTask2創(chuàng)建成功,證明OSTaskStkInit()、OSStartHighRdy()工作正常;TestTask1和TestTask2實(shí)現(xiàn)了任務(wù)切換,以及發(fā)生了時(shí)間中斷(任務(wù)TestTask1運(yùn)行兩次后任務(wù)TestTask2運(yùn)行一次),因此其它函數(shù)也正常運(yùn)行,實(shí)驗(yàn)成功。由此可以得出結(jié)論,uC/OS-II在MC9S12DG128B上移植成功。
4 結(jié)語
本文介紹了uC/OS-II移植到MC9S12DG128B上的全過程,對(duì)從事嵌入式系統(tǒng)移植工作的開發(fā)人員有一定的參考價(jià)值。
參考文獻(xiàn):
[1] Jean J Labrosse.嵌入式操作系統(tǒng)uC/OS-II [M].第2版,北京:北京航空航天大學(xué)出版社,2005:283-316.
[2] 黃濤,徐宏吉.嵌入式實(shí)時(shí)操作系統(tǒng)移植技術(shù)的分析和應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2003,(9):88-90.
[3] 邵貝貝.在MC68HC908GP32上移植uC/OS-II.單片機(jī)與嵌入式系統(tǒng)應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001,(11):69-75.
[4] 王宜懷,劉曉升,等.嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003,1.