新聞中心

        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 關于

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平安县| 郯城县| 焦作市| 建德市| 肇庆市| 宣威市| 东乡| 偏关县| 永新县| 德惠市| 桃源县| 肇州县| 丰原市| 桦甸市| 巴林右旗| 孟津县| 泌阳县| 河南省| 柘荣县| 南安市| 巴林右旗| 莫力| 云南省| 贡觉县| 南宁市| 本溪市| 华亭县| 内乡县| 沙湾县| 共和县| 宁化县| 铜梁县| 无极县| 潢川县| 蒲城县| 台湾省| 丰镇市| 岱山县| 平南县| 罗江县| 西充县|