新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于M D K RTX的COrtex―M3多任務應用設計

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

        作者: 時間:2009-01-19 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/152649.htm


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

        根據上下文框圖以及避免“資源沖突”原則,將對同一個外設的訪問放在同一個設備中,無論何時切換,都不會對任何獨立的“外設”造成影響。
        將應用分解為4個任務,RL―的第一個任務必須是系統任務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―上使用MDK RL―的方法,并給出了一個簡單的多任務應用設計。可以看出多任務的程序設計被大大簡化了,它不但滿足多個任務的時間要求,降低了開發難度,而且程序的可讀性和可維護性也有了很大的提高。利用MDK RL―RTX構建的嵌入式工業控制系統具有成本低、性能高等特點,應用廣泛,有著良好的發展前景。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青海省| 义乌市| 绵竹市| 江西省| 鸡东县| 玛沁县| 团风县| 福贡县| 武义县| 金坛市| 星子县| 龙游县| 新郑市| 诸暨市| 泗洪县| 二手房| 正蓝旗| 仁化县| 永定县| 安西县| 城口县| 调兵山市| 玛沁县| 灵宝市| 贵德县| 大余县| 延安市| 惠安县| 武威市| 仙游县| 老河口市| 昌平区| 林甸县| 浏阳市| 马尔康县| 中宁县| 桐梓县| 扶风县| 南宁市| 长葛市| 昌图县|