實時操作系統(tǒng)C/OS-II在ARM7上的移植
目前,嵌入式系統(tǒng)在家電、移動電話、PDA等各種領(lǐng)域的應(yīng)用日益廣泛,程序設(shè)計也越來越復(fù)雜,這就需要采用一個通用的嵌入式操作系統(tǒng)來對其進行管理和控制。移植了操作系統(tǒng)的嵌入式系統(tǒng)開發(fā),可大大減輕程序員的負擔(dān),操作系統(tǒng)提供了多任務(wù)的管理功能,只需專注于每個任務(wù)的管理。對于不同的應(yīng)用,可以按照相同的步驟完成系統(tǒng)設(shè)計。如果更換硬件平臺,則只需要對操作系統(tǒng)進行少量的移植工作,與硬件無關(guān)的應(yīng)用代碼完全無需修改,同時,可增強代碼的可讀性、可維護性和可擴展性。
μC/OS-II是一種專門為微處理器設(shè)計的搶占式實時多任務(wù)操作系統(tǒng),具有源代碼公開、可移植性和可靠性高等特點。由于μC/OS-II是為嵌入式應(yīng)用編寫的通用軟件,故在具體應(yīng)用時需根據(jù)不同單片機的特點進行移植,其大部分代碼是用標(biāo)準C語言所寫,只有與處理器相關(guān)的一部分代碼用匯編語言編寫,因而具有很強的移植性,能在從8位到64位單片機以及DSP等超過40種不同構(gòu)架的微處理器上實現(xiàn)運行。本文主要介紹μC/OS-II在Samsung公司的一款ARM7TDMI的嵌入式處理器S3C44B0X上移植應(yīng)用。
要實現(xiàn)μC/OS-II在S3C44B0X的構(gòu)建、裁剪和移植,需要有S3C44B0X的編譯器,本文采用的是英蓓特公司推出的EmbestIDE for ARM編譯器。
2 μC/OS-II在S3C44B0X上移植的可行性分析
所謂移植,就是使一個實時內(nèi)核能在某個微處理器或微控制器上運行。要使μC/OS-II能夠正常運行,處理器必須滿足以下幾個條件:
(1)處理器的C編譯器能產(chǎn)生可重人代碼;
(2)在程序中可以打開或者關(guān)閉中斷;
(3)處理器支持中斷,并且能產(chǎn)生定時中斷(通常在l0~l000Hz之間);
(4)處理器支持能夠容納一定量數(shù)據(jù)的硬件堆棧;
(5)處理器有將堆棧指針和其他CPU寄存器存儲和讀出到堆棧(或者內(nèi)存)的指令。Samsung公司的S3C44BOX處理器能夠滿足以上的要求,所以可以將μC/OS-II移植到S3C44B0X上。
3 μC/OS-II在S3C44B0X上移植的概要
μC/OS-II硬件和軟件的體系結(jié)構(gòu)如圖1所示。從圖中可以看出,對μC/OS-II的移植實際上就是對與處理器有關(guān)的代碼進行重寫或修改。本文中移植代碼結(jié)構(gòu)由四部分組成,分別是用戶代碼部分、核心代碼部分、設(shè)置代碼部分、與處理器相關(guān)的移植代碼部分。用戶代碼即應(yīng)用軟件,用來實現(xiàn)用戶的具體要求,例如本文中和PC機的串口通訊代碼;核心代碼部分, 包含OS_CORE.C、COS_FLAG.C、OS_MBOX.C、OS_MEME.C、OS_Q.C、OS_SEM.C、OS_TASK.C、OS_TIME.C、μC/OS-II.C、μC/OS-II.H 十個文件;設(shè)置代碼部分,即μC/OS-II配置代碼,包含OS_CFG.H、INCLUDES.H 兩個文件,用來配置事件控制塊的數(shù)目以及是否包含消息管理相關(guān)代碼等;與處理器相關(guān)代碼即μC/OS-II要移植的處理器配置代碼,包含OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C三個文件,在μC/OS-II的移植過程中,用戶所需要關(guān)注的就是這部分文件。
圖1 μC/OS-II軟硬件體系結(jié)構(gòu)
評論