ososrdytbl[0]的bit7-bit0對應於優先順序7-0,
ososrdytbl[1]的bit7-bit0對應於優先順序15-8,
ososrdytbl[2]的bit7-bit0對應於優先順序23-16,
ososrdytbl[3]的bit7-bit0對應於優先順序31-24,
ososrdytbl[4]的bit7-bit0對應於優先順序39-32,
ososrdytbl[5]的bit7-bit0對應於優先順序47-40,
ososrdytbl[6]的bit7-bit0對應於優先順序55-48,
ososrdytbl[7]的bit7-bit0對應於優先順序63-56
osrdygrp確定了優先順序的次低三位(bit5-bit3),ososrdytbl確定了優先順序的低三位(bit2-bit0),
osrdygrp = 0x011; //0b00010001
osrdytbl[0] = 0x0a; //0b00001010
osrdytbl[4] = 0x01; //0b00000001
計算出存在的幾個優先順序為;0*8+1=1,0*8+3=3,4*8+0=32
假設osrdygrp最低位為1的是x位,osrdytbl[x]最低為1的是y位,
則優先順序=x*8+y
因此只要知道了上述的x,y就可算出最高優先順序
osunmaptbl就是將0x00-0xff每個資料中最低位為1的位數一一枚舉出來
int8u const osunmaptbl[256] = ;
其中第一行
0u==0x00 ==00000000b 最低位為1的位數為 bit0==0u (其實為空,空的情況預設為0,不影響計算)
1u==0x01 ==00000001b 最低位為1的位數為 bit0==0u
2u==0x02 ==00000010b 最低位為1的位數為 bit1==1u
3u==0x03 ==00000011b 最低位為1的位數為 bit0==0u (有兩個為1的位,bit0,bit1,取最小的,因為osrdygrp或ososrdytbl中最小的位數 對應的優先順序越大)
4u==0x04 ==00000100b 最低位為1的位數為 bit2==2u
5u==0x05 ==00000101b 最低位為1的位數為 bit0==0u
6u==0x06 ==00000110b 最低位為1的位數為 bit1==1u
7u==0x07 ==00000111b 最低位為1的位數為 bit0==0u
8u==0x08 ==00001000b 最低位為1的位數為 bit3==3u
9u==0x09 ==00001001b 最低位為1的位數為 bit0==0u
au==0x0a ==00001010b 最低位為1的位數為 bit1==1u
bu==0x0b ==00001011b 最低位為1的位數為 bit0==0u
cu==0x0c ==00001100b 最低位為1的位數為 bit2==2u
du==0x0d ==00001101b 最低位為1的位數為 bit0==0u
eu==0x0e ==00001110b 最低位為1的位數為 bit1==1u
fu==0x0f ==00001111b 最低位為1的位數為 bit0==0u
其他行類推,能得出上表,其實通過上面的推導,可以看出,上表中主要是求0~255(0x00~0xff)之間數的最低位為1的所在的位數,
x = osunmaptbl[osrdygrp];
y = osunmaptbl[osrdytbl[x]];
最高優先順序為x*8+y
優先順序判定表解讀
優先順序判定表osunmabtbl,其內容如下 int8u const osunmaptbl 0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0...
ucos 四 優先順序
define os lowest prio 7 定義最小優先順序 小於63 define os stat prio os lowest prio 1 統計任務 可選 define os idle prio os lowest prio 空閒任務 必須 優先順序最低 osinit 呼叫如下 os in...
uC OS優先順序反轉及解決
1 uc os ii的執行機制 在嵌入式系統的應用中,實時性是乙個重要的指標,而優先順序翻轉是影響系統實時性的重要問題。本文著重分析優先順序翻轉問題的產生和影響,以及在uc os ii中的解決方案。uc os ii採用基於固定優先順序的佔先式排程方式,是乙個實時 多工的作業系統。系統中的每個任務具有...