穆向陽 楊曉東
摘要:該文介紹了第三代嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅲ相比之前版本,在性能上提升的地方,以及通過對(duì)搭載STM32F429IGT6微處理器的ARM Cortex-M4內(nèi)核平臺(tái)的技術(shù)分析,詳細(xì)闡述了μC/OS-Ⅲ嵌入式系統(tǒng)在此平臺(tái)上移植過程中的關(guān)鍵技術(shù)理論,最后通過設(shè)計(jì)多任務(wù)處理應(yīng)用來驗(yàn)證系統(tǒng)移植的可靠性。
關(guān)鍵詞:嵌入式系統(tǒng);μC/OS-Ⅲ;Cortex-M4;STM32F429IGT6
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)06-0204-02
1引言
STM32系列基于研發(fā)高性能、低功耗、低成本的嵌入式應(yīng)用設(shè)備而著稱,隨著半導(dǎo)體技術(shù)的快速發(fā)展,承載于嵌入式平臺(tái)的實(shí)時(shí)操作系統(tǒng)也越來越被人們所關(guān)注,μC/OS-Ⅲ作為新一代具有高度可移植性的嵌入式操作系統(tǒng),無論是在性能表現(xiàn)上還是在實(shí)際移植運(yùn)用中都體現(xiàn)出了前所未有的工程價(jià)值,其在工程項(xiàng)目領(lǐng)域的迅猛發(fā)展也足夠證明開放源碼軟件的巨大生命力。
2μC/OS Ⅲ基于性能上的提升
μC/OS作為可裁剪、搶占式、可固化、實(shí)時(shí)多任務(wù)內(nèi)核,在搭載微控制器的ROM平臺(tái)上具有高度的可移植性,2009年誕生的第三代μC/OS系統(tǒng)內(nèi)核對(duì)比之前版本在性能上有很大的提升。首先,最大任務(wù)數(shù)和每個(gè)優(yōu)先級(jí)的任務(wù)數(shù)比起上一代沒有了限制,取消了消息郵箱,增加了時(shí)間片輪轉(zhuǎn)功能,不再通過信號(hào)量標(biāo)記一個(gè)任務(wù),不通過消息列發(fā)消息給任務(wù),其次,加入了運(yùn)行中實(shí)時(shí)配置功能,以及大量的嵌入式測量功能。這就使得μC/OS-Ⅲ裁剪性移植在STM32F429IGT6平臺(tái)任務(wù)處理工作中發(fā)揮巨大作用。
3 STM32F429IGT6技術(shù)指標(biāo)分析
低電量的STM32F429IGT6微處理器是基于高性能ARMCortex-M4的32位RISC內(nèi)核,可以在高達(dá)180兆赫的頻率工作。ARM Cortex-M4內(nèi)核具有浮點(diǎn)單元(FPU)單精度,支持當(dāng)下所有ARM平臺(tái)的單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型。它能夠?qū)崿F(xiàn)一整套DSP指令和一個(gè)增強(qiáng)應(yīng)用程序安全性的內(nèi)存保護(hù)單元(MPU)。集成了高速嵌入式存儲(chǔ)器(高達(dá)2 MB的閃存,高達(dá)256 KB的SRAM),高達(dá)4 KB的備份SRAM以及連接到兩個(gè)APB的各種增強(qiáng)型I/O和外設(shè)總線,兩條AHB總線和一個(gè)32位多AHB總線矩陣。所有器件均提供12位ADC三個(gè),DAC兩個(gè),16位通用定時(shí)器十二個(gè),低功耗實(shí)時(shí)時(shí)鐘RTC一個(gè),包括支持電機(jī)控制的PWM定時(shí)器兩個(gè),32位通用定時(shí)器兩個(gè),并涵蓋了多樣化的當(dāng)下流行的標(biāo)準(zhǔn)通信接口。
4μC/OS Ⅲ系統(tǒng)移植過程中的關(guān)鍵技術(shù)理論和實(shí)踐
4.1 μC/OS-Ⅲ系統(tǒng)內(nèi)核移植過程概述
(1)txcos官網(wǎng)下載最新版本內(nèi)核,ST官網(wǎng)下載STM32F429IGT6標(biāo)準(zhǔn)庫文件
(2)用MDK新建本次移植平臺(tái)STM32F429IGT6的工程目
(3)拷貝μC/OS-Ⅲ相關(guān)文件夾到新建的工程目錄下
(4)對(duì)平臺(tái)相關(guān)文件進(jìn)行修改
(5)根據(jù)所工程需要,設(shè)置好相關(guān)參數(shù)
(6)編寫B(tài)SP目錄下對(duì)應(yīng)的工程驅(qū)動(dòng)文件
(7)編譯、下載,測試系統(tǒng)可靠性
4.2修改STM32啟動(dòng)文件代碼
在μC/OS-Ⅲ系統(tǒng)移植中,除去將系統(tǒng)中的相關(guān)文件直接復(fù)制移植到工程文件中,最重要的就是修改STM32的啟動(dòng)文件代碼,從而把μC/OS-Ⅲ系統(tǒng)的神經(jīng)跟已經(jīng)復(fù)制移植好的STM32工程文件聯(lián)系起來,可掛起系統(tǒng)中斷PendSVHandler和滴答定時(shí)器中斷SysTickHandler則承擔(dān)了這部分工作。Sys-TickHandler為操作系統(tǒng)提供時(shí)鐘節(jié)拍,PendSVHandler則是使μC/OS-Ⅲ能夠成功的進(jìn)人到STM32系統(tǒng)中。在整個(gè)項(xiàng)目文檔的移植過程中,將可掛起系統(tǒng)中斷PendSVHmldler替換移植為OS_CPU_PendSVHandler,將系統(tǒng)滴答時(shí)鐘SysTickHandler替換為OS_CPU_SysTickHandler。
4.3修改os_cpu_a.asm文件
由于不同的編譯器,要將μC/OS-Ⅲ移植到stm32上,C語言中用來定義全局變量的關(guān)鍵字PUBLIC要全部更改為匯編語言中的EXPORT,并將代碼段
RSEG CODE:CODE:NOROOT(2)
THUMB
替換移植為
PRESERVE8
THUMB
AREA CODE,CODE,READONLY
這部分修改是為了兼容STM32里面的一些指令集
4.4修改cpu_a.asm文件
修改處理器相關(guān)的匯編函數(shù),主要是任務(wù)切換函數(shù),同上,將C語言中用來定義全局變量的關(guān)鍵字PUBLIC要全部更改為匯編語言中的EXPORT,并將代碼段
通過OSTaskSemPend使任務(wù)掛在一個(gè)信號(hào)量上,通過OSTasks-emPost使任務(wù)發(fā)出一個(gè)信號(hào)量,由此實(shí)現(xiàn)信號(hào)量開關(guān)對(duì)兩個(gè)任務(wù)進(jìn)行交互。
6結(jié)語
本文選用了ST公司的低功耗STM32F429IGT6嵌入式開發(fā)平臺(tái),從技術(shù)理論到項(xiàng)目實(shí)踐經(jīng)驗(yàn),結(jié)合Cortex-M4內(nèi)核的系統(tǒng)架構(gòu)模式,通過對(duì)整體μC/OS-Ⅲ系統(tǒng)的裁剪以及源碼的按需性修改,完成了μC/OS-Ⅲ操作系統(tǒng)在STM32F429IGT6嵌入式開發(fā)平臺(tái)的移植工作,無論是對(duì)提高產(chǎn)品工作效率、降低多模塊工藝成本,還是縮短相關(guān)任務(wù)系統(tǒng)開發(fā),都有一定意義上的實(shí)際工程應(yīng)用價(jià)值。