原创 UCOS-II 中常用变量说明及程序相关

2009-2-26 17:40 2367 1 1 分类: MCU/ 嵌入式

1, OSRunning <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


   ucos_II.h中定义,声明为BOOLEAN数据类型,这个变量用于指示OS是否正在运行。


   <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1为运行状态,反之为未运行态。


2, OSPrioCur


   ucos_II.h中定义,声明为INT8U数据类型,表示当前任务的优先级。


3, OSPrioHighRdy


   ucos_II.h中定义,声明为INT8U数据类型,表示最高优先级任务的优先级。


4, OSTCBHighRdy


   ucos_II.h中定义,声明为一个OS_TCB类型的指针,指向最高优先级任务TCB


   原型为:OS_TCB  *OSTCBHighRdy;


5, OSTCBCur


   ucos_II.h中定义,声明为一个OS_TCB类型的指针,指向当前正在运行任务TCB


   原型为:OS_TCB  *OSTCBCur;


6, OSRdyGrp


    ucos_II.h中定义,声明为INT8U的数据类型,就绪任务组,在找出进入就绪态的优先级中运用,用来找出进入就绪态任务的优先级。在任务调度时用来找出最高优先级的任务。从而进行任务切换。


7, OSRdyTbl[ ]


     ucos_II.h中定义,声明为INT8U的数据类型,它是一个一维数组,存放就绪任务的任务表。同OSRdyGrp配合使用,找出最高优先级的任务。


8, OSIntExitY


9, OSUnMapTbl[ ]


10OSTCBPrioTbl[OSPrioHighRdy ]


ucos_II.h中定义,声明为OS_TCB类型指针数组,创建任务块的指针表。原型如下:


 


11 OSTCBX;  //用于快速方问就绪表的数据。


OSTCBY;


OSTCBBitX;


OSTCBBitY;


 


12OSTCBList //为任务控制块链表的头指针。


OSTCBFreeList; //为空闲任务控制块链表的头指针,在OSInit() 中首先要初始化空任务指针,而在调用创建新的任务后,新的任务将会在空闲任务链表中获得一个任务控制块作为新的任务的任务控制块。而OSTCBFreeList将会更新头指针,使下一个空闲任务块做为头指针。


 


说明:任务控制块采用了双向链表,为了加快访问任务控制块的速度,UCOSII还定义了另一个数组 OSTCB *OSTCBTbl[ ] ;专门用来以任务的优先级为顺序在各个数组元素里存放指赂各个任务控制块的指针,这样在访问任务的任务控制块时,就可以非常快,而不必遍历任务控制块链表了。


 


进行任务调度的依据就是任务就绪表。OSRdyTbl[ ]; 为了便于就绪表的查找,另外定义了一个变量INT8U  OSRdyGrp; 为了中加快运算速度双定议了一个数组         OSMapTbl[ ]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


 


同样OSUnMapTbl[ ];也是为了加速优先级定义的一个数组。


 


 


13,对于信号量,消息邮箱,消息队列构成的事件数据结构,作为功能完善的事件处理,应该对系统的等待任务进行一定的管理。这个管理的功能包括两个方面。一是要对等待事件的所有任务进行记录并排序。二是应该允许任务有一定的等待时限。对于这些事件任务的记录和处理,UCOSII采用了与任务就绪表类似的方法,使用一个数组INT8U OSEventTbl[ ]作为记录等待事件任务的记录表,即等待任务表。同样为了加快对此表的反应速度,增加了INT8U OSEventGrp.这个事件表和任务就绪表格式一样。叫任务等待表。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
1
关闭 站长推荐上一条 /3 下一条