新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > uCOS-II任務調度在PowerPC的移植

        uCOS-II任務調度在PowerPC的移植

        作者: 時間:2016-10-08 來源:網絡 收藏

        4 改進擴展任務數的優先級調度性能

        當對μC/OSII支持的任務數進行擴展時,按照μC/OSII原有的做法,需要按照高低字節分別查找OSUnMapTbl對照表。任務數為256時,尋找最高優先級就緒任務的函數將需要運行約35條指令。數出前導零數目的指令在這種情況下的作用將更加顯著,對于32位PowerPC處理器,精心設計的代碼可以做到僅需10條指令就將任務數擴展到1024個。

        此時OSRdyGrp擴展為32位,OSrdyTbl擴展成32個32位的數組。從OSRdyGrp得到的前導零數目,就是任務優先級高5位的值,乘以4可以得到該字的相對偏移地址;在OSRdyTbl中,定義高位對應高優先級任務,低位對應低優先級任務,則其前導零數目就是任務優先級低5位的值,和高5位的值移位相加就得到完整的任務優先級。通過將OSRdyGrp和OSRdyTbl定義成結構體,利用結構體首地址的相對尋址來分別讀取其數值,可以減少一次取地址的操作。

        尋找最高優先級就緒態的最終代碼如下:

        在64位的PowerPC 更有cntlzd(Count Leading Zero Double word)指令,一次就可以找出64個任務中優先級最高的那個,就更沒有必要使用μC/OSII中的算法了。

        5 總結

        RTOS實時內核μC/OS和μC/OSII中,任務調度算法巧妙,性能優異,在嵌入式應用領域很有影響力,被移植到各種CPU上。然而由于是為8位CPU設計的,對于那些具有優先級硬件算法指令的16/32/64位CPU,μC/OSII的軟件算法就完全失去了優勢。應該利用這類CPU的特有指令,優化任務調度算法,使RTOS的實時性達到最佳。對于這類處理器,僅移植μC/OSII軟件算法是很不夠的,應該利用相關硬件算法指令。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东山县| 大石桥市| 灵武市| 襄樊市| 巴彦淖尔市| 双江| 三穗县| 江山市| 松桃| 苏州市| 蓬溪县| 米林县| 宾川县| 皮山县| 柏乡县| 扎赉特旗| 平阳县| 博野县| 门头沟区| 周至县| 临邑县| 宜兴市| 泽库县| 苍梧县| 通州市| 铜川市| 老河口市| 宜兴市| 陕西省| 开封市| 台南县| 菏泽市| 罗甸县| 静海县| 天长市| 怀集县| 赫章县| 富民县| 浦北县| 弥勒县| 宣威市|