您的位置:首页 > 运维架构 > 网站架构

uC/OS-II内核架构解析---uC/OS-II任务管理

2016-07-12 22:08 495 查看


1. C可执行代码结构




 

    (1)代码段.text:存放CPU执行的机器指令,通常.text是可共享且只读的。

    (2)数据段.data:.rodata(常量数据)、.rwdata(已初始化全局变量、静态变量)。

    (3)未初始化数据段.bss:未初始化的全局变量、静态变量。

    (4)栈.stack:存放函数参数、局部变量及任务切换时的上下文。

    (5)堆.heap:用于动态内存分配。


2. 任务结构




 

      在uC/OS-II中,任务是事件运行和管理的基本单元。一个uC/OS-II任务至少包含程序代码、栈和TCB,还可选择性使用相当于堆的动态内存空间。程序运行时,uC/OS-II中的任务相当于可执行代码(可单独运行的单元)。

      uC/OS-II任务的各部分如何管理???


3. 任务栈

任务栈数据类型:typedef unsigned short OS_STK
任务栈增长方向:#define OS_STK_GROWTH 0/1
任务栈基本功能:???


4. 任务控制块


(1) TCB描述

      主要用来存储任务的当前属性。(问:任务第一次被调度时,该如何运行?)


(2) TCB主要成员

任务栈空间位置:OSTCBStkPtr、OSTCBStkBottom、OSTCBStkSize;
任务通信与同步:OSTCBEventPtr、OSTCBMsg;
任务事件组标志:OSTCBFlagNode、OSTCBFlagsRdy;
任务等待/阻塞:OSTCBDly、OSTCBPendTO;
任务当前状态:OSTCBStat;
任务优先级:OSTCBPrio;

(3)TCB全局变量
OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];
OS_EXT OS_TCB OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
OS_EXT OS_TCB *OSTCBFreeList;
OS_EXT OS_TCB *OSTCBList;
OS_EXT OS_TCB *OSTCBHighRdy;
OS_EXT OS_TCB *OSTCBCur;


5. 任务状态切换




 


6. 任务管理函数

  OS_TASK.C:11个函数
OSTaskCreate();
OSTaskCreateExt();
OSTaskDel();
OSTaskDelReq();
OSTaskChangePrio();
OSTaskSuspend();
OSTaskResume();
OSTaskNameGet();
OSTaskNameSet();
OSTaskStkChk();
OS_TaskStkClr();
OSTaskQuery();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: