- 相關推薦
基于STM32的μCOSⅢ系統(tǒng)移植的設計論文
摘 要:隨著嵌入式系統(tǒng)產(chǎn)品漸漸完善,并在全世界各行業(yè)得到廣泛應用,通過移植嵌入式操作系統(tǒng),計算機可以更好地管理內(nèi)存,并且在很大程度上提高系統(tǒng)的實時性。文章主要介紹了μCOS-Ⅲ操作系統(tǒng)在基于ARM Contex-M3為內(nèi)核的STM32處理器的移植要點,并且實現(xiàn)了源碼公開的嵌入式實時操作系統(tǒng)μCOS-Ⅲ在STM32處理器上的成功移植。
關鍵詞:μCOS-Ⅲ;STM32處理器;移植
引言
隨著人類社會經(jīng)濟的不斷發(fā)展,科研領域不斷的拓寬,嵌入式系統(tǒng)產(chǎn)品漸漸完善,并在全世界各行業(yè)得到廣泛應用。通過移植嵌入式操作系統(tǒng),計算機可以更好的管理內(nèi)存,并且在很大程度上實現(xiàn)了系統(tǒng)的實時性。μCOS-Ⅲ作為一個微型實時操作系統(tǒng),包括了一個操作系統(tǒng)最基本的特性,使用匯編語言和C語言編寫的μCOS-Ⅲ的構思巧妙,結構簡潔精煉,可讀性很強,作為一個源碼開放的嵌入式操作系統(tǒng),用戶只要做很少的工作就可以把它進行移植和維護。
1.1 實時操作系統(tǒng)μCOS-Ⅲ
μCOS-Ⅲ是一個可以基于ROM運行的、可裁減的、搶占式、實時多任務內(nèi)核,具有高度可移植性。所謂的移植,在一個平臺環(huán)境能夠成功運行的程序,將它搬運到另一個平臺環(huán)境,并且使其成功運行。發(fā)展至今的μCOS-Ⅲ,特別適合于微處理器和控制器,并且已經(jīng)移植到近40多種處理器體系上,涵蓋了從8位到64位的各種CPU。
μCOS-Ⅲ源碼可分為:與應用程序相關的文件、與計算機硬件相關的文件和系統(tǒng)內(nèi)核的各種服務文件。用戶在移植時,需要對與計算機硬件相關的文件進行修改:如OS_CPU.H文件,OS_CPU_A.ASM文件和OS_CPU_C.C文件。而系統(tǒng)內(nèi)核的各種文件,如:OS_CORE.C、OS_FLAG.C、OS_MBOX.C、OS_MUTEX.C等,與應用程序相關的文件:INCLUDES.H和OS_CFG.H則不需要修改。
ST公司針對STM32提供了STM32庫作為函數(shù)接口,使得開發(fā)人員得以脫離最底層的寄存器操作,有開發(fā)快速、易于閱讀、維護成本低等優(yōu)點。
2 μCOS-Ⅲ的移植
2.1 修改OS_CPU.H文件
μCOS-Ⅲ的內(nèi)核使用一個周期時鐘中斷,以計算任務延時時間和進行任務調(diào)度,在STM32中,這樣的時鐘中斷正適合由SysTick來提供。因為OS_CPU_SysTickHandler()函數(shù)與STM32庫所提供的stm32F10x_it.c文件中的SycTick_Handler()函數(shù)功能一樣,都是使用SysTick的中斷處理,所以我們采用SycTick_Handler()函數(shù)。因此,相應的對于OS_CPU.H文件的操作是:注釋掉OS_CPU_SysTickHandler()和OS_SysTickInit()函數(shù)的聲明。
2.2 修改OS_CPU_C.C
OS_CPU_SysTickHandler()和OS_CPU_SysTickInit()函數(shù)的定義在OS_CPU_C.C文件中,由于我們采用了STM32官方庫提供的函數(shù)來對SysTick進行中斷處理,所以我們要把OS_CPU_C.C的OS_CPU_SysTickHandler()和OS_CPU_SysTickInit()這兩個函數(shù)注釋掉。
2.3 修改OS_CPU_A.ASM文件
我們下載的μCOS-Ⅲ移植工程是在官方的IAR編譯環(huán)境下建立的,IAR在匯編的語法方面和我們使用的MDK編譯器有一點區(qū)別,所有我們對匯編文件的部分指令做如下修改:在OS_CPU_A.ASM文件中,將原來的PUBLIC指令改為EXPORT,它們是等價的。(見表1)
2.4 修改CPU_A.ASM文件
在CPU_A.ASM匯編文件中,仍有因編譯環(huán)境的不同而引起的錯誤,修改的方法同修改OS_CPU_A.ASM文件一樣,將原來的PUBLIC指令改為EXPORT。除此之外,在CPU_A.ASM文件中某些標號帶有冒號,如“CPU_CntLeadZeros:”、“CPU_RevBits:”、
“CPU_WaitForInt:”和“CPU_WaitForExpect:”,為了適應編譯環(huán)境,需要將其中的冒號去掉。
2.5 修改STM32F10X_IT.C文件
我們可以看到,在SysTick的函數(shù)中調(diào)用了3個函數(shù),它們都是μCOS源碼定義的函數(shù),其基本功能如下:
。1)OSIntEnter()函數(shù),對用于表示中斷嵌套層的變量OSIntNesting加1,它與OSIntExit()函數(shù)成對出現(xiàn),在進入中斷服務函數(shù)時,都應該包含這兩個函數(shù),中斷服務的內(nèi)容位于這兩個函數(shù)之間。
(2)OSIntExit()函數(shù),除了對嵌套層數(shù)OSIntNesting減1表示退出中斷外,還具有任務調(diào)度功能。
。3)OSTimeTick()函數(shù)主要工作是對系統(tǒng)統(tǒng)計事件的變量OSTime加1,另外,它還會遍歷所有任務,對延時任務的時間減1。
至此,我們對μCOS的源碼針對編譯環(huán)境做了修改,將SysTick中斷修改到STM32所提供的STM32F10X_IT.C文件后,就基本完成了μCOS的移植了。
3 系統(tǒng)測試
我們現(xiàn)在需要對移植好的代碼做一個簡單的測試,通過編寫流水燈任務來驗證移植的成功。流水燈任務的部分代碼如表3:
運行后我們發(fā)現(xiàn)實驗板的流水燈按照循環(huán)的方式一直閃爍,驗證了μCOS-Ⅲ在STM32處理器核上的成功移植。
4 結束語
作為一個成熟的嵌入式操作系統(tǒng),μCOS-Ⅲ已經(jīng)被廣泛移植于各種體系的微型處理器上了。在嵌入式技術高速發(fā)展的今天,基于ARM為內(nèi)核的微處理器憑借ARM優(yōu)秀的體系結構被運用于各種行業(yè)。通過研究μCOS-Ⅲ的移植,可以使得它在更廣泛的平臺得到應用,更促進嵌入式技術的發(fā)展。
參考文獻
[1]任哲.嵌入式操作系統(tǒng)基礎μC/OS-II和Linux(第2版)[M].北京:北京航空航天大學出版社,2011.
[2]野火開發(fā)板配套資料.μC/OS-Ⅲ在STM32的移植詳解[Z].
[3]Joseph Yiu.ARM Contex-M3 權威指南[M].宋巖,譯.北京:北京航空航天大學,2009.
[4]許倫輝,修科鼎.基于ARM處理器的μCOS-II移植[J].科技廣場,2010.
[6]鄧中亮,何雙亮.基于ARM的嵌入式操作系統(tǒng)μC/OS-II的移植研究[J].計算機技術與發(fā)展,2007.
【基于STM32的μCOSⅢ系統(tǒng)移植的設計論文】相關文章:
基于系統(tǒng)設計的科研管理論文09-22
基于冗余PLC的井下排水自動控制系統(tǒng)的設計的論文02-22
基于DSP整流器設計論文04-18
基于SCOSM自適應教學模型設計論文07-12
FPGA數(shù)據(jù)采集與回放系統(tǒng)設計論文04-24
解析科技競賽賽務系統(tǒng)的設計與實現(xiàn)論文04-19