0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UCOS2系统内核讲述(三)_ TCB任务控制块

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-25 10:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ⅰ、写在前面

学习本文之前可以参看我前面的文章:

UCOS2_STM32F1移植详细过程(汇总文章)

UCOS2系统内核讲述(一)_总体描述

UCOS2系统内核讲述(二)_初始化调用函数

上一篇文章讲述了关于OSInit函数体中几个关于系统内核重要的函数,本文将针对上一篇文章中OS_InitTCBList(初始化任务控制块)函数重点讲述一下TCB(Task Control Block)任务控制块。

TCB任务控制块是用来记录任务的堆栈指针、任务的当前状态、任务的优先级别等一些与任务有关属性的一个数据结构表(因此,学习本文之前需要了解数据结构)。任务控制块相当于一个任务的“身份证”,它记录着任务的重要信息。

对于系统内核而言,各个任务就是通过控制任务块将其链接成一个表。因此,任务控制块在任务中占据重要地位。

本文还是结合前面移植好、可以运行的源代码来进行讲述关于最新版本UCOS2系统内核部分代码(围绕源代码来讲述)。

对于想学习UCOS的朋友,本文讲述的内容可不用深入理解,可以先做个了解。

关于本文的更多详情请往下看。

Ⅱ、全局TCB

在上一篇文章中讲述的OS_InitTCBList是整个系统初始化重要的一个函数。


在该函数中可以看到OS_TCB这么一个数据类型,在第一条执行语句中可以看到“OSTCBTbl”这个TCB表,下面可以看到“OSTCBPrioTbl”、“OSTCBList”、“OSTCBFreeList”等一些关于TCB数据类型的变量。由此可知道,这个函数体里面的内容全是关于OS_TCB类型的。

跟踪代码可以知道“OSTCBTbl”这些变量定义在ucos_ii.h中,其实这些变量是控制整个系统任务的一些全局TCB.


从变量后面的注释可以知道关于任务的切换需要修改多少变量(指针),下一章节我们将进一步讲述关于“OS_TCB”这个数据结构体。

Ⅲ、OS_TCB数据结构体

要想理解OS_TCB结构体,需要理解数据结构(也就是C语言中结构体、指针、链表等这些知识),因为OS_TCB里面使用的就是这些知识,先看一下ucos_ii.h中定义的OS_TCB结构体,如下图:


上面的截图就是整个“OS_TCB”结构体的内容,最重要的几个参数就是我用红色框出来的那些,其他都是次要,或者不必要的参数。

下面就重点讲述一下红色标记的几个参数:

1.三个重要的OS_TCB参数

OS_STK *OSTCBStkPtr; 指向当前栈顶的指针

struct os_tcb *OSTCBNext; 指向(TCB链表中)下一个TCB的指针

struct os_tcb *OSTCBPrev; 指向(TCB链表中)上一个TCB的指针

将这三个参数结合在一起来讲述是为了便于理解任务控制块之间的关联。学过链表的人应该知道这个写法,其实它就是将各个TCB构成一个关联的表,利用指针将一个个TCB关联起来。

指向上一个TCB的指针、指向当前TCB的指针、指向下一个TCB的指针,初学者只需要将这三个结合起来思考,理解起来就不难了。

2.任务运行时重要的OS_TCB参数

这里说的参数见上面截图中最后红色标记部分,这些参数是任务运行是重要的参数。

A.INT32U OSTCBDly;任务延时滴答 或 事件超时等待:

这个参数结合实例中三个任务的OSTimeDly函数一起理解就容易多了。OSTimeDly就是将该任务延时(该任务挂起)多少个滴答,其中重要的一个参数就是这里说的“OSTCBDly”,这个参数传递的信息就是延时。

B.INT8U OSTCBStat; 任务状态:

这个参数就是一个标示,标示任务处于什么状态。包括运行、挂起等,具体见ucos_ii.h第101行“TASK STATUS”的宏定义。

C.INT8U OSTCBStatPend; 任务悬挂状态:

这个参数和上面“任务状态”类似。主要包括三个状态:OS_STAT_PEND_OK、OS_STAT_PEND_TO和OS_STAT_PEND_ABORT。详情可见ucos_ii.h第117行“TASK PEND STATUS”的宏定义。

D.INT8U OSTCBPrio; 任务优先级:

任务优先级在学习UCOS之前都听说过这个词,这个参数就是标明任务优先级的参数。提示的是:任务优先级值越小,其优先级越高。所以,空闲任务优先级是设置最低。

E.优先级计算参数

INT8U OSTCBX; 优先级低3位对应的数值,即=prio&0x07

INT8U OSTCBY; 优先级高3位对应的数值,即=prio>>3

OS_PRIO OSTCBBitX; "对应"就绪表组的值 OSRdyTbl[OSTCBY] |= OSTCBBitX

OS_PRIO OSTCBBitY; 就绪表组 OSRdyGrp |= OSTCBBitY 即上面的"对应"组

这四个参数是计算任务优先级用的,至于是如何计算的,可以自己研究一下。

Ⅳ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

我将最新UCOS2.92操作系统移植到F0、F1、F3、F4各个硬件平台上,可以根据你芯片系列选择下载。

UCOS基于STM32F0、F1、F3、F4系列实例工程源代码(汇总):

https://yunpan.cn/cM9Fjv88cXbjI访问密码 048d

本文所讲述部分注释修改为中文(软件工程源代码):

https://yunpan.cn/cMGZKfnVVb2Li访问密码 49c2

基于STM32平台的UCOS源代码工程(官方原始软件工程)

官网下载(需要账号):

https://www.micrium.com/downloadcenter/download-results/?searchterm=hm-stmicroelectronics&supported=true

360云盘下载:

https://yunpan.cn/cM9Gzv4drXqxv访问密码 c82c

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制块
    +关注

    关注

    0

    文章

    5

    浏览量

    6460
  • STM32F10
    +关注

    关注

    0

    文章

    49

    浏览量

    16130
  • ucos2
    +关注

    关注

    0

    文章

    15

    浏览量

    3696
  • 操作系统内核

    关注

    0

    文章

    8

    浏览量

    2468
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ucos与freertos哪个好?

    选择uCOS或FreeRTOS取决于项目的具体需求和资源限制。 FreeRTOS的优点包括: 更小的内核ROM和RAM占用,特别是在RAM方面,适合资源受限的嵌入式系统。 支持协程
    发表于 12-05 07:13

    单片机的操作系统

    抢占和轮转调度,适用于低资源消耗场景(如STM32F0系列)。 ‌ ‌ μC/OS-II ‌:抢占式多任务内核,支持64个任务,内存分区管理避免碎片,中断嵌套深度达255层,适合工业控制系统
    发表于 11-14 06:18

    使用函数实现相电机正反转控制

    在使用西门子S1200PLC,所使用的软件是博途软件,在这个软件里运用了的概念。比如我们常见的组织(OB)、函数(FB)、数据(DB)以及函数FC等。今天我们来具体交流一下这个
    的头像 发表于 10-15 14:40 2326次阅读
    使用函数<b class='flag-5'>块</b>实现<b class='flag-5'>三</b>相电机正反转<b class='flag-5'>控制</b>

    氧浓度监控在热压键合(TCB)工艺过程中的重要性

    ,在高性能、高密度封装领域占据了一席之地,传统的倒装回流焊封装工艺,因其翘曲、桥接、移位等各种缺陷,逐渐被热压键合TCB所取代。本文主要跟大家分享的就是剖析热压键合技术,并探讨氧气浓度监控在TCB工艺中的重要性。 热压键合(TCB
    的头像 发表于 09-25 17:33 749次阅读
    氧浓度监控在热压键合(<b class='flag-5'>TCB</b>)工艺过程中的重要性

    【RA4E2开发板评测】电压检测器 ThreadX显示量程0-3300 mV+CPU利用率+任务当前使用栈

    续前【RA4E2开发板评测】电压检测器 ThreadX显示量程0-3300 mV 了解系统使用情况对于系统优化和配置特别重要。 ThreadX 的 CPU 利用率主要是通过创建一个统计任务
    发表于 09-07 08:05

    强实时运动控制内核MotionRT750(一):驱动安装、内核配置与使用

    强实时运动控制内核MotionRT750的驱动安装与内核配置
    的头像 发表于 07-03 15:48 3449次阅读
    强实时运动<b class='flag-5'>控制</b><b class='flag-5'>内核</b>MotionRT750(一):驱动安装、<b class='flag-5'>内核</b>配置与使用

    届大会回顾第5期 | OpenHarmony内核实时性探索

    实时性是操作系统内核在特定应用场景中不可或缺的特性,它通过多种技术手段确保系统在规定时间内完成任务,从而满足高可靠性、高响应速度的需求。
    的头像 发表于 06-25 18:02 805次阅读
    第<b class='flag-5'>三</b>届大会回顾第5期 | OpenHarmony<b class='flag-5'>内核</b>实时性探索

    基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究

    控制提供了新的选择。本文结合多个基于RISC-V内核的芯片案例,详细探讨了基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究,分析
    的头像 发表于 04-13 00:00 1254次阅读

    搭载32 位 RXv2 CPU内核以及增强型DSP和FPU的RX231系列微控制器数据手册

    执行高性能的数字滤波、浮点运算和其他处理任务。RX231系列实现了行业顶级的通信安全与加密功能、高灵敏度且高抗噪能力的电容式触摸传感器功能,以及安全数字(SD)主机接口、通用串行总线(USB)和控制器局域网(CAN)通信功能。 *附件:搭载32 位 RXv
    的头像 发表于 03-20 17:39 857次阅读
    搭载32 位 RXv<b class='flag-5'>2</b> CPU<b class='flag-5'>内核</b>以及增强型DSP和FPU的RX231系列微<b class='flag-5'>控制</b>器数据手册

    瑞萨RA8快速上手指南:Cortex-M85内核瑞萨RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,瑞萨RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是瑞萨自家官方的IDE(e2 studio)。
    的头像 发表于 03-17 14:35 1564次阅读
    瑞萨RA8快速上手指南:Cortex-M85<b class='flag-5'>内核</b>瑞萨RA8开发环境搭建 并点亮一个LED

    RTOS中的本地存储指针使用

    本地存储指针是RTOS中的一个重要特性,增强了任务管理和数据处理能力。在RTOS上下文中,本地存储是指存储在本地的特定任务或对象的数据。通常与任务本地存储(Task Local Storage,TLS)有关,其中数据存储在
    的头像 发表于 02-28 16:33 1170次阅读
    RTOS中的本地存储指针使用

    浅谈Windows实时性拓展对工业控制的重要意义

    而言,微内核可以更精确地控制任务的调度和资源分配。例如,在实时任务需要执行时,微内核能够快速地将所需的资源分配给该
    的头像 发表于 01-07 17:36 498次阅读

    TCB热压键合:打造高性能半导体封装的秘诀

    随着半导体技术的飞速发展,封装技术作为连接芯片与外界环境的桥梁,其重要性日益凸显。在众多封装技术中,TCB(Thermal Compression Bonding,热压键合)技术以其独特的优势,在
    的头像 发表于 01-04 10:53 5878次阅读
    <b class='flag-5'>TCB</b>热压键合:打造高性能半导体封装的秘诀

    菱PLC伺服控制系统介绍

    在现代工业自动化领域,菱电机以其高质量和可靠性而闻名。菱PLC伺服控制系统是实现精确运动控制和高效生产的关键技术之一。 一、菱PLC伺
    的头像 发表于 12-26 17:32 2478次阅读

    鸿道Intewell工业操作系统大关键技术,领跑行业前沿

    鸿道工业操作系统,是软件定义控制的工业实时操作系统,具备大关键技术:1、确定性计算与高实时响应(微秒级、关键指标)提供确定性的计算与高实时的系统
    的头像 发表于 12-25 14:46 778次阅读