uCOS-II 学习笔记之任务管理--------任务控制块OS_TCB
任务控制块是任务管理的核心数据结构,操作系统在启动的时候,首先要在内存中创建一定数量的任务控制块。
以下是OS_TCB的数据结构:
1 typedef struct os_tcb { 2 OS_STK *OSTCBStkPtr; /* Pointer to current top of stack */ 3 4 #if OS_TASK_CREATE_EXT_EN > 0u 5 void *OSTCBExtPtr; /* Pointer to user definable data for TCB extension */ 6 OS_STK *OSTCBStkBottom; /* Pointer to bottom of stack */ 7 INT32U OSTCBStkSize; /* Size of task stack (in number of stack elements) */ 8 INT16U OSTCBOpt; /* Task options as passed by OSTaskCreateExt() */ 9 INT16U OSTCBId; /* Task ID (0..65535) */ 10 #endif 11 12 struct os_tcb *OSTCBNext; /* Pointer to next TCB in the TCB list */ 13 struct os_tcb *OSTCBPrev; /* Pointer to previous TCB in the TCB list */ 14 15 #if (OS_EVENT_EN) 16 OS_EVENT *OSTCBEventPtr; /* Pointer to event control block */ 17 #endif 18 19 #if (OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0u) 20 OS_EVENT **OSTCBEventMultiPtr; /* Pointer to multiple event control blocks */ 21 #endif 22 23 #if ((OS_Q_EN > 0u) && (OS_MAX_QS > 0u)) || (OS_MBOX_EN > 0u) 24 void *OSTCBMsg; /* Message received from OSMboxPost() or OSQPost() */ 25 #endif 26 27 #if (OS_FLAG_EN > 0u) && (OS_MAX_FLAGS > 0u) 28 #if OS_TASK_DEL_EN > 0u 29 OS_FLAG_NODE *OSTCBFlagNode; /* Pointer to event flag node */ 30 #endif 31 OS_FLAGS OSTCBFlagsRdy; /* Event flags that made task ready to run */ 32 #endif 33 34 INT32U OSTCBDly; /* Nbr ticks to delay task or, timeout waiting for event */ 35 INT8U OSTCBStat; /* Task status */ 36 INT8U OSTCBStatPend; /* Task PEND status */ 37 INT8U OSTCBPrio; /* Task priority (0 == highest) */ 38 39 INT8U OSTCBX; /* Bit position in group corresponding to task priority */ 40 INT8U OSTCBY; /* Index into ready table corresponding to task priority */ 41 OS_PRIO OSTCBBitX; /* Bit mask to access bit position in ready table */ 42 OS_PRIO OSTCBBitY; /* Bit mask to access bit position in ready group */ 43 44 #if OS_TASK_DEL_EN > 0u 45 INT8U OSTCBDelReq; /* Indicates whether a task needs to delete itself */ 46 #endif 47 48 #if OS_TASK_PROFILE_EN > 0u 49 INT32U OSTCBCtxSwCtr; /* Number of time the task was switched in */ 50 INT32U OSTCBCyclesTot; /* Total number of clock cycles the task has been running */ 51 INT32U OSTCBCyclesStart; /* Snapshot of cycle counter at start of task resumption */ 52 OS_STK *OSTCBStkBase; /* Pointer to the beginning of the task stack */ 53 INT32U OSTCBStkUsed; /* Number of bytes used from the stack */ 54 #endif 55 56 #if OS_TASK_NAME_EN > 0u 57 INT8U *OSTCBTaskName; 58 #endif 59 60 #if OS_TASK_REG_TBL_SIZE > 0u 61 INT32U OSTCBRegTbl[OS_TASK_REG_TBL_SIZE]; 62 #endif 63 } OS_TCB;
转载于:https://www.cnblogs.com/xiaofeng6636/p/3512952.html
uCOS-II 学习笔记之任务管理--------任务控制块OS_TCB相关推荐
- ucos iii学习笔记——为什么选择ucos iii
首先我们得先讨论前后台系统和RTOS(Real Time OS)的区别.前后台系统,也即是我们所说的裸机程序,它的结构通常包括一个死循环和若干个中断服务程序,直接上图,我们有一个直观认识: 假如Tas ...
- 工程师的NIOS II学习笔记(转)
来源:嵌入式在线 作者:山城棒棒儿军 发布时间:2009-09-22 12:29:31 Nios Development Board Reference Manual, Stratix II Edit ...
- UC/OS III操作系统学习笔记
UCOS操作系统学习笔记 1.UCOSIII任务 1.1任务管理 1.2 任务创建和删除.挂起和恢复 1.3 系统内部任务 2.UCOSIII中断和时间管理 2.1 中断管理 2.2 时间管理 3.U ...
- ucos II任务管理之三:删除任务
ucos II任务管理之三:删除任务 有了前面的经历之后,mcu21决定全面地学习了任务的管理.这样在项目编程中才能做到"信手拈来". 在ucos II 里,创建一个任务之后,可以 ...
- 实时操作系统UCOS学习笔记1----UCOSII简介
前面我们所有的实验都是跑的裸机程序(裸奔),从本章开始,我们开始介绍UCOSII(实时多任务操作系统内核). UCOSII简介 UCOSII的前身是UCOS,最早出自于1992年美国嵌入式系统专家Je ...
- UCOS内核结构学习笔记
呵呵,大家好,暑假一直在实验室,校园网一直打不开我的BLOG,全国大赛结束后,我虽然没有参加,但是我也是经历了的,只是没有参赛而已.呵呵,感觉全国大赛不是比各高校学生的能力,而是各高校老师的能力.相信 ...
- ucos II任务管理之一:挂起任务
Ucos II 任务管理之一 创建好了任务之后,就已经初步跨进了ucos II 的编程了.随着进一步的编程,发现学会创建了任务还是不够的. 在我的项目里,需要实现485通信功能,我创建了任务1用于串口 ...
- 简单入门——深度学习笔记(Part II)
更多深度文章,请关注:https://yq.aliyun.com/cloud 作者介绍:Deepak Shah Deepak Shah毕业于德克萨斯奥斯汀分校,徒步旅行爱好者,目前是深度学习\数据科学 ...
- 实时操作系统UCOS学习笔记5----UCOSIII移植
在2009年Micrium公司推出了UCOSIII,相对于UCOSII性能有了进一步的提升,支持时间片轮转调度,极短的关中断事件等.本章讲解如何在STM32F103开发板上移植UCOSIII操作系统. ...
- B站台湾大学郭彦甫|MATLAB 学习笔记|09 图像处理II Image Processing
MATLAB学习笔记(09 图像处理II Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 09 1. 提出问题 题目:如何找出图片中的米粒,并且确定他们的大小? 老师 ...
最新文章
- Mysql新安装服务启动失败
- EmEditor编辑器正则表达式的优点
- 再次学习mysql优化
- c语言 程序循环,C语言程序设计-循环例子
- mpi由于目标计算机积极拒绝,windows系统lammps安装MPICH2的问题
- 【转】博客园中应用LaTex进行公式编写
- 温故js系列(4)-运算符详解
- python3环境变量和pip_Tool_linux环境安装python3和pip
- 常见的提高高并发下访问的效率的手段
- 一个很小的 截图 库。 只需要依赖 jQuery
- 为了永不停机的计算服务 | 凌云时刻
- 乐优商城第九天,第十天,(商品规格参数模版的新增,商品的新增)
- DelayQueue使用
- 吞食天地2刘蜀传1.8版本图文攻略
- Cesium 多边形(polygon)extrudedHeight 和 height 的区别
- Python 3 字符串 rsplit( ) 方法
- 高中数学关于计算机的知识,高中数学必修三-算法概念基础知识解读
- 【Python+QGIS将地名批量标注于高德地图】
- to be solved
- 获取所有股票历史行情数据
热门文章
- 数字证书(Certificate)
- 专注于钢铁行业电子商务的服务网站,钢铁行业的网上贸易市场 一起成长
- Android 原生开发、H5、React-Native Flutter 使用利弊和场景技术分享
- Idea 工具在java文件中怎么避免 import .*包
- react-native 错误捕捉与处理
- 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云QQ音乐(附源码)。。。...
- 开发经理是否应该写代码?​
- Chrome 上最必不可少的29 款插件,超级提高效率
- 流行的Spring Boot + Vue架构整合开发的网易云,附源码!
- 中国顶级程序员有多牛?一个弄哭韩国,一个堪称阿里“扫地僧”