随笔分类 - 【嵌入式】uC/OS-III学习笔记
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 15、16 和 21 章。 从本文开始,是 uCOS 的 API 应用。 1 任务状态 在 uCOS 中,任务状态分为以下几种,任务就是在这几种状态中来回变化的: 就绪(OS_TASK_STATE_RDY):该任务
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 14 章。 0 时间片轮转调度的意义 我们现在实现的 uCOS 内核,包含了就绪列表和时基列表。就绪列表的插入规则与优先级有关,而时基列表的插入规则与时基计数器和延时时间有关。上一篇文章中,已经实现了时基列表的任务
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 13 章。 1 数据类型定义和宏定义 1.1 时基列表相关宏定义和全局变量(os_cfg_app.h/c & os.h) 在 os_cfg_app.h 中,宏定义时基列表的大小,其推荐值为任务数/4,推荐使用质数,
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 12 章。 本篇内容主要是对过往函数的一些修改,因此,一些细节将不会赘述。 0 数据类型定义和宏定义 0.1 临界段宏定义(os.h) #define OS_CRITICAL_ENTER() CPU_CRITICA
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 11 章。 1 就绪列表和任务控制块的定义(os.h) 1.1 任务控制块链表 OS_TCB 在定义就绪列表之前,先修改一下 TCB 的内容。 TCB 是一条双向链表,每个节点都包含以下内容: 任务栈指针 StkP
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 11 章。 1 优先级表的定义 OSPrioTbl(os_prio.c) 在文件 os_prio.c 中定义优先级表,它是一个数组: CPU_DATA OSPrioTbl[OS_PRIO_TBL_SIZE]; /*
阅读全文
摘要:喜气洋洋过虎年!祝各位明年会有更大的进步! 参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 10 章。 1 临界段 临界段,又叫做临界区。对于多线程而言,它是一段不可分割、不可上下文切换的代码。对于 uCOS 而言,它是一段不可被中断的代码。临界段是不能被中断的
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 9 章。 1 时间戳 在 uCOS 中,如果要测量一段代码 A 的时间,那么可以在代码段 A 运行前记录一个时间点 TimeStart,在代码段 A 运行完记录一个时间点 TimeEnd,那么代码段 A 的运行时间
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 8 章。 1. 空闲任务 不知道有没有注意到这样一个问题:我在学习 x86 汇编语言的时候,曾详细研读过系统内核的代码,内核本身也是有自己的 TCB 的,内核可作为一个“任务管理器”来对其他任务进行创建、删除等操作
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 7 章。 这章的内容是:每隔一定的时间间隔,就会进行一次任务切换,使每个任务都能均等享有 CPU 控制权,这种不停地上下文切换的过程,有点像多进程。同是任务切换,与第一篇笔记不同的是:第一篇笔记是任务自己主动切换,
阅读全文
摘要:参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 6 章。 前排提醒 每一节标题最后的括号是表明该数据类型或函数位于哪个文件中。 按照 μC/OS-III 中的函数命名规则,以大小的 OS 开头,表示这是一个外部函数,可以由用户调用,以 OS_ 开头的函数表示内部
阅读全文

浙公网安备 33010602011771号