《μC/OS-Ⅲ源码分析笔记》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:李悦城,野火编;王奇,张浩审校
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:7111519671
  • 页数:320 页
图书介绍:本书基于Cortex-M3内核,从源码分析和实际应用两个角度全面解析嵌入式实时操作系统μC/OS-III。为了让读者更好地理解,本书主要按照循环渐进的顺序对μC/OS-III中的函数逐一进行分析,采用通俗易懂的例子对书中内容进行解析。

第1章 实时操作系统及μC/OS-Ⅲ简介 1

1.1 单片机应用程序框架 1

1.1.1 前后台系统 1

1.1.2 嵌入式实时操作系统 4

1.2 如何使用和学习μC/OS-Ⅲ源码 5

1.3 μC/OS-Ⅲ文件结构简介 7

1.4 μC/OS-Ⅲ数据结构简介 8

1.5 任务 10

1.6 内核对象简介 11

1.6.1 信号量 11

1.6.2 事件标志组 12

1.6.3 消息队列 12

1.6.4 互斥信号量 12

1.6.5 内存分区 13

1.6.6 软件定时器 13

1.7 μC/OS-Ⅲ常见的程序段 13

1.7.1 中断嵌套层数统计 13

1.7.2 开中断和关中断 14

1.7.3 使能中断延迟的锁住和开启调度器 14

1.7.4 没有使能中断延迟的锁住和开启调度器 15

1.7.5 中断嵌套检测 15

1.7.6 调度器嵌套检测 16

1.7.7 时间戳 16

1.7.8 错误类型 17

1.7.9 参数检测 17

1.7.10 内核对象类型检测 17

1.7.11 安全检测 18

1.7.12 安全关键IEC61508 18

1.8 总结 19

第2章 时钟节拍 20

2.1 系统节拍中断服务程序 20

2.2 节拍任务处理时间相关事务 23

2.2.1 节拍列表更新 24

2.2.2 节拍列表 27

2.2.3 哈希算法检测到期任务 29

2.3 总结 30

第3章 时间管理 31

3.1 实例演示 31

3.2 任务开始延时 34

3.3 任务插入节拍列表 40

3.4 任务取消延时 49

3.5 任务脱离节拍列表 51

3.6 获取和设置时钟节拍 55

3.7 μC/OS-Ⅲ全局变量的定义和声明 56

3.8 总结 57

第4章 软件定时器 58

4.1 实例演示 58

4.2 插入定时器列表 65

4.3 删除定时器 68

4.4 脱离定时器列表 70

4.5 停止定时器 71

4.6 定时器内部运行机制 74

4.6.1 定时器初始化 74

4.6.2 定时器任务 76

4.6.3 回调函数 78

4.7 定时器剩余定时时间获取 79

4.8 定时器状态获取 81

4.9 总结 82

第5章 多值信号量 83

5.1 实例演示 83

5.2 信号量的创建 85

5.3 信号量等待队列 86

5.4 内核对象添加到调试双向链表 89

5.5 内核对象从调试双向链表中删除 90

5.6 部分内核对象数据结构的特点 93

5.7 发布信号量 95

5.7.1 开始发布信号量 95

5.7.2 结构体指针强制类型转换 101

5.7.3 无确切类型指针 101

5.7.4 单一任务提交处理 102

5.7.5 标记某一内核对象被提交 104

5.7.6 将任务从多个等待列表中移除 106

5.7.7 将任务从一个等待列表中删除 107

5.7.8 信号量提交过程涉及的时间戳 108

5.8 等待信号量 108

5.9 等待信号量过程的解析 109

5.9.1 函数解析 110

5.9.2 阻塞准备等待内核对象的任务 114

5.9.3 阻塞任务 115

5.9.4 初始化OS_PEND_DATA类型变量 116

5.9.5 根据任务优先级将OS_PEND_DATA变量插入双向链表 116

5.10 强制解除等待状态 118

5.10.1 强制解除内核对象上的一个任务 121

5.10.2 标记某一内核对象上的任务被强制解除等待状态 122

5.11 删除信号量 123

5.12 设置信号量计数值 128

5.13 总结 130

第6章 互斥信号量mutex 131

6.1 mutex变量的数据结构 131

6.2 创建mutex 132

6.3 提交mutex 133

6.4 等待/获取mutex 136

6.5 获取mutex过程解析 137

6.5.1 开始获取mutex 137

6.5.2 优先级继承过程 141

6.5.3 改变任务优先级并调整任务在各种列表中的位置 141

6.6 删除mutex 142

6.7 强制解除等待mutex 146

6.8 总结 148

第7章 消息队列 149

7.1 实例演示 149

7.2 消息的数据结构 150

7.3 消息池 151

7.4 消息队列解析 153

7.5 创建消息队列 155

7.6 提交消息 157

7.7 提交消息过程解析 157

7.8 等待消息过程解析 164

7.9 总结 164

第8章 事件标志 165

8.1 实例演示 165

8.2 事件标志组数据结构解析 167

8.3 创建事件标志组 167

8.4 等待事件标志组 169

8.5 提交事件标志组 177

8.6 总结 180

第9章 等待多个内核对象 181

9.1 实例演示 181

9.2 等待多个内核对象过程解析 182

9.2.1 检查多个内核对象是否被提交过 186

9.2.2 任务等待多个内核对象 188

9.3 总结 189

第10章 任务消息队列和任务信号量 190

10.1 实例演示 190

10.2 任务消息队列 191

10.2.1 任务消息队列相关数据结构解析 191

10.2.2 等待任务消息队列 192

10.2.3 任务消息队列的提交 196

10.2.4 强制解除等待任务消息队列 200

10.2.5 小结 201

10.3 任务信号量 202

10.3.1 任务信号量相关数据结构 202

10.3.2 等待任务信号量 202

10.3.3 提交任务信号量 205

10.3.4 强制解除等待任务信号量 209

10.3.5 小结 210

第11章 内存管理 211

11.1 内存碎片是怎么形成的 211

11.2 实例说明 211

11.3 内存分区控制块数据结构 212

11.4 创建内存分区 212

11.5 获取内存块 216

11.6 将内存块放回内存分区 217

11.7 总结 218

第12章 就绪优先级位映像表 219

12.1 就绪优先级位映像表数据结构 219

12.2 初始化就绪优先级位映像表 220

12.3 查找就绪优先级位映像表中最高的优先级 220

12.4 置就绪优先级位映像表中某个优先级处于就绪状态 225

12.5 将就绪优先级位映像表相应位清0 226

12.6 总结 226

第13章 就绪列表 227

13.1 就绪列表数据结构解析 227

13.2 初始化就绪列表 229

13.3 使任务就绪 229

13.4 将任务从就绪列表对应的双向链表的前面转移到后面 231

13.5 总结 232

第14章 任务切换 233

14.1 堆栈的基本概念 233

14.2 Cortrtex-M3堆栈 234

14.3 任务切换 235

14.4 PendSV服务程序解析 238

14.5 首次任务调度 242

14.6 任务堆栈初始化函数OSTaskStkInit解析 243

14.7 验证初始化堆栈弹栈结果 246

14.8 中断级任务切换的宏OSIntCtxSw()解析 248

14.9 任务切换过程中出现中断的处理 249

14.10 总结 249

第15章 任务管理 250

15.1 任务创建 250

15.2 挂起任务 256

15.3 恢复挂起任务 259

15.4 时间片轮转调度 262

15.4.1 时间片轮转调度初始化 262

15.4.2 时间片轮转调度核心算法 264

15.4.3 放弃时间片 266

15.4.4 设置任务时间片个数 267

15.5 任务寄存器 269

15.5.1 设置寄存器的内容 269

15.5.2 访问任务寄存器 271

15.6 总结 272

第16章 中断管理 273

16.1 中断延迟提交 273

16.1.1 延迟提交信息记录块 274

16.1.2 初始化延迟提交 274

16.1.3 中断延迟提交内核对象 276

16.1.4 延迟提交任务OS_IntQTask 279

16.2 中断嵌套管理 282

16.3 开中断和关中断解析 284

16.4 进入和退出临界段代码解析 287

16.4.1 OS_CRITICAL_ENTER解析 288

16.4.2 OS_CRITICAL_ENTER_CPU_CRITICAL_EXIT解析 288

16.4.3 OS_CRITICAL_EXIT_NO_SCHED解析 288

16.4.4 OS_CRITICAL_EXIT解析 288

16.5 测量关中断时间 289

16.5.1 测量关中断的初始化 289

16.5.2 测量最大关中断时间 290

16.5.3 获取最大关中断的时间 292

16.6 总结 293

第17章 各类统计信息 295

17.1 实例演示 295

17.2 CPU使用率计算 296

17.3 CPU使用率测量的初始化 296

17.4 堆栈检测过程简介 298

17.5 堆栈检测 299

17.6 实例解读堆栈溢出 301

17.7 统计任务OS_StatTask 305

17.8 总结 307

第18章 μC/OS-Ⅲ在不同CPU上的移植 308

18.1 移植接口主要文件编写 308

18.1.1 os_cpu_c.c文件 308

18.1.2 os_cpu_a.asm文件 309

18.1.3 os_cpu.h文件 310

18.2 编写CPU相关文件 310

18.2.1 cpu_c.c文件和cpu_a.asm文件 310

18.2.2 cpu.h文件 310

18.2.3 cpu_def.h文件 315

18.2.4 cpu_core.c文件和cpu_core.h文件 316

18.2.5 cpu_cfg.h文件 316

18.3 编写配置文件 317

18.3.1 os_app_app.h文件 317

18.3.2 os_cfg.h文件 317

18.4 总结 317