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

副标题:无

作   者:李悦城 野火

分类号:

ISBN:9787111519676

微信扫一扫,移动浏览光盘

简介

本书基于Cortex-M3内核,从源码分析和实际应用两个角度全面解析嵌入式实时操作系统μC/OS-III。为了让读者更好地理解,本书主要按照循环渐进的顺序对μC/OS-III中的函数逐一进行分析,采用通俗易懂的例子对书中内容进行解析。

目录

目录
前言
第1章 实时操作系统及μC/OS-III简介 / 1
1.1 单片机应用程序框架 / 1
1.1.1 前后台系统 / 1
1.1.2 嵌入式实时操作系统 / 4
1.2 如何使用和学习μC/OS-III源码 / 5
1.3 μC/OS-III文件结构简介 / 7
1.4 μC/OS-III数据结构简介 / 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-III常见的程序段 / 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-III全局变量的定义
和声明 / 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 Cortex-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-III在不同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

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

μC/OS-III源码分析笔记
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon