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