淺談基于STM32的μCOS-Ⅲ系統(tǒng)移植的設(shè)計(jì)論文
淺談基于STM32的μCOS-Ⅲ系統(tǒng)移植的設(shè)計(jì)論文
uC/OS-III(Micro C OS Three 微型的C 語(yǔ)言編寫(xiě)的操作系統(tǒng)第3版)是一個(gè)可升級(jí)的,可固化的,基于優(yōu)先級(jí)的實(shí)時(shí)內(nèi)核。它對(duì)任務(wù)的個(gè)數(shù)無(wú)限制。uC/OS-III 是一個(gè)第3 代的系統(tǒng)內(nèi)核,支持現(xiàn)代的實(shí)時(shí)內(nèi)核所期待的大部分功能。例如資源管理,同步,任務(wù)間的通信等等。然而,uC/OS-III 提供的特色功能在其它的實(shí)時(shí)內(nèi)核中是找不到的,比如說(shuō)完備的運(yùn)行時(shí)間測(cè)量性能,直接地發(fā)送信號(hào)或者消息到任務(wù),任務(wù)可以同時(shí)等待多個(gè)內(nèi)核對(duì)象等。以下是學(xué)習(xí)啦小編為大家精心準(zhǔn)備的:淺談基于STM32的μCOS-Ⅲ系統(tǒng)移植的設(shè)計(jì)相關(guān)論文。內(nèi)容僅供參考,歡迎閱讀!
淺談基于STM32的μCOS-Ⅲ系統(tǒng)移植的設(shè)計(jì)全文如下:
引言
隨著人類(lèi)社會(huì)經(jīng)濟(jì)的不斷發(fā)展,科研領(lǐng)域不斷的拓寬,嵌入式系統(tǒng)產(chǎn)品漸漸完善,并在全世界各行業(yè)得到廣泛應(yīng)用。通過(guò)移植嵌入式操作系統(tǒng),計(jì)算機(jī)可以更好的管理內(nèi)存,并且在很大程度上實(shí)現(xiàn)了系統(tǒng)的實(shí)時(shí)性。μCOS-Ⅲ作為一個(gè)微型實(shí)時(shí)操作系統(tǒng),包括了一個(gè)操作系統(tǒng)最基本的特性,使用匯編語(yǔ)言和C 語(yǔ)言編寫(xiě)的μCOS-Ⅲ的構(gòu)思巧妙,結(jié)構(gòu)簡(jiǎn)潔精煉,可讀性很強(qiáng),作為一個(gè)源碼開(kāi)放的嵌入式操作系統(tǒng),用戶(hù)只要做很少的工作就可以把它進(jìn)行移植和維護(hù)。
1 實(shí)時(shí)操作系統(tǒng)μCOS-Ⅲ和STM32 處理器
1.1 實(shí)時(shí)操作系統(tǒng)μCOS-Ⅲ
μCOS-Ⅲ的前身是由美國(guó)嵌入式系統(tǒng)專(zhuān)家Jean J.Labrosse 于1992 年推出的嵌入式操作系統(tǒng)μCOS,經(jīng)過(guò)了不斷的完善和擴(kuò)充,形成現(xiàn)在的μCOS-Ⅲ。
μCOS-Ⅲ是一個(gè)可以基于ROM 運(yùn)行的、可裁減的、搶占式、實(shí)時(shí)多任務(wù)內(nèi)核,具有高度可移植性。所謂的移植,在一個(gè)平臺(tái)環(huán)境能夠成功運(yùn)行的程序,將它搬運(yùn)到另一個(gè)平臺(tái)環(huán)境,并且使其成功運(yùn)行。發(fā)展至今的μCOS-Ⅲ,特別適合于微處理器和控制器,并且已經(jīng)移植到近40 多種處理器體系上,涵蓋了從8 位到64 位的各種CPU。
μCOS-Ⅲ源碼可分為:與應(yīng)用程序相關(guān)的文件、與計(jì)算機(jī)硬件相關(guān)的文件和系統(tǒng)內(nèi)核的各種服務(wù)文件。用戶(hù)在移植時(shí),需要對(duì)與計(jì)算機(jī)硬件相關(guān)的文件進(jìn)行修改:如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 等,與應(yīng)用程序相關(guān)的文件: INCLUDES.H 和OS_CFG.H 則不需要修改。
1.2 STM32 處理器
STM32 系列基于專(zhuān)為要求高性能、低成本、低功耗的嵌入式應(yīng)用專(zhuān)門(mén)設(shè)計(jì)的ARM Cortex-M3 內(nèi)核。我們所采用的STM32F103 型,其內(nèi)核為ARM32 位Cortex -M3 CPU, 最高工作頻率72MHz,1.25DMIPS/MHz。ECOPACK 封裝,最多高達(dá)112 個(gè)的快速I(mǎi)/O 端口,最多多達(dá)11 個(gè)定時(shí)器,最多多達(dá)13 個(gè)通信接口,具有3 種模式:休眠,停止,待機(jī)模式的低功耗,可以使其廣泛的應(yīng)用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問(wèn)控制等。
ST 公司針對(duì)STM32 提供了STM32 庫(kù)作為函數(shù)接口,使得開(kāi)發(fā)人員得以脫離最底層的寄存器操作,有開(kāi)發(fā)快速、易于閱讀、維護(hù)成本低等優(yōu)點(diǎn)。
2 μCOS-Ⅲ的移植
2.1 修改OS_CPU.H 文件
μCOS-Ⅲ的內(nèi)核使用一個(gè)周期時(shí)鐘中斷,以計(jì)算任務(wù)延時(shí)時(shí)間和進(jìn)行任務(wù)調(diào)度,在STM32 中,這樣的時(shí)鐘中斷正適合由SysTick來(lái)提供。因?yàn)镺S_CPU_SysTickHandler()函數(shù)與STM32 庫(kù)所提供的stm32F10x_it.c 文件中的SycTick_Handler()函數(shù)功能一樣,都是使用SysTick 的中斷處理,所以我們采用SycTick_Handler()函數(shù)。因此,相應(yīng)的對(duì)于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 官方庫(kù)提供的函數(shù)來(lái)對(duì)SysTick 進(jìn)行中斷處理,所以我們要把OS_CPU_C.C 的OS_CPU_SysTickHandler()和OS_CPU_SysTickInit()這兩個(gè)函數(shù)注釋掉。
2.3 修改OS_CPU_A.ASM 文件
我們下載的μCOS-Ⅲ移植工程是在官方的IAR 編譯環(huán)境下建立的,IAR 在匯編的語(yǔ)法方面和我們使用的MDK 編譯器有一點(diǎn)區(qū)別,所有我們對(duì)匯編文件的部分指令做如下修改:在OS_CPU_A.ASM 文件中,將原來(lái)的PUBLIC 指令改為EXPORT,它們是等價(jià)的。
2.4 修改CPU_A.ASM 文件
在CPU_A.ASM 匯編文件中,仍有因編譯環(huán)境的不同而引起的錯(cuò)誤,修改的方法同修改OS_CPU_A.ASM 文件一樣,將原來(lái)的PUBLIC 指令改為EXPORT。除此之外,在CPU_A.ASM 文件中某些標(biāo)號(hào)帶有冒號(hào),如“CPU_CntLeadZeros:”、“CPU_RevBits:”、“CPU_WaitForInt:”和“CPU_WaitForExpect:”,為了適應(yīng)編譯環(huán)境,需要將其中的冒號(hào)去掉。
2.5 修改STM32F10X_IT.C 文件
為了實(shí)現(xiàn)和完成完整的中斷,我們需要將STM32F10X_IT.C 文件原有的PendSV_Handler 空函數(shù)注釋掉,同時(shí)編寫(xiě)SysTick 中斷服務(wù)函數(shù)。
我們可以看到,在SysTick 的函數(shù)中調(diào)用了3 個(gè)函數(shù),它們都是μCOS 源碼定義的函數(shù),其基本功能如下:
(1)OSIntEnter () 函數(shù), 對(duì)用于表示中斷嵌套層的變量OSIntNesting 加1,它與OSIntExit()函數(shù)成對(duì)出現(xiàn),在進(jìn)入中斷服務(wù)函數(shù)時(shí),都應(yīng)該包含這兩個(gè)函數(shù),中斷服務(wù)的內(nèi)容位于這兩個(gè)函數(shù)之間。
(2)OSIntExit()函數(shù),除了對(duì)嵌套層數(shù)OSIntNesting 減1 表示退出中斷外,還具有任務(wù)調(diào)度功能。
(3)OSTimeTick()函數(shù)主要工作是對(duì)系統(tǒng)統(tǒng)計(jì)事件的變量OSTime加1,另外,它還會(huì)遍歷所有任務(wù),對(duì)延時(shí)任務(wù)的時(shí)間減1。
至此,我們對(duì)μCOS 的源碼針對(duì)編譯環(huán)境做了修改,將SysTick中斷修改到STM32 所提供的STM32F10X_IT.C 文件后,就基本完成了μCOS 的移植了。
3 系統(tǒng)測(cè)試
我們現(xiàn)在需要對(duì)移植好的代碼做一個(gè)簡(jiǎn)單的測(cè)試,通過(guò)編寫(xiě)流水燈任務(wù)來(lái)驗(yàn)證移植的成功。流水燈任務(wù)的部分代碼如表3:運(yùn)行后我們發(fā)現(xiàn)實(shí)驗(yàn)板的流水燈按照循環(huán)的方式一直閃爍,驗(yàn)證了μCOS-Ⅲ在STM32 處理器核上的成功移植。
4 結(jié)束語(yǔ)
作為一個(gè)成熟的嵌入式操作系統(tǒng),μCOS-Ⅲ已經(jīng)被廣泛移植于各種體系的微型處理器上了。在嵌入式技術(shù)高速發(fā)展的今天,基于ARM 為內(nèi)核的微處理器憑借ARM 優(yōu)秀的體系結(jié)構(gòu)被運(yùn)用于各種行業(yè)。通過(guò)研究μCOS-Ⅲ的移植,可以使得它在更廣泛的平臺(tái)得到應(yīng)用,更促進(jìn)嵌入式技術(shù)的發(fā)展。
【淺談基于STM32的μCOS-Ⅲ系統(tǒng)移植的設(shè)計(jì)】相關(guān)文章:
1.基于μC/OS的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)研究論文
2.論冶金機(jī)械液壓系統(tǒng)的污染與控制研究論文
3.提高實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性能和可靠性策略論文
4.關(guān)于土地信息系統(tǒng)建立過(guò)程中的數(shù)據(jù)質(zhì)量問(wèn)題的探討論文