1 嵌入式操作系统的概念 1
1.1 操作系统的概念和结构 1
1.2 操作系统的功能和主要特征 2
1.2.1 操作系统的功能 2
1.2.2 操作系统的主要特征 5
1.3 操作系统的结构 6
1.3.1 操作系统的内核 6
1.3.2 传统的操作系统结构设计模式 8
1.3.3 现代的操作系统结构设计模式 9
1.4 嵌入式实时操作系统 11
1.4.1 嵌入式实时操作系统的特点 11
1.4.2 嵌入式应用 12
1.4.3 嵌入式实时操作系统的发展 13
1.5 嵌入式实时系统的分类 15
1.5.1 按速度分类 15
1.5.2 按确定性分类 15
1.5.3 按软件结构分类 15
1.6 商用嵌入式实时操作系统 18
1.7 小结 19
思考题 19
2 嵌入式系统的硬件构成 20
2.1 嵌入式系统的总体结构 20
2.2 嵌入式系统硬件 22
2.2.1 嵌入式处理器 22
2.2.2 存储器 24
2.2.3 输入输出设备 25
2.3 嵌入式系统硬件开发相关技术 27
2.3.1 接口技术 27
2.3.2 总线 30
2.3.3 嵌入式系统开发常用的硬件调试和编程技术 34
2.4 小结 37
思考题 38
3 ARM体系结构 39
3.1 ARM的结构和特性 39
3.1.1 ARM处理器系列 39
3.1.2 ARM处理器的特点 42
3.1.3 ARM处理器模式 43
3.2 ARM寄存器介绍 43
3.3 ARM体系的异常中断 45
3.4 ARM的存储系统 47
3.5 ARM指令系统 48
3.6 ARM指令基本寻址方式 50
3.7 ARM指令集 52
3.8 ARM汇编程序设计 55
3.8.1 ARM汇编器所支持的伪指令 55
3.8.2 汇编语言的语句格式 56
3.8.3 汇编语言的程序结构 60
3.8.4 ARM和Thumb混合编程简介 60
3.9 小结 61
思考题 62
4 嵌入式实时操作系统内核 63
4.1 嵌入式实时内核的结构和功能 63
4.1.1 嵌入式实时内核的结构 63
4.1.2 嵌入式实时内核的功能 65
4.2 嵌入式实时内核的任务管理 72
4.2.1 多任务机制 72
4.2.2 任务状态和状态转变 73
4.2.3 任务调度策略 74
4.2.4 任务异常处理 76
4.3 嵌入式实时内核的共享代码和重入 76
4.4 VxWorks操作系统结构 79
4.4.1 VxWorks操作系统 79
4.4.2 VxWorks的内核Wind 81
4.5 VxWorks任务编程接口 82
4.5.1 任务控制函数 82
4.5.2 任务扩展函数 86
4.5.3 VxWorks系统任务 87
4.6 POSIX调度接口 88
4.6.1 POSIX和Wind调度方法的差异 88
4.6.2 获得和设置POSIX任务优先级 89
4.6.3 获得和显示当前的调度策略 90
4.6.4 获得调度参数:优先级限制和时间片 91
4.7 小结 91
思考题 92
5 任务间通信 93
5.1 实时内核任务间通信机制 93
5.1.1 任务之间的关系 93
5.1.2 共享内存 94
5.1.3 互斥 95
5.1.4 信号量 96
5.1.5 内部数据结构 96
5.2 二进制信号量 97
5.2.1 互斥 98
5.2.2 同步 99
5.2.3 二进制信号量用于任务间同步 100
5.3 互斥信号量 104
5.3.1 优先级倒置 105
5.3.2 删除安全 106
5.3.3 递归资源访问 106
5.3.4 互斥信号量用于任务间同步 107
5.4 计数器信号量 112
5.4.1 计数器信号量 112
5.4.2 计数器信号量用于任务间同步 113
5.5 消息队列 116
5.5.1 概述 116
5.5.2 普通消息队列 119
5.5.3 消息队列使用例子 121
5.6 管道 124
5.6.1 概述 124
5.6.2 使用管道 125
5.6.3 管道用于任务间通信 126
5.7 POSIX信号量 129
5.7.1 POSIX信号量接口 129
5.7.2 POSIX和Wind信号量比较 130
5.7.3 未命名信号量使用 130
5.7.4 命名信号量的使用 132
5.8 POSIX消息队列 134
5.8.1 POSIX和Wind消息队列比较 135
5.8.2 POSIX消息队列属性 135
5.8.3 显示消息队列属性 137
5.8.4 用消息队列通信 137
5.8.5 通知任务有消息在等待 140
5.8.6 POSIX队列信号 143
5.9 小结 144
思考题 144
6 中断处理与定时机制 145
6.1 中断管理 145
6.1.1 异常的定义 145
6.1.2 中断的类型 146
6.1.3 中断处理的过程 148
6.1.4 实时内核的中断管理 150
6.2 中断服务程序 152
6.2.1 设置中断处理程序 152
6.2.2 中断堆栈 154
6.2.3 ISR的特殊限制 154
6.2.4 中断级异常 155
6.2.5 保留的最高中断级 156
6.2.6 最高中断级ISRs的约束 156
6.2.7 中断与任务的通信 156
6.3 时间管理 156
6.3.1 硬件时钟设备 157
6.3.2 时间管理 158
6.4 看门狗机制和应用 161
6.4.1 看门狗 161
6.4.2 利用看门狗处理任务时限 162
6.5 POSIX计时器和内存上锁 166
6.5.1 POSIX计时器 166
6.5.2 POSIX内存上锁接口 167
6.6 小结 167
思考题 168
7 I/O子系统 169
7.1 基本I/O概念 169
7.1.1 I/O子系统 169
7.1.2 端口映射与内存映射I/O和DMA 170
7.1.3 文件名称 171
7.2 I/O系统的内部结构 172
7.2.1 标准的I/O函数 173
7.2.2 标准I/O函数到驱动程序函数的映射 174
7.2.3 设备 175
7.2.4 文件描述符 176
7.2.5 基本I/O的操作流程 177
7.3 VxWorks的I/O接口 178
7.3.1 文件描述符 178
7.3.2 标准输入输出设备和标准错误输出设备 179
7.3.3 打开和关闭 180
7.3.4 新建和删除 181
7.3.5 读写操作 181
7.3.6 I/O系统的其他操作 182
7.3.7 基于多文件描述符的挂起操作:select功能 183
7.4 缓冲I/O 184
7.5 其他的格式化I/O操作 185
7.5.1 printf()、sprintf()、sscanf()函数 185
7.5.2 printErr()和fdprintf() 185
7.5.3 信息记录 186
7.6 基本I/O应用示例 186
7.7 小结 191
思考题 191
8 文件系统 192
8.1 与MS-DOS系统兼容的文件系统 192
8.1.1 dosFs文件系统的磁盘组织 193
8.1.2 包含必要的dosFs文件系统组件 194
8.1.3 初始化dosFs文件系统 195
8.1.4 初始化及使用支持dosFs的设备 195
8.1.5 对磁盘和磁盘卷进行操作 195
8.1.6 目录操作 196
8.1.7 文件操作 196
8.1.8 分配磁盘空间 199
8.1.9 灾难恢复和磁盘卷的一致性问题 200
8.1.10 dosFs文件系统支持的I/O控制参数 200
8.2 原始文件系统(rawFs) 201
8.3 磁带文件系统(tapeFs) 204
8.4 CD-ROM文件系统(cdromFs) 206
8.5 目标机服务器文件系统(TSFS) 207
8.6 文件系统应用示例 208
8.7 小结 213
思考题 213
9 内存管理 214
9.1 引言 214
9.2 内存管理机制 215
9.2.1 固定大小存储区管理 215
9.2.2 可变大小存储区管理 217
9.2.3 VxWorks动态内存管理机制 218
9.2.4 VxWorks动态内存管理函数 219
9.3 内存保护 220
9.3.1 存储器管理单元MMU 220
9.3.2 VxWorks的虚拟内存接口 224
9.4 小结 227
思考题 227
10 系统引导程序及调试环境的建立 228
10.1 嵌入式系统的软件结构 228
10.1.1 嵌入式操作系统的运行条件 229
10.1.2 系统的启动流程 230
10.2 嵌入式系统的引导装载程序bootloader 230
10.2.1 bootloader作用分析及一般实现 231
10.2.2 bootloader的阶段1 232
10.2.3 bootloader的阶段2 234
10.2.4 u-boot简介 236
10.3 嵌入式系统板级支持包BSP 237
10.3.1 BSP概念 237
10.3.2 BSP在嵌入式开发中的位置和作用 237
10.3.3 BSP以及bootloader与PC机主板上的BIOS的关系与区别 238
10.4 VxWorks的BSP 238
10.4.1 VxWorks的BSP开发 240
10 4.2 VxWorks的BSP启动流程 242
10.5 基于S3C44BOX开发板的VxWorks的BSP定制 244
10.5.1 S3C44BOX开发板板上资源 244
10.5.2 BSP包的初步定制 245
10.5.3 在BSP包中进行串行通信的建立 248
10.6 小结 258
思考题 258
11 嵌入式系统的开发 259
11.1 嵌入式系统开发模式 259
11.1.1 嵌入式系统开发模式概述 259
11.1.2 处理器及硬件开发平台的选择 261
11.1.3 操作系统的选择 263
11.1.4 开发环境的选择 266
11.2 嵌入式系统的硬件/软件协同设计技术 267
11.3 集成开发环境Tornado 269
11.3.1 Tornado集成开发环境简述 269
11.3.2 Tornado集成开发工具 270
11.3.3 VxWorks的交叉编译开发环境 271
11.4 MATLAB/RTW系统开发环境 273
11.4.1 MATLAB/RTW系统概述 273
11.4.2 RTW生成代码结构与外部模式 275
11.4.3 RTW Tornado目标环境 276
11.4.4 RTW程序创建过程 277
11.5 航行器控制系统仿真及性能分析 278
11.5.1 RTW嵌入式代码在VxWorks/Tornado环境下的实现过程 278
11.5.2 控制系统仿真 282
11.6 小结 282
思考题 283
参考文献 284