Cortex-M3的μC/OS-II任務(wù)調(diào)度硬件指令實(shí)現(xiàn)
假設(shè)在OSRdyTb1[]的低32位數(shù)據(jù)中,00000000000000000000000000001100B表示優(yōu)先級(jí)為2的任務(wù)和優(yōu)先級(jí)為3的任務(wù)處于就緒態(tài),現(xiàn)在要通過指令RBIT和CLZ找出優(yōu)先級(jí)為2的任務(wù)并調(diào)度運(yùn)行。運(yùn)行RBIT后數(shù)據(jù)變?yōu)椋?0110000000000000000000000000000000000。運(yùn)行CLZ后計(jì)算出前導(dǎo)零的個(gè)數(shù)為2,表明優(yōu)先級(jí)為2的任務(wù)處于最高就緒態(tài)。
μC/OS-II中的任務(wù)調(diào)度是通過查兩次表完成最高優(yōu)先級(jí)任務(wù)的查找,方法如下:
上述代碼在MDK4.12軟件中測(cè)試,系統(tǒng)時(shí)鐘采用8 MHz,按照此方法進(jìn)行任務(wù)調(diào)度可節(jié)省0.5μs,同時(shí)還減少了用來存放OSUnMapTb1[]的256字節(jié)的空間,縮短了代碼運(yùn)行時(shí)間,提高了CPU的利用率。此方法在μC/OS-II的任務(wù)通信中也同樣適用。在此不再贅述。
結(jié)語
本文主要對(duì)μC/OS-II中的任務(wù)調(diào)度算法作了分析,特別闡述了OSUnMapTb1[]表是如何構(gòu)成的,同時(shí)介紹了基于ARM Cortex-M3處理器平臺(tái)的μC/OS-II的任務(wù)調(diào)度硬件實(shí)現(xiàn)方法,簡(jiǎn)化了μC/OS-II的代碼,提高了處理器的性能。本文引用地址:http://m.butianyuan.cn/article/150928.htm
評(píng)論