/*
*****************************
* uC/OS-II 学习ucosii
* File : OS_CORE.C
* By : Jean J. Labrosse
* Version : V2.92.07
*****************************
*/
/*
OSOSRdyTbl[x] 任务就绪列表。μCOS-II规定,
每个就绪的任务,在任务就绪表中的对应位置为1,反之为0;
每个位对应一个任务优先级1就绪0休眠;8*8=64个;
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 “任务就绪组”。
int y = OSUnMapTbl[OSRdyGrp],找到最高优先级的列
确定了优先级的次低三位(bit5-bit3);也可以叫高三位;
int x = OSUnMapTbl[OSRdyTbl[y]],找到最高优先级的行
确定了优先级的低三位(bit2-bit0);也可以叫低三位;
00111111=63,6bits一共表示64个优先级;
将高三位左移3位,加上低三位,可得最高优先级;
OSPrioHighRdy = (INT8U)((y << 3u) + OSUnMapTbl[OSRdyTbl[y]]);
OSUnMapTbl[256] 的作用是,
枚举出2的8次方(8bits)中排列组合的情况下的最高优先级,
不用计算,直接查表获取最高优先级,保证最高效稳定的实时性。
*/
/*$PAGE*/
/*
*********************************************************************************************************
** 【issue 1】 总览所有全局变量和链表的关联
** 任务控制块TCB的定义 short for Task Control Block
** 每个任务在OS内核中是一个重要的内核对象,在内核中的体现是以这个tcb结构体形式。
** 主要对象是,任务堆栈,任务管理链表,任务消息处理关联的变量,任务调度算法关联的变量。20240609;
*********************************************************************************************************