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

基于MDK RTX的Cortex-M3多任務應用設計

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

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

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

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

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

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轉換器,RTC功能模塊,WDT功能和高級電源管理功能。

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



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

3 MDK RL—RTX的配置與移植

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

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



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

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

Interval:時間間隔,任務在該時間間隔中不運行,該時問間隔與任務執行時間獨立。

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

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



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



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

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

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

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



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

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

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

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



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

4 應用設計

4.1 多任務應用設計

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



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

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

定義任務:





使用os_tsk_create創建任務t_phase_ADC、t_phase_DEA、t_phase_DIS。

os_tsk_delete_self刪除自身任務,實現任務切換。任務的創建和初始化是在主函數中定義的:



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



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



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

4.2 應用設計測試

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



這里:Ci為與周期性任務i相關的最壞執行時間,Ti為與任務i相關的周期,n為任務的個數。

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

表4總結了使用RMA進行調度的3個任務的特性。



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



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

結語

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

參考文獻

   1. 李寧 ARM 開發工具RealView MDK使用入門 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

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

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

廠商推薦

  • Microchip視頻專區
  • 無線充電基礎知識及應用培訓教程2
  • PIC18-Q71系列MCU概述
  • 無線充電基礎知識及應用培訓教程3
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎影院在线观看网站 | 97国产在线视频公开免费 | 久久精品午夜视频 | 亚洲区视频在线观看 | 国产区最新 | 香蕉视频观看 | 欧美噜噜 | 欧美精选在线观看 | 向日葵的免费观看地址 | 午夜第一页 | 国产h视频在线观看 | 亚洲精品欧美日韩 | 国产偷倩视频 | 国产精品日本一区二区不卡视频 | 久草久| 在线视频一区二区三区在线播放 | 免费欧洲毛片a级视频老妇女 | 久热这里都是精品 | 色视频在线 | 久久青青草原精品国产麻豆 | 幻女与人xx00毛片免费 | 日本视频免费在线 | 日日插天天干 | 插吧插吧综合网 | 国产成人久久综合二区 | 91大神娇喘女神疯狂在线 | 国产毛片一区二区三区 | 欧美日韩免费在线 | 国产一区国产二区国产三区 | 青青草网址 | 两个人在线观看www视频 | 性视频福利在线看 | 免费一级a毛片在线播放 | 日本亚洲一区二区三区 | 国产精品久久久久9999小说 | 久久精品一级 | 久草精品在线播放 | 久久久香蕉 | 91精品福利久久久 | 日韩精品一区二区三区在线观看 | 中文字幕手机在线播放 |