国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于MDK RTX的Cortex-M3多任務(wù)應(yīng)用設(shè)計

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

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

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

MDK RL—RTX和Cortex—M3都源自ARM公司。ARM公司將其無縫整合在MDK開發(fā)套件中,因此將RL—RTX移植到Cortex—M3上非常適合。RL—RTX作為一個全功能的內(nèi)核,可以結(jié)合實時軟件庫中的其他組件。例如,加入實時庫中RL—Flasht文件系統(tǒng)組件,就可以讀寫標(biāo)準(zhǔn)SD卡和 MMC卡上面的文件;加入RL—TCPnet組件,可應(yīng)用于HTTP Web,ServeI’、TFTP Server和SMTP Client等。可擴(kuò)展性強(qiáng),應(yīng)用廣泛。

2 基于COrtex—M3硬件平臺的構(gòu)建

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

系統(tǒng)的數(shù)據(jù)緩存RAM和程序存儲器Flash為芯片自帶,系統(tǒng)外接A/D轉(zhuǎn)換器構(gòu)成控制器。基于Cortex-M3核的最小系統(tǒng)框圖如圖1所示。



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

3 MDK RL—RTX的配置與移植

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

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



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

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

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

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

RL—RTX中主要的系統(tǒng)函數(shù)說明如表2所列。



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



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

使用RL—RTX,包含以下幾個步驟:

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

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



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

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

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

修改文件,使其包含如下內(nèi)容:



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

4 應(yīng)用設(shè)計

4.1 多任務(wù)應(yīng)用設(shè)計

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



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

將應(yīng)用分解為4個任務(wù),RL—RTX的第一個任務(wù)必須是系統(tǒng)任務(wù)Init Task,該任務(wù)用來初始化其他3個任務(wù),任務(wù)創(chuàng)建完畢后,3個任務(wù)都處于READY狀態(tài);第2個任務(wù)t_phase_ADC Task用來讀取A/D采樣的數(shù)據(jù);第3個任務(wù)t_phase_DEA Task用來處理采樣的數(shù)據(jù);第4個任務(wù)t_phase_DIS Task用來將數(shù)據(jù)送到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ù),實現(xiàn)任務(wù)切換。任務(wù)的創(chuàng)建和初始化是在主函數(shù)中定義的:



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



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



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

4.2 應(yīng)用設(shè)計測試

采用基本RMA可調(diào)度性測試。式1用來完成系統(tǒng)的基本RMA可調(diào)度性測試。



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

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

表4總結(jié)了使用RMA進(jìn)行調(diào)度的3個任務(wù)的特性。



使用式1,該應(yīng)用設(shè)計處理器利用率計算如下:



應(yīng)用設(shè)計總的利用率是27.42%,低于78%的理論邊界。此4個任務(wù)的系統(tǒng)是可調(diào)度的,該應(yīng)用設(shè)計是成功的。

結(jié)語

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

參考文獻(xiàn)

   1. 李寧 ARM 開發(fā)工具RealView MDK使用入門 2008
   2. 任哲 ARM 體系結(jié)構(gòu)及其嵌入式處理器 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é) 方安平  武永誼
來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 2008 (12)
本文地址:http://www.qingdxww.cn/thread-11208-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節(jié)省時間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区不卡免费视频 | 91视频网址入口 | 精品一区二区久久久久久久网精 | 青青青青爽视频在线播放 | 久久亚洲精品国产精品黑人 | 日本欧美中文字幕人在线 | h在线观看免费 | 操洞洞| 午夜成a人片在线观看 | 欧美亚洲国产精品久久蜜芽 | 另类专区另类专区亚洲 | 麻豆传煤适当放松一下自己 | 99精品小视频 | 欧美精品伊人久久 | 久久99热精品这里久久精品 | 欧美性视频xxxxhd | 日本免费黄视频 | 天堂网2018| 欧美成人性色生活片免费在线观看 | 国产在线观看午夜不卡 | 中文线码中文高清播放中 | 久久久久逼 | 久久亚洲国产中v天仙www | 国产日韩欧美亚洲精品95 | 亚洲一区二区三区久久久久 | 一区二区三区四区 | 在线一区免费播放 | 夜夜摸天天操 | 久久久综合香蕉尹人综合网 | 国产成人综合亚洲亚洲欧美 | 日韩毛片免费 | 欧美成人h版影院在线播放 欧美成人h版影片在线观看 | 黄色成人在线观看 | 变态 另类 国产 亚洲 | 岛国大片在线免费观看 | 插菊网 | 国产91在线精品 | 在线成人精品国产区免费 | 一级毛片免费全部播放 | 日韩精品在线一区二区 | 亚洲综合自拍 |