解讀uCos中優先順序判定表OSUnMapTbl原理

2021-07-30 20:38:21 字數 1805 閱讀 2472

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採用基於固定優先順序的佔先式排程方式,是乙個實時 多工的作業系統。系統中的每個任務具有...