Ucos-ii中獲取最高優先級的原理(任務和事件)

Ucos-ii中獲取最高優先級的原理(任務和事件)
2009-08-02 19:12

1.      任務優先級表是按照由左至右,由上至下的順序增長的,且優先級號越小優先級越高。

2.      任務優先級存儲在一個字節型數組裏,數組大小爲8,其還有一個行表,即一個字節單元,用於確定在數組的哪行有任務。

3.      任務優先級由一個字節的低6個bit組成,其最低優先級爲2^6-1 = 63(優先級範圍爲0~63),其中高3bit對應行表,低3bit對應數組中某字節單元。

4.      位掩碼OSMapTbl[8],下標0~7對應值00000001、00000010、00000100、00001000、00010000、00100000、01000000、10000000,其作用是屏蔽其他bit值,下標0~7對應行表(高3位)和優先級表(低3位)。

5.      OSUnMapTbl[]數組用於查找最高優先級,其經過精心設計。

首先,找行表值在OSUnMapTbl[]中的對應位置的值x

然後,找優先級表第x行值在OSUnMapTbl[]中對應位置的值y

—查找方法:由於行表值爲8bit,則高4bit對應OSUnMapTbl[]中行值,低4bit對應OSUnMapTbl[]中列值;對應優先級表查找方法同行表查找方法。

最後,prio = x<<3 + y。

注:OSUnMapTbl[]數組構造方法:

--由優先級表的構造,即越靠左越靠上的優先級越高可知:

1.低4bit無值,那麼就高4bit的最低爲1值的位確定-例:0000-0, 0001-4, 0010-5,0011-4……

2.低4bit有值,那麼就低4bit的最低爲1值的位確定-例:00000000-0,10010001-0,00111010-1,00001011-0……

3.由1和2有第1列值爲0,4,5,4,6,4,5,4,7,4,5,4,6,4,5,4;第2列全爲0,第3列全爲1,第4列全爲0,第5列全爲2,第6列全爲0,第7列全爲1,第8列全爲0,第9列全爲3,第10列全爲0,第11列全爲1,第12列全爲0,第13列全爲2,第14列全爲0,第15列全爲1,第16列全爲0。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章