1275_FreeRTOS task.h中的几个数据结构分析

本文详细探讨了FreeRTOS的任务管理,包括任务句柄、Hook函数、任务状态以及相关数据结构。作者强调了预处理技巧在软件设计中的作用,并介绍了任务通知动作、超时管理以及堆栈水印等概念。通过对FreeRTOS核心组件的分析,为理解实时操作系统提供了深入的见解。
摘要由CSDN通过智能技术生成

全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)

一个简单的任务跑起来涉及到的基本接口现在看得差不多了,接下来全方面去了解一下FreeRTOS。先看看task.h中涉及到的几个数据结构,这样应该能够让我建立更多的理解概念。

关于预处理的使用技巧一直以来是我软件设计中的薄弱点,当然,我觉得这个主要是用于防御而不是尝试做自己的构建。不过,类似的技巧尝试学习借鉴一下也是很好的。

这里涉及到3个基本的数据结构,第一个其实是很熟悉的了,主要是用于任务的句柄。在使用的过程中,通常直接用以存储TCB实体的指针。第二个是一个Hook函数指针类型的定义,无参数、无返回值的模式。第三个是任务的状态,从这里倒是看到了任务的几种状态:运行、就绪、阻塞、挂起、删除、非法等。

这里面又是3个数据结构信息,其中MPU的暂且放一下,后面再去研究。第1个主要是定义了一些任务通知的动作:无动作、设置bits、增长、带有覆盖的模式写入、不覆盖的模式写入。第2个主要是超时相关的数据结构定义,是一个结构体,2个成员:超时计数器、进入时间。

这部分也是关于MPU使用的,暂且放一下。

这个数据结构主要是用以获取任务的状态,里面的很多信息其实跟TCB中的信息有相似之处。不过,关于堆栈的处理有一定的不同。尤其值得注意的一点是堆栈高度水印值,这个数值越小越有可能出现堆栈溢出。

这个是关于睡眠模式的几个状态:放弃睡眠、标准睡眠、没有任务等待超时。最后一个,是一种进入睡眠模式的安全状态。

大的代码工程查看起来有时候的确是有一点煎熬,我采取的方式就是分而治之。其实,孤立出来任何100行代码不管多么难总能在短时间内提取出来自己感兴趣的信息。尤其是,当代码的行数计算计算的就是自然行的时候。不过,不该小看这种小小的尝试,嵌入式的软件工程其实经不住多少个100行的分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值