第一章 嵌入式实时操作系统概述 1
1.1 操作系统的概念 1
1.2 嵌入式操作系统 2
1.3 嵌入式实时操作系统举例 3
1.3.1 Windows CE 3
1.3.2 VxWorks 4
1.3.3 嵌入式Linux 5
1.3.4 Android系统 5
1.4 μC/OS-Ⅱ和μC/OS-Ⅲ的特点 6
1.4.1 μC/OS-Ⅱ的特点 6
1.4.2 μC/OS-Ⅲ的特点 7
1.5 小结 8
习题一 8
第二章 嵌入式实时操作系统原理 9
2.1 进程与线程 9
2.1.1 进程 10
2.1.2 线程 11
2.1.3 任务 11
2.2 任务调度与优先级 13
2.2.1 任务状态 13
2.2.2 任务优先级 14
2.2.3 任务切换 14
2.2.4 任务调度算法 15
2.2.5 中断与实时性 18
2.3 资源 20
2.3.1 共享资源 20
2.3.2 变量 20
2.3.3 可重入函数 22
2.3.4 死锁 23
2.4 内存管理 24
2.4.1 堆 25
2.4.2 栈 25
2.4.3 内存碎片 25
2.5 内核与时钟节拍 26
2.5.1 不可抢先型内核 26
2.5.2 可抢先型内核 27
2.5.3 时钟节拍 28
2.5.4 空闲任务 29
2.6 信号量与互斥信号量 29
2.6.1 信号量 30
2.6.2 互斥信号量 31
2.7 消息邮箱 32
2.8 小结 33
习题二 33
第三章 μC/OS-Ⅱ内核 34
3.1 μC/OS-Ⅱ初始化 34
3.2 空闲任务控制块链表 39
3.3 空闲事件控制块链表 44
3.4 空闲内存控制块链表 47
3.5 任务就绪组和任务就绪表 50
3.6 空闲任务 56
3.7 统计任务 59
3.8 定时器任务 64
3.9 空闲事件标志组链表 70
3.10 空闲消息队列链表 74
3.11 时钟节拍 76
3.12 任务状态 81
3.13 任务调度与内核函数 83
3.13.1 内核管理函数 86
3.13.2 延时管理函数 91
3.13.3 移植管理函数 94
3.14 多任务启动 95
3.15 小结 96
习题三 97
第四章 μC/OS-Ⅱ组件 98
4.1 任务管理 98
4.1.1 创建任务 99
4.1.2 删除任务 110
4.1.3 堆栈检查 113
4.2 信号量管理 115
4.2.1 信号量使用方法 116
4.2.2 信号量创建函数 117
4.2.3 信号量请求函数 120
4.2.4 信号量释放函数 124
4.2.5 信号量赋值函数 128
4.3 互斥信号量管理 129
4.3.1 互斥信号量使用方法 130
4.3.2 互斥信号量创建函数 131
4.3.3 互斥信号量请求函数 133
4.3.4 互斥信号量释放函数 137
4.4 事件标志组管理 140
4.4.1 事件标志组使用方法 141
4.4.2 事件标志组创建函数 142
4.4.3 事件标志组请求函数 143
4.4.4 事件标志组释放函数 151
4.5 消息邮箱管理 155
4.5.1 消息邮箱使用方法 157
4.5.2 消息邮箱创建函数 157
4.5.3 消息邮箱请求函数 158
4.5.4 消息邮箱释放函数 161
4.6 消息队列管理 162
4.6.1 消息队列使用方法 164
4.6.2 消息队列创建函数 164
4.6.3 消息队列请求函数 166
4.6.4 消息队列释放函数 169
4.7 多事件请求管理 170
4.7.1 多事件请求函数使用方法 171
4.7.2 多事件请求函数工作原理 171
4.8 中断管理宏函数 180
4.9 定时器管理 181
4.9.1 定时器任务 182
4.9.2 定时器使用方法 186
4.9.3 定时器创建函数 186
4.9.4 定时器启动函数 189
4.9.5 定时器停止函数 191
4.9.6 定时器刷新函数 193
4.10 动态内存管理 194
4.10.1 动态内存使用方法 195
4.10.2 动态内存创建函数 195
4.10.3 动态内存请求函数 198
4.10.4 动态内存释放函数 199
4.11 小结 200
习题四 200
第五章 μC/OS-Ⅱ应用实例 201
5.1 Borland C++ 5.02与实例一 201
5.1.1 在Borland C++上实现实例一 201
5.1.2 实例一程序解释 209
5.1.3 μC/OS-View与实例一 215
5.2 实例二 223
5.3 实例三 227
5.4 实例四 230
5.5 小结 233
习题五 233
第六章 μC/OS-Ⅱ最小系统 234
6.1 内核裁剪 234
6.1.1 配置文件os_cfg.h 235
6.1.2 最小系统头文件ucos_ii.h 237
6.1.3 最小系统文件与执行流程 239
6.2 最小系统实例 240
6.3 小结 243
习题六 243
第七章 面向任务程序设计(TOP) 244
7.1 程序设计方法 245
7.2 任务与函数 247
7.3 任务构造方法 251
7.3.1 指示层任务设计 251
7.3.2 输入/输出层任务设计 254
7.3.3 计算层和输入/输出层任务联合设计 256
7.4 任务优先级与堆栈 257
7.5 任务调度与切换 259
7.6 任务间同步与通信 260
7.7 任务挂起与恢复 261
7.8 小结 262
习题七 263
第八章 TOP设计实例 264
8.1 硬件平台 264
8.2 工程框架与实例一 267
8.2.1 工程框架 267
8.2.2 LED灯闪烁与实例一 273
8.3 实例二 276
8.3.1 串口驱动 276
8.3.2 串口通信实例 278
8.4 实例三 281
8.4.1 数码管驱动 281
8.4.2 数码管秒表实例 282
8.4.3 数码管显示实例 286
8.5 实例四 290
8.5.1 模/数变换驱动 290
8.5.2 模/数变换实例 291
8.5.3 中值滤波实例 295
8.6 小结 299
习题八 299
附录 μC/OS-Ⅲ和Cortex-M3简要说明 300
附录1 μC/OS-Ⅲ文件组织结构 300
附录2 Cortex-M3处理器和EMSTM32V100实验平台 301
附录3 μC/OS-Ⅲ实例说明 303
后记 305