新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 根据μc/Os-Ⅱ就绪表算法在ARM架构上的改动

根据μc/Os-Ⅱ就绪表算法在ARM架构上的改动

作者:时间:2011-06-12来源:网络收藏
  2.4 THUMB-2汇编指令实现
  用汇编语言写程序时的技巧:在最高优先级任务的设置、清除函数中,C语言运算符“︱=”对等汇编指令“orr”,“&=~”对等汇编指令“bic。这两条指令都可以进行预移位操作,大幅提高执行效率。可以查看反汇编源码,看C编译器是否利用了这一便利。
  在查找函数中,可以省去C语言程序中的内嵌汇编调用,减少冗余指令。示意伪代码如下:
  ldr rO, =OsRdyGrp;加载就绪表组变量OSRdyGrp地址
  可以看出,除了数据加载指令外,查找的核心算法仅3条指令(使用32个任务时,仅1条指令)。不过在实际设计算法的时候,还需要考虑指令流水线停顿,方能达到最佳的效果。
  2.5 μC/OS-Ⅱ2.84版相关源码介绍
  以下是翻译整理后的μC/OS-Ⅱ优先级查找算法源码(2.84版),较长的注释是添加的算法说明。
  clz最高优先级查找算法,与μC/OS-Ⅱ的新算法有所不同:返回的结果分别是8位、16位整数。这是因为8位已经不能表示>255的值;过程中clz算法更多地使用16或32位整数,以充分利用芯片性能。
  3 适用范围
  等待任务列表使用了与就绪表操作相似的过程,注意要同时更改其数据类型和算法。算法虽然是在Cortex—M3上执行的,但适用于ARM9及其以后芯片。支持ARM指令集的芯片,可以在C语言中使用内嵌汇编,不必再编写汇编查找函数。
  本文所叙述的算法适用于下述两种情况。
  ①使用μC/OS-Ⅱ系统:
  ◆要求更多的任务优先级;
  ◆要求产品性能优越或是时间关键的应用,想进一
  步提高效率;
  ◆学习、研究或希望优化μC/OS-Ⅱ以扩展其应用范围。
  ②未使用μC/OS-Ⅱ系统:
  ◆移植改造其他操作系统的
  ◆编写新操作系统或执行调度程序;
  ◆编程爱好者借鉴、改进编程方法。
  结 语
  Cortex-M3推出时,笔者就认定它是单片机过渡到ARM的有力工具,其小存储量使得它更适合用小型实时系统。在学习μC/OS-Ⅱ的过程中,发现其就绪表操作算法经过改动或许更好,于是就做了本文所述的试验。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭