基于MDK RTX的Cortex-M3多任務(wù)應用設計

發(fā)布時(shí)間:2010-5-12 19:03    發(fā)布者:李寬
關(guān)鍵詞: Cortex , MDK , RTX
1 MDK RL—RTX和COrtex—M3概述

MDK開(kāi)發(fā)套件源自德國Keil公司,是ARM公司目前最新推出的針對各種嵌入式處理器的軟件開(kāi)發(fā)工具。MDKRL—IUX是一個(gè)實(shí)時(shí)操作系統(RTOS)內核,完全集成在MDK編譯器中。廣泛應用于A(yíng)RM7、ARM9和Cortex-M3設備中。它可以靈活解決多任務(wù)調度、維護和時(shí)序安排等問(wèn)題;赗L—I訂X的程序由標準的C語(yǔ)言編寫(xiě),由Real—View編譯器進(jìn)行編譯。操作系統依附于C語(yǔ)言使聲明函數更容易,不需要復雜的堆棧和變量結構配置,大大簡(jiǎn)化了復雜的軟件設計,縮短了項目開(kāi)發(fā)周期。

Cortex—M3是一個(gè)32位的核。它是首個(gè)基于A(yíng)RMv7M架構,主要針對價(jià)格敏感但又具備高系統效能需求的嵌入式應用設計,如微控制器、汽車(chē)車(chē)體系統及網(wǎng)絡(luò )裝置等。它內核緊湊,性能更高,采用了Thumb一2指令集架構,中斷時(shí)間更短,標準化內存映射,帶有內置SysTick的集成式NVIC。 SysTick能定期地產(chǎn)生異常請求,作為系統的時(shí)基,計時(shí)更準確。

MDK RL—RTX和Cortex—M3都源自ARM公司。ARM公司將其無(wú)縫整合在MDK開(kāi)發(fā)套件中,因此將RL—RTX移植到Cortex—M3上非常適合。RL—RTX作為一個(gè)全功能的內核,可以結合實(shí)時(shí)軟件庫中的其他組件。例如,加入實(shí)時(shí)庫中RL—Flasht文件系統組件,就可以讀寫(xiě)標準SD卡和 MMC卡上面的文件;加入RL—TCPnet組件,可應用于HTTP Web,ServeI’、TFTP Server和SMTP Client等?蓴U展性強,應用廣泛。

2 基于COrtex—M3硬件平臺的構建

STM32F103VB是ST公司基于Cortex—M3的處理器。它有1個(gè)128 KB Flash,1個(gè)20 KB SRAM,4個(gè)16位定時(shí)器,100個(gè)可編程的I/0引腳,具有I2C、SPI、USB、15SART和CAN接口,2路10通道12位A/D轉換器,RTC功能模塊,WDT功能和高級電源管理功能。

系統的數據緩存RAM和程序存儲器Flash為芯片自帶,系統外接A/D轉換器構成控制器;贑ortex-M3核的最小系統框圖如圖1所示。



基于該平臺,設計一個(gè)超溫報警器。使用美國半導體Dalias公司的智能溫度傳感器DS18820采樣,LCD顯示溫度數值,如果短時(shí)間內溫度超出正常溫度,蜂鳴器發(fā)出100 dB警報且LED燈閃爍示警?梢赃M(jìn)一步在該平臺上進(jìn)行擴展,加入GPS和GPRS模塊,當溫度超出設定范圍時(shí),GPS將現場(chǎng)經(jīng)緯度以及時(shí)間通過(guò)GPRS 以短信方式發(fā)送給監控中心,GPRS模塊自動(dòng)撥打有關(guān)人員移動(dòng)電話(huà)或固定電話(huà)報警。

3 MDK RL—RTX的配置與移植

RL—RTX在任務(wù)管理方面不僅支持搶先式任務(wù)切換,而且支持時(shí)間片輪轉切換。在基于時(shí)間片的輪轉任務(wù)機制下,CPIJ的執行時(shí)間被劃分為若干時(shí)間片,由 RL—RTX分配一個(gè)時(shí)間片給每個(gè)任務(wù),在該時(shí)間片內只執行這個(gè)任務(wù)。當時(shí)間片到,在下一個(gè)時(shí)間片中無(wú)條件地執行另外一個(gè)任務(wù)。所有任務(wù)都輪詢(xún)一次后,再回頭執行第一個(gè)任務(wù)。

RL—RTX最多可以定義256個(gè)任務(wù),所有任務(wù)都可以同時(shí)激活成為就緒態(tài)。RL—RTX用戶(hù)任務(wù)具有表1所列的幾個(gè)狀態(tài)。



一般情況下,任務(wù)切換由時(shí)間片控制,但有時(shí)需要用事件控制任務(wù)切換。RL—RTX事件主要有超時(shí)(Timeout)、間隔(Interval)和信號 (Signal)三種。

Timeout:掛起運行任務(wù)指定數量的時(shí)鐘周期,調用OS_DLY_WAIT函數的任務(wù)將被掛起,直到延時(shí)結束才返回到Ready狀態(tài),并可被再次執行。延時(shí)時(shí)間由SysTick衡量,可以設置從1至OxFFFE的任何值。

Interval:時(shí)間間隔,任務(wù)在該時(shí)間間隔中不運行,該時(shí)問(wèn)間隔與任務(wù)執行時(shí)間獨立。

Signal:用于任務(wù)間通信,可以用系統函數進(jìn)行置位或復位。如果一個(gè)任務(wù)調用了wait函數等待Signal未置位,則該任務(wù)被掛起直到Signal 置位,才返回READY狀態(tài),可再被執行。

RL—RTX中主要的系統函數說(shuō)明如表2所列。



RL—RTX為每個(gè)任務(wù)都分配了一個(gè)單獨的堆棧區,各個(gè)任務(wù)所用堆棧位置是動(dòng)態(tài)的,用task_id記錄各堆棧棧底位置。有多個(gè)嵌套子程序調用或使用大量的動(dòng)態(tài)變量時(shí),自由空間會(huì )被用完。使能棧檢查(Stack Checking),系統會(huì )執行OS_STK_0VERFLOW()堆棧錯誤函數進(jìn)行堆棧出錯處理。RL—RTX堆棧管理如圖2所示。



RL—RTX選擇Cortex上定時(shí)器1產(chǎn)生周期性中斷,相鄰中斷之間的時(shí)間就是時(shí)間片的長(cháng)度。在其中斷服務(wù)程序中進(jìn)行任務(wù)調度,并判斷執行了延遲函數的任務(wù)的延時(shí)時(shí)間是否到。這種周期性的中斷形成了RL—RTX的時(shí)鐘節拍。采用Cortex—M3的處理器STM32F103VB的CPU時(shí)鐘頻率為72 MHz,VPBDIV分頻值為4,輸出的時(shí)鐘頻率為18 MHz。系統推薦的時(shí)間片為1~lOO ms。

使用RL—RTX,包含以下幾個(gè)步驟:

第1步,由于RL—RTX集成在MDK開(kāi)發(fā)套件中,在使用MDK創(chuàng )建工程后,需要在工程中添加RTX內核選項。選擇Project→Options for Target,在Operating下拉框中選擇RTX內核,使得在編譯時(shí)把RL—RTX所需的庫編譯進(jìn)去。

第2步,在嵌入式應用程序的開(kāi)發(fā)中使用RL—RTX內核,須對其進(jìn)行配置。復制\Keil\ARM\Startup目錄下RTX_Config.c文件到工程文件夾并添加到工程中。該文件中,部分配置參數說(shuō)明如表3所列。



基于Cortex—M3平臺的超溫報警器,可以設計3個(gè)任務(wù)并發(fā),分別進(jìn)行數據采集、數據處理和數據顯示。3個(gè)任務(wù)較小,系統安排的任務(wù)棧足夠使用,棧的容量以32位無(wú)符號整型定義,容量為64字。選擇硬件平臺片上定時(shí)器1。

DSl8820具有300 ms的更新速率,在采集數據過(guò)程中,通過(guò)多次采集取平均值,數據采集任務(wù)執行的時(shí)間為30 ms,數據處理任務(wù)執行時(shí)間為40 ms,數據顯示任務(wù)執行時(shí)間為20 ms。根據公式,對響應時(shí)間的要求:t(響應時(shí)間)=N(進(jìn)程數目)×q(時(shí)間片)?傮w響應時(shí)間為90 ms,進(jìn)程數目為3,因此時(shí)間片設置為30 ms合適。在任務(wù)OS_IDLE_DEMON()中添加休眠代碼,空閑時(shí)系統休眠,降低功耗。

第3步,復制\Keil\ARM\Startup下Retarget.c文件到工程文件夾中,并添加到工程中。

修改文件,使其包含如下內容:



該文件的目的是避免半主機方式軟件中斷,因為這時(shí)所有中斷都由RL—RTX統一管理。半主機是用于A(yíng)RM目標的一種機制,可將來(lái)自應用程序代碼的輸入/輸出請求傳送至運行調試器的主機。它由一組已定義的SWI操作來(lái)實(shí)現。庫函數調用相應的SWI(軟件中斷),然后調試代理程序處理SWI異常,并提供所需的與主機之間的通信。

4 應用設計

4.1 多任務(wù)應用設計

根據圖1所示的最小系統框圖,采用由表及里 (out—side-in approach)分解應用的方法設計多任務(wù)。該應用的上下文框圖如圖3所示,中間的圈表示軟件應用,矩形框表示應用的輸入和輸出設備。箭頭標有具體含義名,表示輸入和輸出通信的流程。



根據上下文框圖以及避免“資源沖突”原則,將對同一個(gè)外設的訪(fǎng)問(wèn)放在同一個(gè)設備中,無(wú)論何時(shí)切換任務(wù),都不會(huì )對任何獨立的“外設”造成影響。

將應用分解為4個(gè)任務(wù),RL—RTX的第一個(gè)任務(wù)必須是系統任務(wù)Init Task,該任務(wù)用來(lái)初始化其他3個(gè)任務(wù),任務(wù)創(chuàng )建完畢后,3個(gè)任務(wù)都處于READY狀態(tài);第2個(gè)任務(wù)t_phase_ADC Task用來(lái)讀取A/D采樣的數據;第3個(gè)任務(wù)t_phase_DEA Task用來(lái)處理采樣的數據;第4個(gè)任務(wù)t_phase_DIS Task用來(lái)將數據送到LCD液晶屏上,顯示、控制LED燈閃爍和蜂鳴器高頻報警。圖4顯示了任務(wù)觸發(fā)的流程。

定義任務(wù):





使用os_tsk_create創(chuàng )建任務(wù)t_phase_ADC、t_phase_DEA、t_phase_DIS。

os_tsk_delete_self刪除自身任務(wù),實(shí)現任務(wù)切換。任務(wù)的創(chuàng )建和初始化是在主函數中定義的:



任務(wù)初始化完畢后,3個(gè)任務(wù)都處于就緒狀態(tài)。t_phase_ADC任務(wù)用來(lái)采樣,多次采樣取平均值,通過(guò)給任務(wù)t_phase_DEA發(fā)信號 signal_func(t_phase_DEA),喚醒t_phase_DEA任務(wù)。



os_evt_wait_and進(jìn)行控制。該任務(wù)判斷采樣的數據是否在警戒溫度范圍內,如果出現溫度異常,置標志位為1。執行完自身任務(wù)后,通過(guò) signal_func(t_phase_DIS),將喚醒t_phase_DIS任務(wù)。



t_phase_DIS任務(wù)用來(lái)在LCD液晶屏上顯示溫度值。如果發(fā)現標志位為1,則LED燈閃爍和蜂鳴器高頻報警。

4.2 應用設計測試

采用基本RMA可調度性測試。式1用來(lái)完成系統的基本RMA可調度性測試。



這里:Ci為與周期性任務(wù)i相關(guān)的最壞執行時(shí)間,Ti為與任務(wù)i相關(guān)的周期,n為任務(wù)的個(gè)數。

U(n)是利用系數,式1的右邊是理論處理器利用率的上界。如果給定一組任務(wù),其處理器利用率小于理論利用率上界,則這組任務(wù)是可調度的。U的值隨n的增加而下降;當n的值為無(wú)限時(shí),最終收斂于69%。

表4總結了使用RMA進(jìn)行調度的3個(gè)任務(wù)的特性。



使用式1,該應用設計處理器利用率計算如下:



應用設計總的利用率是27.42%,低于78%的理論邊界。此4個(gè)任務(wù)的系統是可調度的,該應用設計是成功的。

結語(yǔ)

本文描述了如何在Cortex—M3上使用MDK RL—RTX的方法,并給出了一個(gè)簡(jiǎn)單的多任務(wù)應用設計?梢钥闯龆嗳蝿(wù)的程序設計被大大簡(jiǎn)化了,它不但滿(mǎn)足多個(gè)任務(wù)的時(shí)間要求,降低了開(kāi)發(fā)難度,而且程序的可讀性和可維護性也有了很大的提高。利用MDK RL—RTX構建的嵌入式工業(yè)控制系統具有成本低、性能高等特點(diǎn),應用廣泛,有著(zhù)良好的發(fā)展前景。

參考文獻

   1. 李寧 ARM 開(kāi)發(fā)工具RealView MDK使用入門(mén) 2008
   2. 任哲 ARM 體系結構及其嵌入式處理器 2008
   3. Cesar Marquez Chin Identification of arm movements using correlation of electrocorticographic spectral components and kinematic recordings 2007(2)
   4. 查看詳情
   5. Li Qing Real-time concepts for Embedded Systems 2003

作者:武漢理工大學(xué) 方安平  武永誼
來(lái)源:單片機與嵌入式系統應用 2008 (12)
本文地址:http://selenalain.com/thread-11208-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页