Cortex-M3的μC/OS-II任务调度硬件指令实现
假设在OSRdyTb1[]的低32位数据中,00000000000000000000000000001100B表示优先级为2的任务和优先级为3的任务处于就绪态,现在要通过指令RBIT和CLZ找出优先级为2的任务并调度运行。运行RBIT后数据变为:00110000000000000000000000000000000000。运行CLZ后计算出前导零的个数为2,表明优先级为2的任务处于最高就绪态。
μC/OS-II中的任务调度是通过查两次表完成最高优先级任务的查找,方法如下:

上述代码在MDK4.12软件中测试,系统时钟采用8 MHz,按照此方法进行任务调度可节省0.5μs,同时还减少了用来存放OSUnMapTb1[]的256字节的空间,缩短了代码运行时间,提高了CPU的利用率。此方法在μC/OS-II的任务通信中也同样适用。在此不再赘述。
结语
本文主要对μC/OS-II中的任务调度算法作了分析,特别阐述了OSUnMapTb1[]表是如何构成的,同时介绍了基于ARM Cortex-M3处理器平台的μC/OS-II的任务调度硬件实现方法,简化了μC/OS-II的代码,提高了处理器的性能。本文引用地址:https://www.eepw.com.cn/article/150928.htm
评论