μC/OS的任務(wù)調(diào)度實現(xiàn)方法及PowerPC上的優(yōu)化
lwzr3,128(r5)//OSRdy.Grp在結(jié)構(gòu)體中具有固定偏移量
cntlzwr3,r3//數(shù)出OSRdyGrp的前導(dǎo)零數(shù)目
slwir6,r3,2//得到OSRdyTbl的地址偏移量
lwzxr4,r6,r5//通過結(jié)構(gòu)體指針,讀取OSRdy.Tbl的對應(yīng)字
cntlzwr4,r4//計算OSRdyTbl對應(yīng)字的前導(dǎo)零數(shù)目
slwir3,r3,5//任務(wù)優(yōu)先級高5位移位
addr3,r4,r3//和優(yōu)先級低5位相加,得到完整優(yōu)先級
blr//返回
}
在64位的PowerPC 更有cntlzd(Count Leading Zero Double word)指令,一次就可以找出64個任務(wù)中優(yōu)先級最高的那個,就更沒有必要使用μC/OSII中的算法了。
5 總結(jié)
RTOS實時內(nèi)核μC/OS和μC/OSII中,任務(wù)調(diào)度算法巧妙,性能優(yōu)異,在嵌入式應(yīng)用領(lǐng)域很有影響力,被移植到各種CPU上。然而由于是為8位CPU設(shè)計的,對于那些具有優(yōu)先級硬件算法指令的16/32/64位CPU,μC/OSII的軟件算法就完全失去了優(yōu)勢。應(yīng)該利用這類CPU的特有指令,優(yōu)化任務(wù)調(diào)度算法,使RTOS的實時性達(dá)到最佳。對于這類處理器,僅移植μC/OSII軟件算法是很不夠的,應(yīng)該利用相關(guān)硬件算法指令。
評論