转:http://blog.csdn.net/wchp314/article/details/5416476

uCOS-II的任务控制块

标签:  uCOS-II  2009-12-01 14:45

任务控制块:

任务控制块是一个结构体数据结构,用于记录各个任务的信息。当任务的CPU的使用权被剥夺时,uCOS-II用它来保存任务的当前状态。当任务重新获得CPU的使用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差的继续执行。任务控制块全部存放在RAM中。

typedef struct os_tcb {

OS_STK          *OSTCBStkPtr;          /* 指向当前任务使用的堆栈的栈顶。uCOS-II允许每个任务堆栈的大小可以不同,这样用户可以根据实际需要定义任务堆栈的大小,可以节省RAM的空间。另外,由于OSTCBStkPtr是该结构体中的第一个变量,所以可以使用汇编语言方便的访问,因为其偏移量是0。当切换任务时,用户可以容易的知道就绪任务中优先级最高任务的栈顶。*/

#if OS_TASK_CREATE_EXT_EN > 0u

void            *OSTCBExtPtr;           /* 指向用户定义的扩展任务控制块*/

OS_STK          *OSTCBStkBottom;        /*指向任务堆栈的栈底。需要考虑一下你使用的MCU的栈指针是按照从高到低还是从低到高变化的。这个变量在测试任务需要的栈空间的时候需要使用。 */

INT32U           OSTCBStkSize;          /* 同样,该变量也是测试任务需要的栈空间需要。需要注意的是,该变量存储的是指针元的数目,而不是字节数目。*/

INT16U           OSTCBOpt;              /* 传给函数OSTaskCreateExt()的选择项。目前有OS_TASK_OPT_STK_CHK, OS_TASK_OPT_STK_CLR, OS_TASK_OPT_SAVE_EP  */

INT16U           OSTCBId;               /* Task ID (0..65535),目前没有使用。*/

#endif

struct os_tcb   *OSTCBNext;

struct os_tcb   *OSTCBPrev;             /* 指向TCB的双向链表的前后链接,在OSTimeTick()中使用,用来刷新各任务的任务延迟变量.OSTCBDly。*/

#if (OS_EVENT_EN) || (OS_FLAG_EN > 0u)

OS_EVENT        *OSTCBEventPtr;         /* 指向事件控制块的指针。*/

#endif

#if (OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0u)

OS_EVENT       **OSTCBEventMultiPtr;    /* 指向多重事件控制块的指针*/

#endif

#if ((OS_Q_EN > 0u) && (OS_MAX_QS > 0u)) || (OS_MBOX_EN > 0u)

void            *OSTCBMsg;              /* 指向传递给任务的消息的指针。*/

#endif

#if (OS_FLAG_EN > 0u) && (OS_MAX_FLAGS > 0u)

#if OS_TASK_DEL_EN > 0u

OS_FLAG_NODE    *OSTCBFlagNode;         /*指向事件标志的节点的指针。 */

#endif

OS_FLAGS         OSTCBFlagsRdy;         /* 当任务等待事件标志组时,该变量是使任务进入就绪态的事件标志。*/

#endif

INT32U           OSTCBDly;              /* 记录事件延时或者挂起的时间。*/

INT8U            OSTCBStat;             /*任务状态字。比如就绪态、等待*/

INT8U            OSTCBStatPend;         /*任务挂起状态。*/

INT8U            OSTCBPrio;             /*任务优先级 */

INT8U            OSTCBX;                /* 计算优先级用*/

INT8U            OSTCBY;                /*计算优先级用*/

#if OS_LOWEST_PRIO <= 63u

INT8U            OSTCBBitX;             /*计算优先级用*/

INT8U            OSTCBBitY;             /*计算优先级用*/

#else

INT16U           OSTCBBitX;             /*计算优先级用*/

INT16U           OSTCBBitY;             /*计算优先级用*/

#endif

#if OS_TASK_DEL_EN > 0u

INT8U            OSTCBDelReq;           /* 表示任务是否需要删除。*/

#endif

#if OS_TASK_PROFILE_EN > 0u

INT32U           OSTCBCtxSwCtr;         /* 任务切换的次数。*/

INT32U           OSTCBCyclesTot;        /* 任务运行的时钟周期数。*/

INT32U           OSTCBCyclesStart;      /* 任务恢复开始的循环计数器。*/

OS_STK          *OSTCBStkBase;          /* 指向任务栈开始的指针。*/

INT32U           OSTCBStkUsed;          /*使用的栈的字节数 */

#endif

#if OS_TASK_NAME_EN > 0u

INT8U           *OSTCBTaskName;

#endif

#if OS_TASK_REG_TBL_SIZE > 0u

INT32U           OSTCBRegTbl[OS_TASK_REG_TBL_SIZE];

#endif

} OS_TCB;

 

UCOSII时间任务块的更多相关文章

  1. uC/OS-II时间(OS_time)块

    /*************************************************************************************************** ...

  2. png文件格式详解,获取文件的修改时间,创作时间

    http://dev.gameres.com/Program/Visual/Other/PNGFormat.htmhttp://www.360doc.com/content/11/0428/12/10 ...

  3. vsCode与Hubilder中自定义代码块

    平常测试vue的一些属性时总要新增代码,引入文件,麻烦,顾自定义代码块来实现快速新增测试 一.打开设置 1.1 vsCode设置 点击后选择代码块所属的文件类型,比如在html中则选择html类型配置 ...

  4. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  5. 初次了解的Java多线程

    0.1熟悉多线程 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能 ...

  6. I/O优化篇

    转载:http://blog.csdn.net/gzh0222/article/details/9227393 很不错 1.系统学习 IO性能对于一个系统的影响是至关重要的.一个系统经过多项优化以后, ...

  7. Hadoop Fsimage 和 editlog

    在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ ...

  8. Hadoop学习(2)-- HDFS

    随着信息技术的高度发展,数据量越来越多,当一个操作系统管辖范围存储不下时,只能将数据分配到更多的磁盘中存储,但是数据分散在多台磁盘上非常不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,因此诞 ...

  9. C++中关于new及内存地址的思考

    OJ题刷多了,每次都是直接分配内存,那么,你还记得怎么动态分配内存吗? ———————————————————————————————————— 我们知道,使用malloc/calloc等分配内存的函 ...

随机推荐

  1. jade的特点

    jade特点 1超强的可读性 2灵活易用的缩进 3块扩展 4代码默认进过编码处理,以增强安全性 5编译及运行时的上下文错误报告 6命令行编译支持 7html5模式(使用 !!!5文档类型) 8可选的内 ...

  2. Linux之文件过滤分割与合并

    文件过滤分割与合并 1.grep命令 grep(global regular expression print)全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,它能使用正则表达式搜索文本, ...

  3. java判断是否为汉字

    java判断是否为汉字   public static boolean isChinese(String str) { String regEx = "[\u4e00-\u9fa5]&quo ...

  4. 笔记整理--玩转robots协议

    玩转robots协议 -- 其他 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/7/14 20:24:07) 玩转robots协议 2013年2月8日北 ...

  5. margin的简单应用

    今晚学了盒模型的marg部分,简单仿下京东的官网首页部分 第一次制作,尽管看来实在惨不忍睹,毕竟娘不嫌儿丑,之后多加努力吧,这几天尽量加快学习进度,能单独制作一张精美的网页最好 附上代码 <!D ...

  6. 简述Hibernate三种开发方式

    1.由domain object->mapping->db(官方推荐) 2.由db开始,用工具生成mapping和domain object(使用较多) 3.由映射文件开始

  7. Unity 5 Stats窗口

    Unity5的 Statistics上的统计信息和Unity4 有一些区别, Statistics窗口,全称叫做 Rendering Statistics Window,即渲染统计窗口(或渲染数据统计 ...

  8. php常用图片处理类

    <?php /** * 已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,但PNG格式的图片无法透明.用imagecreate函数创建 ...

  9. Java反射机制示例

    链接: http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html package com.stono.reftest; imp ...

  10. Windows 10 IoT Core环境配置中的那些坑

    我使用的设备是Raspberry Pi 3B,想来国内的嵌入式玩具应该还是树莓派最常见吧.这段时间一直在捣鼓Win10 IoT,结果发现,从安装一直到编码调试一路下来全都是坑.写这篇东西一个是为了备忘 ...