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的代碼,提高了處理器的性能。本文引用地址:http://www.104case.com/article/150928.htm
評論