μC/OS的任务调度实现方法及其在PowerPC上的优化
lwzr3,128(r5)//OSRdy.Grp在结构体中具有固定偏移量 本文引用地址: //m.amcfsurvey.com/article/148478.htm
cntlzwr3,r3//数出OSRdyGrp的前导零数目
slwir6,r3,2//得到OSRdyTbl的地址偏移量
lwzxr4,r6,r5//通过结构体指针,读取OSRdy.Tbl的对应字
cntlzwr4,r4//计算OSRdyTbl对应字的前导零数目
slwir3,r3,5//任务优先级高5位移位
addr3,r4,r3//和优先级低5位相加,得到完整优先级
blr//返回
}
在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软件算法是很不够的,应该利用相关硬件算法指令。
评论