logo
分类于: 编程语言 计算机基础 互联网 云计算&大数据

简介

μC/OS-III源码分析笔记

μC/OS-III源码分析笔记 0.0分

资源最后更新于 2020-03-29 01:31:12

作者:李悦城野火

出版社:出版社机械工业出版社

出版日期:2015-10

文件格式: pdf

标签: 互联网 网络 计算机 编程 IT 教程

简介· · · · · ·

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

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 前言
  2. 第1章 实时操作系统及μC/OS-III简介
  3. 1.1 单片机应用程序框架
  4. 1.1.1 前后台系统
  5. 1.1.2 嵌入式实时操作系统
  6. 1.2 如何使用和学习μC/OS-III源码
  7. 1.3 μC/OS-III文件结构简介
  8. 1.4 μC/OS-III数据结构简介
  9. 1.5 任务
  10. 1.6 内核对象简介
  11. 1.6.1 信号量
  12. 1.6.2 事件标志组
  13. 1.6.3 消息队列
  14. 1.6.4 互斥信号量
  15. 1.6.5 内存分区
  16. 1.6.6 软件定时器
  17. 1.7 μC/OS-III常见的程序段
  18. 1.7.1 中断嵌套层数统计
  19. 1.7.2 开中断和关中断
  20. 1.7.3 使能中断延迟的锁住和开启调度器
  21. 1.7.4 没有使能中断延迟的锁住和开启调度器
  22. 1.7.5 中断嵌套检测
  23. 1.7.6 调度器嵌套检测
  24. 1.7.7 时间戳
  25. 1.7.8 错误类型
  26. 1.7.9 参数检测
  27. 1.7.10 内核对象类型检测
  28. 1.7.11 安全检测
  29. 1.7.12 安全关键IEC61508
  30. 1.8 总结
  31. 第2章 时钟节拍
  32. 2.1 系统节拍中断服务程序
  33. 2.2 节拍任务处理时间相关事务
  34. 2.2.1 节拍列表更新
  35. 2.2.2 节拍列表
  36. 2.2.3 哈希算法检测到期任务
  37. 2.3 总结
  38. 第3章 时间管理
  39. 3.1 实例演示
  40. 3.2 任务开始延时
  41. 3.3 任务插入节拍列表
  42. 3.4 任务取消延时
  43. 3.5 任务脱离节拍列表
  44. 3.6 获取和设置时钟节拍
  45. 3.7 μC/OS-III全局变量的定义和声明
  46. 3.8 总结
  47. 第4章 软件定时器
  48. 4.1 实例演示
  49. 4.2 插入定时器列表
  50. 4.3 删除定时器
  51. 4.4 脱离定时器列表
  52. 4.5 停止定时器
  53. 4.6 定时器内部运行机制
  54. 4.6.1 定时器初始化
  55. 4.6.2 定时器任务
  56. 4.6.3 回调函数
  57. 4.7 定时器剩余定时时间获取
  58. 4.8 定时器状态获取
  59. 4.9 总结
  60. 第5章 多值信号量
  61. 5.1 实例演示
  62. 5.2 信号量的创建
  63. 5.3 信号量等待队列
  64. 5.4 内核对象添加到调试双向链表
  65. 5.5 内核对象从调试双向链表中删除
  66. 5.6 部分内核对象数据结构的特点
  67. 5.7 发布信号量
  68. 5.7.1 开始发布信号量
  69. 5.7.2 结构体指针强制类型转换
  70. 5.7.3 无确切类型指针
  71. 5.7.4 单一任务提交处理
  72. 5.7.5 标记某一内核对象被提交
  73. 5.7.6 将任务从多个等待列表中移除
  74. 5.7.7 将任务从一个等待列表中删除
  75. 5.7.8 信号量提交过程涉及的时间戳
  76. 5.8 等待信号量
  77. 5.9 等待信号量过程的解析
  78. 5.9.1 函数解析
  79. 5.9.2 阻塞准备等待内核对象的任务
  80. 5.9.3 阻塞任务
  81. 5.9.4 初始化OS_PEND_DATA类型变量
  82. 5.9.5 根据任务优先级将OS_PEND_DATA变量插入双向链表
  83. 5.10 强制解除等待状态
  84. 5.10.1 强制解除内核对象上的一个任务
  85. 5.10.2 标记某一内核对象上的任务被强制解除等待状态
  86. 5.11 删除信号量
  87. 5.12 设置信号量计数值
  88. 5.13 总结
  89. 第6章 互斥信号量mutex
  90. 6.1 mutex变量的数据结构
  91. 6.2 创建mutex
  92. 6.3 提交mutex
  93. 6.4 等待/获取mutex
  94. 6.5 获取mutex过程解析
  95. 6.5.1 开始获取mutex
  96. 6.5.2 优先级继承过程
  97. 6.5.3 改变任务优先级并调整任务在各种列表中的位置
  98. 6.6 删除mutex
  99. 6.7 强制解除等待mutex
  100. 6.8 总结
  101. 第7章 消息队列
  102. 7.1 实例演示
  103. 7.2 消息的数据结构
  104. 7.3 消息池
  105. 7.4 消息队列解析
  106. 7.5 创建消息队列
  107. 7.6 提交消息
  108. 7.7 提交消息过程解析
  109. 7.8 等待消息过程解析
  110. 7.9 总结
  111. 第8章 事件标志
  112. 8.1 实例演示
  113. 8.2 事件标志组数据结构解析
  114. 8.3 创建事件标志组
  115. 8.4 等待事件标志组
  116. 8.5 提交事件标志组
  117. 8.6 总结
  118. 第9章 等待多个内核对象
  119. 9.1 实例演示
  120. 9.2 等待多个内核对象过程解析
  121. 9.2.1 检查多个内核对象是否被提交过
  122. 9.2.2 任务等待多个内核对象
  123. 9.3 总结
  124. 第10章 任务消息队列和任务信号量
  125. 10.1 实例演示
  126. 10.2 任务消息队列
  127. 10.2.1 任务消息队列相关数据结构解析
  128. 10.2.2 等待任务消息队列
  129. 10.2.3 任务消息队列的提交
  130. 10.2.4 强制解除等待任务消息队列
  131. 10.2.5 小结
  132. 10.3 任务信号量
  133. 10.3.1 任务信号量相关数据结构
  134. 10.3.2 等待任务信号量
  135. 10.3.3 提交任务信号量
  136. 10.3.4 强制解除等待任务信号量
  137. 10.3.5 小结
  138. 第11章 内存管理
  139. 11.1 内存碎片是怎么形成的
  140. 11.2 实例说明
  141. 11.3 内存分区控制块数据结构
  142. 11.4 创建内存分区
  143. 11.5 获取内存块
  144. 11.6 将内存块放回内存分区
  145. 11.7 总结
  146. 第12章 就绪优先级位映像表
  147. 12.1 就绪优先级位映像表数据结构
  148. 12.2 初始化就绪优先级位映像表
  149. 12.3 查找就绪优先级位映像表中最高的优先级
  150. 12.4 置就绪优先级位映像表中某个优先级处于就绪状态
  151. 12.5 将就绪优先级位映像表相应位清0
  152. 12.6 总结
  153. 第13章 就绪列表
  154. 13.1 就绪列表数据结构解析
  155. 13.2 初始化就绪列表
  156. 13.3 使任务就绪
  157. 13.4 将任务从就绪列表对应的双向链表的前面转移到后面
  158. 13.5 总结
  159. 第14章 任务切换
  160. 14.1 堆栈的基本概念
  161. 14.2 Cortex-M3堆栈
  162. 14.3 任务切换
  163. 14.4 PendSV服务程序解析
  164. 14.5 首次任务调度
  165. 14.6 任务堆栈初始化函数OSTaskStkInit解析
  166. 14.7 验证初始化堆栈弹栈结果
  167. 14.8 中断级任务切换的宏OSIntCtxSw()解析
  168. 14.9 任务切换过程中出现中断的处理
  169. 14.10 总结
  170. 第15章 任务管理
  171. 15.1 任务创建
  172. 15.2 挂起任务
  173. 15.3 恢复挂起任务
  174. 15.4 时间片轮转调度
  175. 15.4.1 时间片轮转调度初始化
  176. 15.4.2 时间片轮转调度核心算法
  177. 15.4.3 放弃时间片
  178. 15.4.4 设置任务时间片个数
  179. 15.5 任务寄存器
  180. 15.5.1 设置寄存器的内容
  181. 15.5.2 访问任务寄存器
  182. 15.6 总结
  183. 第16章 中断管理
  184. 16.1 中断延迟提交
  185. 16.1.1 延迟提交信息记录块
  186. 16.1.2 初始化延迟提交
  187. 16.1.3 中断延迟提交内核对象
  188. 16.1.4 延迟提交任务OS_IntQTask
  189. 16.2 中断嵌套管理
  190. 16.3 开中断和关中断解析
  191. 16.4 进入和退出临界段代码解析
  192. 16.4.1 OS_CRITICAL_ENTER解析
  193. 16.4.2 OS_CRITICAL_ENTER_CPU_CRITICAL_EXIT解析
  194. 16.4.3 OS_CRITICAL_EXIT_NO_SCHED解析
  195. 16.4.4 OS_CRITICAL_EXIT解析
  196. 16.5 测量关中断时间
  197. 16.5.1 测量关中断的初始化
  198. 16.5.2 测量最大关中断时间
  199. 16.5.3 获取最大关中断的时间
  200. 16.6 总结
  201. 第17章 各类统计信息
  202. 17.1 实例演示
  203. 17.2 CPU使用率计算
  204. 17.3 CPU使用率测量的初始化
  205. 17.4 堆栈检测过程简介
  206. 17.5 堆栈检测
  207. 17.6 实例解读堆栈溢出
  208. 17.7 统计任务OS_StatTask
  209. 17.8 总结
  210. 第18章 μC/OS-III在不同CPU上的移植
  211. 18.1 移植接口主要文件编写
  212. 18.1.1 os_cpu_c.c文件
  213. 18.1.2 os_cpu_a.asm文件
  214. 18.1.3 os_cpu.h文件
  215. 18.2 编写CPU相关文件
  216. 18.2.1 cpu_c.c文件和cpu_a.asm文件
  217. 18.2.2 cpu.h文件
  218. 18.2.3 cpu_def.h文件
  219. 18.2.4 cpu_core.c文件和cpu_core.h文件
  220. 18.2.5 cpu_cfg.h文件
  221. 18.3 编写配置文件
  222. 18.3.1 os_app_app.h文件
  223. 18.3.2 os_cfg.h文件
  224. 18.4 总结