第1章 绪论 1
1.1 嵌入式系统的编程环境 1
1.1.1 基于裸机的编程环境 2
1.1.2 基于嵌入式实时操作系统的编程环境 2
1.2 学习使用实时操作系统之前必须具备的能力 3
1.2.1 软件设计能力的要求 3
1.2.2 硬件设计能力的要求 4
1.2.3 工程项目开发能力的要求 4
1.3 实时操作系统的快速入门方法 4
第2章 建立开发环境 6
2.1 CPU芯片与硬件平台的选择 6
2.2 嵌入式实时操作系统的选择 8
2.3 嵌入式实时操作系统的移植 9
2.4 开发调试环境的建立 9
2.5 工程模板分析 15
2.6 工程模板的使用 17
第3章 有关任务的基本知识 21
3.1 仿多CPU环境的实现 21
3.2 任务的特性 22
3.2.1 任务的独立性 22
3.2.2 任务的并发性 23
3.2.3 任务的动态性 24
3.3 任务的划分 26
3.3.1 设备依赖性任务的划分 26
3.3.2 关键任务的划分 27
3.3.3 紧迫任务的划分 30
3.3.4 数据处理任务的划分 31
3.3.5 功能聚合任务的划分 32
3.3.6 触发条件相同任务的划分 32
3.3.7 运行周期相同任务的划分 33
3.3.8 顺序操作任务的划分 33
3.3.9 任务划分小结 33
3.4 任务的可调度性分析 34
3.5 与任务管理有关的常用函数 35
3.5.1 创建任务 35
3.5.2 删除任务 37
第4章 任务设计 39
4.1 任务函数的结构 39
4.1.1 单次执行的任务 39
4.1.2 周期性执行的任务 43
4.1.3 事件触发执行的任务 44
4.2 任务优先级安排 47
4.2.1 任务的优先级资源 48
4.2.2 任务优先级安排原则 48
4.3 任务的数据结构设计 49
4.3.1 与操作系统有关的数据结构 49
4.3.2 与操作系统无关的数据结构 50
4.4 任务函数设计中的问题 50
4.4.1 公共函数的调用 50
4.4.2 与其他任务的协调 52
4.4.3 共享资源的访问 52
4.4.4 与其他任务进行数据通信 52
4.5 任务函数的代码设计过程 52
4.5.1 系统总体任务关联图 53
4.5.2 任务的关联分析 53
4.5.3 任务的程序流程图 54
4.5.4 编写任务函数的程序代码 56
第5章 中断服务程序设计 58
5.1 中断优先级 58
5.1.1 中断的优先级资源 59
5.1.2 中断优先级安排原则 59
5.2 在工程模板中加入中断服务程序 60
5.3 中断服务程序设计 61
5.3.1 中断服务程序的结构 61
5.3.2 选择与关联任务的通信手段 62
5.3.3 带中断服务程序的示例 63
第6章 行为同步 65
6.1 用于行为同步的通信手段 65
6.1.1 二值信号量 65
6.1.2 计数信号量 66
6.1.3 事件标志组 68
6.1.4 消息邮箱 70
6.1.5 消息队列 72
6.1.6 通信手段的选择 73
6.2 行为同步 73
6.2.1 ISR和任务之间的同步 73
6.2.2 两个任务之间的单向同步 76
6.2.3 两个任务之间的双向同步 81
6.2.4 两个以上任务同步一个任务 85
6.2.5 多个任务相互同步 94
第7章 资源同步 103
7.1 关中断 103
7.1.1 保障数据可靠性 103
7.1.2 保障数据完整性 114
7.1.3 关中断小结 125
7.2 关调度 126
7.3 使用互斥信号量 131
7.4 使用计数信号量 135
第8章 数据通信 137
8.1 全局变量 137
8.2 内存数据块 142
8.3 消息邮箱 142
8.4 消息队列 161
第9章 时间管理 167
9.1 控制任务的执行周期 167
9.2 控制任务的运行节奏 168
9.3 状态查询 168
9.4 终止周期性任务 169
第10章 采样任务设计 174
10.1 使用延时函数控制采样周期 174
10.2 使用定时中断控制采样周期 178
10.3 使用节拍钩子函数进行采样 182
10.4 被动采样 186
第11章 串行通信任务设计 191
11.1 通信协议设计 191
11.2 风险评估 192
11.3 帧缓冲区 193
11.4 数据发送 194
11.5 数据接收 198
11.6 双向数据通信 202
第12章 键盘任务设计 208
12.1 可靠地获取键盘操作信息 208
12.2 基于菜单操作的监控流程 210
12.2.1 系统功能分析和菜单结构设计 210
12.2.2 监控程序设计 210
12.3 与显示任务的通信 212
第13章 显示任务设计 213
13.1 GUI简介 213
13.2 画面设计 213
13.3 与其他任务的接口 214
13.4 短消息设计 215
13.5 显示任务设计 216
第14章 嵌入式操作系统的裁剪 223
14.1 服务功能的裁剪 223
14.1.1 任务管理功能的裁剪 223
14.1.2 通信服务功能的裁剪 224
14.1.3 其他功能的裁剪 226
14.2 数据结构的裁剪 226
14.2.1 与任务有关的数据结构 227
14.2.2 与通信功能有关的数据结构 227
14.2.3 其他参数 227
第15章 设计示例 228
15.1 示例简介 228
15.2 硬件系统 232
15.3 任务分析 232
15.4 程序设计详解 233
15.4.1 智能终端任务 233
15.4.2 监控任务 236
15.4.3 采样任务 239
15.4.4 上传任务 242
15.4.5 数据处理 243
15.5 工程模板的修改 244
15.5.1 端口配置文件的修改 244
15.5.2 中断服务函数(ISR)句柄文件的修改 244
15.5.3 中断服务函数(ISR)原型声明文件的修改 245
15.5.4 操作系统的裁剪 245
15.6 完整的main.c文件 245
后记 266
参考文献 267