作品简介

本书与其他书籍的编排方式不一样:其他书籍是按照官方文件的框架或者组件的方式编排的;本书更强调循序渐进,并结合了笔者在阅读μC/OS-III源码过程中的一些想法。比如一个结构体变量可能会有多个元素,工具书一般会把它们放在一起讲解,而本书为了易于读者更好地理解,只在某些源码涉及这个元素时才会介绍其作用和含义。如果你有时要将本书当作工具书来查询,则可结合这些相关内容涉及的源码进行查找。

李悦城 野火 编著

作品目录

  • 前言
  • 第1章 实时操作系统及μC/OS-III简介
  • 1.1 单片机应用程序框架
  • 1.1.1 前后台系统
  • 1.1.2 嵌入式实时操作系统
  • 1.2 如何使用和学习μC/OS-III源码
  • 1.3 μC/OS-III文件结构简介
  • 1.4 μC/OS-III数据结构简介
  • 1.5 任务
  • 1.6 内核对象简介
  • 1.6.1 信号量
  • 1.6.2 事件标志组
  • 1.6.3 消息队列
  • 1.6.4 互斥信号量
  • 1.6.5 内存分区
  • 1.6.6 软件定时器
  • 1.7 μC/OS-III常见的程序段
  • 1.7.1 中断嵌套层数统计
  • 1.7.2 开中断和关中断
  • 1.7.3 使能中断延迟的锁住和开启调度器
  • 1.7.4 没有使能中断延迟的锁住和开启调度器
  • 1.7.5 中断嵌套检测
  • 1.7.6 调度器嵌套检测
  • 1.7.7 时间戳
  • 1.7.8 错误类型
  • 1.7.9 参数检测
  • 1.7.10 内核对象类型检测
  • 1.7.11 安全检测
  • 1.7.12 安全关键IEC61508
  • 1.8 总结
  • 第2章 时钟节拍
  • 2.1 系统节拍中断服务程序
  • 2.2 节拍任务处理时间相关事务
  • 2.2.1 节拍列表更新
  • 2.2.2 节拍列表
  • 2.2.3 哈希算法检测到期任务
  • 2.3 总结
  • 第3章 时间管理
  • 3.1 实例演示
  • 3.2 任务开始延时
  • 3.3 任务插入节拍列表
  • 3.4 任务取消延时
  • 3.5 任务脱离节拍列表
  • 3.6 获取和设置时钟节拍
  • 3.7 μC/OS-III全局变量的定义和声明
  • 3.8 总结
  • 第4章 软件定时器
  • 4.1 实例演示
  • 4.2 插入定时器列表
  • 4.3 删除定时器
  • 4.4 脱离定时器列表
  • 4.5 停止定时器
  • 4.6 定时器内部运行机制
  • 4.6.1 定时器初始化
  • 4.6.2 定时器任务
  • 4.6.3 回调函数
  • 4.7 定时器剩余定时时间获取
  • 4.8 定时器状态获取
  • 4.9 总结
  • 第5章 多值信号量
  • 5.1 实例演示
  • 5.2 信号量的创建
  • 5.3 信号量等待队列
  • 5.4 内核对象添加到调试双向链表
  • 5.5 内核对象从调试双向链表中删除
  • 5.6 部分内核对象数据结构的特点
  • 5.7 发布信号量
  • 5.7.1 开始发布信号量
  • 5.7.2 结构体指针强制类型转换
  • 5.7.3 无确切类型指针
  • 5.7.4 单一任务提交处理
  • 5.7.5 标记某一内核对象被提交
  • 5.7.6 将任务从多个等待列表中移除
  • 5.7.7 将任务从一个等待列表中删除
  • 5.7.8 信号量提交过程涉及的时间戳
  • 5.8 等待信号量
  • 5.9 等待信号量过程的解析
  • 5.9.1 函数解析
  • 5.9.2 阻塞准备等待内核对象的任务
  • 5.9.3 阻塞任务
  • 5.9.4 初始化OS_PEND_DATA类型变量
  • 5.9.5 根据任务优先级将OS_PEND_DATA变量插入双向链表
  • 5.10 强制解除等待状态
  • 5.10.1 强制解除内核对象上的一个任务
  • 5.10.2 标记某一内核对象上的任务被强制解除等待状态
  • 5.11 删除信号量
  • 5.12 设置信号量计数值
  • 5.13 总结
  • 第6章 互斥信号量mutex
  • 6.1 mutex变量的数据结构
  • 6.2 创建mutex
  • 6.3 提交mutex
  • 6.4 等待/获取mutex
  • 6.5 获取mutex过程解析
  • 6.5.1 开始获取mutex
  • 6.5.2 优先级继承过程
  • 6.5.3 改变任务优先级并调整任务在各种列表中的位置
  • 6.6 删除mutex
  • 6.7 强制解除等待mutex
  • 6.8 总结
  • 第7章 消息队列
  • 7.1 实例演示
  • 7.2 消息的数据结构
  • 7.3 消息池
  • 7.4 消息队列解析
  • 7.5 创建消息队列
  • 7.6 提交消息
  • 7.7 提交消息过程解析
  • 7.8 等待消息过程解析
  • 7.9 总结
  • 第8章 事件标志
  • 8.1 实例演示
  • 8.2 事件标志组数据结构解析
  • 8.3 创建事件标志组
  • 8.4 等待事件标志组
  • 8.5 提交事件标志组
  • 8.6 总结
  • 第9章 等待多个内核对象
  • 9.1 实例演示
  • 9.2 等待多个内核对象过程解析
  • 9.2.1 检查多个内核对象是否被提交过
  • 9.2.2 任务等待多个内核对象
  • 9.3 总结
  • 第10章 任务消息队列和任务信号量
  • 10.1 实例演示
  • 10.2 任务消息队列
  • 10.2.1 任务消息队列相关数据结构解析
  • 10.2.2 等待任务消息队列
  • 10.2.3 任务消息队列的提交
  • 10.2.4 强制解除等待任务消息队列
  • 10.2.5 小结
  • 10.3 任务信号量
  • 10.3.1 任务信号量相关数据结构
  • 10.3.2 等待任务信号量
  • 10.3.3 提交任务信号量
  • 10.3.4 强制解除等待任务信号量
  • 10.3.5 小结
  • 第11章 内存管理
  • 11.1 内存碎片是怎么形成的
  • 11.2 实例说明
  • 11.3 内存分区控制块数据结构
  • 11.4 创建内存分区
  • 11.5 获取内存块
  • 11.6 将内存块放回内存分区
  • 11.7 总结
  • 第12章 就绪优先级位映像表
  • 12.1 就绪优先级位映像表数据结构
  • 12.2 初始化就绪优先级位映像表
  • 12.3 查找就绪优先级位映像表中最高的优先级
  • 12.4 置就绪优先级位映像表中某个优先级处于就绪状态
  • 12.5 将就绪优先级位映像表相应位清0
  • 12.6 总结
  • 第13章 就绪列表
  • 13.1 就绪列表数据结构解析
  • 13.2 初始化就绪列表
  • 13.3 使任务就绪
  • 13.4 将任务从就绪列表对应的双向链表的前面转移到后面
  • 13.5 总结
  • 第14章 任务切换
  • 14.1 堆栈的基本概念
  • 14.2 Cortex-M3堆栈
  • 14.3 任务切换
  • 14.4 PendSV服务程序解析
  • 14.5 首次任务调度
  • 14.6 任务堆栈初始化函数OSTaskStkInit解析
  • 14.7 验证初始化堆栈弹栈结果
  • 14.8 中断级任务切换的宏OSIntCtxSw()解析
  • 14.9 任务切换过程中出现中断的处理
  • 14.10 总结
  • 第15章 任务管理
  • 15.1 任务创建
  • 15.2 挂起任务
  • 15.3 恢复挂起任务
  • 15.4 时间片轮转调度
  • 15.4.1 时间片轮转调度初始化
  • 15.4.2 时间片轮转调度核心算法
  • 15.4.3 放弃时间片
  • 15.4.4 设置任务时间片个数
  • 15.5 任务寄存器
  • 15.5.1 设置寄存器的内容
  • 15.5.2 访问任务寄存器
  • 15.6 总结
  • 第16章 中断管理
  • 16.1 中断延迟提交
  • 16.1.1 延迟提交信息记录块
  • 16.1.2 初始化延迟提交
  • 16.1.3 中断延迟提交内核对象
  • 16.1.4 延迟提交任务OS_IntQTask
  • 16.2 中断嵌套管理
  • 16.3 开中断和关中断解析
  • 16.4 进入和退出临界段代码解析
  • 16.4.1 OS_CRITICAL_ENTER解析
  • 16.4.2 OS_CRITICAL_ENTER_CPU_CRITICAL_EXIT解析
  • 16.4.3 OS_CRITICAL_EXIT_NO_SCHED解析
  • 16.4.4 OS_CRITICAL_EXIT解析
  • 16.5 测量关中断时间
  • 16.5.1 测量关中断的初始化
  • 16.5.2 测量最大关中断时间
  • 16.5.3 获取最大关中断的时间
  • 16.6 总结
  • 第17章 各类统计信息
  • 17.1 实例演示
  • 17.2 CPU使用率计算
  • 17.3 CPU使用率测量的初始化
  • 17.4 堆栈检测过程简介
  • 17.5 堆栈检测
  • 17.6 实例解读堆栈溢出
  • 17.7 统计任务OS_StatTask
  • 17.8 总结
  • 第18章 μC/OS-III在不同CPU上的移植
  • 18.1 移植接口主要文件编写
  • 18.1.1 os_cpu_c.c文件
  • 18.1.2 os_cpu_a.asm文件
  • 18.1.3 os_cpu.h文件
  • 18.2 编写CPU相关文件
  • 18.2.1 cpu_c.c文件和cpu_a.asm文件
  • 18.2.2 cpu.h文件
  • 18.2.3 cpu_def.h文件
  • 18.2.4 cpu_core.c文件和cpu_core.h文件
  • 18.2.5 cpu_cfg.h文件
  • 18.3 编写配置文件
  • 18.3.1 os_app_app.h文件
  • 18.3.2 os_cfg.h文件
  • 18.4 总结
展开全部