新聞中心

        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 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 成都市| 牟定县| 格尔木市| 乐至县| 长治市| 清新县| 山东省| 南丰县| 苍南县| 峨眉山市| 苗栗市| 安宁市| 扎兰屯市| 贵定县| 塔河县| 峡江县| 西峡县| 江永县| 宾阳县| 兴安县| 万年县| 霞浦县| 宁明县| 曲松县| 共和县| 吐鲁番市| 深圳市| 濉溪县| 汉沽区| 理塘县| 上杭县| 景东| 吴旗县| 雷波县| 呼伦贝尔市| 庆城县| 获嘉县| 沧源| 德清县| 华蓥市| 芷江|