<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于M D K RTX的COrtex—M3多任務應用設計

          基于M D K RTX的COrtex—M3多任務應用設計

          作者: 時間:2012-09-07 來源:網(wǎng)絡 收藏

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

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

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

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

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

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

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

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

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

            4 應用設計

            4.1 設計

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

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

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

            定義任務:

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

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

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

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

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

            4.2 應用設計測試

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

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

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

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

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

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

            結(jié) 語

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: MDK COrtex-M3 多任務應用

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();