新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于RTX51 TINY的分析與探討

        關于RTX51 TINY的分析與探討

        作者: 時間:2012-04-12 來源:網絡 收藏

        有了以上幾個函數的定義和實現,就可以應用等待信號量和釋放信號量來完成對共享資源的獨占。例如:
          void job()_task_ id {
              DDDD用戶代碼DDDD
              wait_sem(task_id);//等待任務task_id的信號量
              DDDD對共享資源使用代碼DDDD
              release_sem(task_id);//釋放任務task_id的信號量
              DDDD用戶代碼DDDD
          }

        應用信號量來實現共享資源的使用,不用禁止時間片輪轉和關閉T0中斷,可以有效地實現對共享資源的獨占;但增加了代碼,等待和釋放信號量花費了一定的時間,在具體應用中要視情況而定。

        4 需要注意的問題

        在應用 時應注意以下幾點:

        ① 盡可能不使用循環任務切換。使用循環任務切換時要求有13個字節的堆棧區來保存任務內容(工作寄存器等)。如果由os_wait()函數來進行任務觸發,則不需要保存任務內容。由于正處于等待運行的任務并不需要等待全部循環切換時間結束,因此os_wait()函數可以產生一種改進的系統響應時間。

        ② 不要將時鐘節拍中斷速率設置得太高,設定為一個較低的數值可以增加每秒的時鐘節拍個數。每次時鐘節拍中斷大約需要100~200個CPU周期,因此應將時鐘節拍率設定得足夠高,以便使中斷響應時間達到最小化。

        ③ 在os_wait()函數中有3個參數: K_TMO、K_IVL和K_SIG。其中對于K_TMO和K_IVL的使用要加以區別。在使用時,兩者似乎差別不是很大。其實不然,兩者存在很大的區別:K_TMO是指等待一個超時信號,只有時間到了,才會產生一個信號。它產生的信號是不會累計的,產生信號后,任務進入就緒狀態。而K_IVL是指周期信號,每隔一個指定的周期,就會產生一次信號,產生的信號是可以累計的。這樣就使得在指定事件內沒有響應的信號,通過信號次數的疊加,在以后信號處理時,重新得以響應,從而保證了信號不會被丟失。而通過K_TMO方式進行延時的任務,由于某種原因信號沒有得到及時的響應,那么這樣就可能會丟失一部分沒有響應的信號。不過兩者都是有效的任務切換方式,在使用時要根據應用場合來確定對兩者的使用。

        結語

        實時操作系統既能保證對外界的信息以足夠快的速度進行相應處理,又能并行運行多個任務,具有實時性和并行性的特點,因此能很好地完成對多個信息的實時測量、處理,并進行相應的多個實時控制。任務切換是 的一個基本服務。本文對任務切換做了詳細的,在實際應用中還要對任務切換時的堆棧管理有一定了解,這樣才能更好地掌握任務切換的機制。共享資源的使用在多任務操作系統中是不可避免的,RTX51 TINY中沒有專門的處理共享資源函數,所以在實際應用中要視情況來應用文中提到的幾種方法。

        參考文獻
        [1] 朱珍民,隋雪青,段斌. 嵌入式實時操作系統及其應用開發[M]. 北京: 北京郵電大學出版社,2006:44-49.
        [2] Keil Software Inc.RTX51 Tiny User’s Guide,2004.
        [3] 徐愛鈞,彭秀華. 單片機高級語言C51 Windows環境編程與應用[M]. 北京:電子工業出版社,2001.


        上一頁 1 2 3 下一頁

        關鍵詞: 探討 分析 TINY RTX51 關于

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蓬莱市| 资兴市| 黔南| 长兴县| 九寨沟县| 汶上县| 石阡县| 贡觉县| 民乐县| 娄烦县| 诏安县| 内乡县| 阳高县| 措勤县| 祁门县| 兰坪| 正安县| 清镇市| 沁源县| 揭阳市| 宽城| 土默特右旗| 昌黎县| 海宁市| 凤庆县| 宁蒗| 石家庄市| 济宁市| 石门县| 开江县| 普洱| 离岛区| 华宁县| 泾川县| 正安县| 临沭县| 长海县| 新河县| 尼木县| 青阳县| 满城县|