第1章 嵌入式系统概述 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统体系架构 1
1.1.2 Intel个人互联网用户架构PCA 1
1.2 嵌入式处理器 5
1.2.1 嵌入式处理器 5
1.2.2 ARM架构处理器 6
1.2.3 StrongARM架构处理器 8
1.2.4 XScale微架构处理器 10
1.3 嵌入式系统软件 11
1.3.1 嵌入式操作系统 11
1.3.2 嵌入式系统编程语言 12
1.3.3 嵌入式系统的开发 14
第2章 ARM体系结构 17
2.1 ARM体系结构 17
2.1.1 ARM架构的特点 17
2.1.2 ARM架构 18
2.1.3 ARM处理器模式 23
2.1.4 ARM的流水线结构 28
2.2 ARM存储器结构 32
2.2.1 ARM存储器接口 33
2.2.2 ARM快存(Cache)结构 34
2.2.3 ARM存储器管理单元MMU 40
2.2.4 地址变换后备缓冲器TLB 41
2.2.5 ARM的MMU结构 41
2.3 ARM I/O结构 47
2.3.1 存储器映像I/O 47
2.3.2 直接存储器存取DMA 47
2.3.3 中断IRQ和快速中断FIQ 47
2.4 ARM协处理器接口 48
2.4.1 简介 48
2.4.2 协处理器接口信号 48
2.4.3 协处理器接口 49
2.5 ARM AMBA接口 49
2.5.1 先进系统总线ASB 50
2.5.2 先进高性能总线AHB 51
2.5.3 先进外围总线APB 51
2.5.4 AMBA测试 52
2.6 ARM JTAG调试接口 52
2.6.1 JTAG调试接口的结构 52
2.6.2 Embedded-ICE模块 55
2.6.3 嵌入式跟踪 56
2.7 ARM处理器内核 57
2.7.1 ARM7TDMI 57
2.7.2 ARM9TDMI 64
2.7.3 ARM10TDMI 65
2.7.4 StrongARM 66
2.8 ARM处理器核 68
2.8.1 ARM720T/ARM740T 68
2.8.2 ARM920T/ARM940T 73
2.8.3 ARM946E-S/ARM966E-S 76
2.8.4 ARM1020E 76
2.8.5 StrongARM SA-110 77
第3章 ARM指令系统 80
3.1 ARM指令系统特点 80
3.1.1 数据类型 80
3.1.2 存储器组织 80
3.1.3 ARM指令特点 81
3.2 ARM指令系统 82
3.2.1 ARM指令的寻址方式 82
3.2.2 ARM指令的条件执行 86
3.2.3 Load/Store类指令 87
3.2.4 ARM数据处理类指令 95
3.2.5 ARM转移类指令 101
3.2.6 ARM协处理器类指令 103
3.2.7 ARM杂项指令 106
3.3 Thumb指令系统 109
3.3.1 Thumb Load/Store类指令 110
3.3.2 Thumb数据运算类指令 114
3.3.3 Thumb转移类指令 120
3.3.4 Thumb软件中断和断点指令 122
3.3.5 Thumb指令示例 123
3.4 ARM宏汇编 124
3.4.1 预定义变量 124
3.4.2 伪指令 126
3.4.3 指示符 130
3.5 ARM汇编语言程序设计 143
3.5.1 概述 143
3.5.2 ARM汇编程序的一些规范 144
3.5.3 ARM指令的汇编程序设计 146
3.5.4 宏定义和使用 155
3.5.5 映像存储的程序设计 157
3.5.6 程序设计的一些方法 160
第4章 StrongARM SA-1110微处理器 169
4.1 SA-1110总体结构 169
4.1.1 SA-1110 CPU特性 169
4.1.2 SA-1110外围和系统控制特性 171
4.1.3 SA-1110输入/输出引脚 171
4.1.4 SA-1110时钟 173
4.2 SA-1110存储器组织 174
4.2.1 存储器映像 174
4.2.2 异常事件(exception)处理 176
4.2.3 协处理器 178
4.2.4 快存、写缓冲器、读缓冲器和存储器管理单元(MMU) 181
4.3 SA-1110系统控制模块 185
4.3.1 通用I/O端口 185
4.3.2 中断控制器 187
4.3.3 实时时钟 189
4.3.4 操作系统定时器 191
4.3.5 电源管理 192
4.3.6 复位控制器 196
4.4 SA-1110存储器和PCMCIA控制模块 196
4.4.1 存储器接口 197
4.4.2 存储器访问类型 203
4.4.3 存储器设置寄存器 203
4.5 SA-1110外围控制模块 207
4.5.1 简介 207
4.5.2 DMA控制器 209
4.5.3 LCD驱动控制器 212
4.5.4 串行口0——USB器件控制器 219
4.5.5 串行口1——GPCLK/UART 225
4.5.6 串行口2——红外通信口(ICP) 226
4.5.7 串行口3——UART 232
4.5.8 串行口4——MCP/SSP 235
4.5.9 外围引脚控制器(PPC) 242
第5章 Intel StrongARM SA-1110处理器开发 245
5.1 ASSABET开发板的结构 245
5.1.1 概述 245
5.1.2 ASSABET开发板的硬件结构 246
5.1.3 ASSABET板开发方法 254
5.2 Intel StrongARM SA-1110的Angel结构 255
5.2.1 Angel的概述 255
5.2.2 Angel系统的结构 256
5.2.3 Angel的使用 257
5.2.4 Angel的通讯结构 260
5.3 ADS开发环境结构 263
5.3.1 ADS简介 263
5.3.2 CodeWarrior的使用 265
5.3.3 AXD的使用 272
5.4 SA-1110处理器开发过程 276
5.4.1 CodeWarrior IDE的使用 276
5.4.2 使用AXD工具进行应用程序的调试 280
5.5 Intel集成性能函数库IPP 282
5.5.1 IPP简述 282
5.5.2 在StrongARM开发平台上使用IPP开发应用 284
5.5.3 使用IPP在StrongARM平台上开发MP3播放器 287
第6章 嵌入式Linux开发 298
6.1 嵌入式Linux 298
6.1.1 Linux简介 298
6.1.2 Linux的开发模式 299
6.1.3 嵌入式Linux的体系结构 300
6.1.4 嵌入式Linux的发展方向 302
6.2 基于Intel SA-1110处理器的开发环境 303
6.2.1 开发环境简介 303
6.2.2 创建开发环境 303
6.3 嵌入式Linux驱动程序开发 309
6.3.1 Linux系统驱动程序开发简介 309
6.3.2 内核模块 310
6.3.3 一个字符设备例子 311
6.4 在Intel Assabet板上运行嵌入式Linux 314
6.4.1 启动 314
6.4.2 安装内核 315
6.4.3 安装根文件系统 317
第7章 Windows CE系统开发 319
7.1 Windows CE简介 319
7.2 基于Intel SA-1110处理器的Windows CE开发环境 321
7.2.1 定制Windows CE的流程和Platform Builder 321
7.2.2 定制Assabet的Windows CE 323
7.3 OAL(OEM Adaptation Layer)开发 325
7.3.1 OAL开发步骤 325
7.3.2 初始化内核 325
7.3.3 创建基本OAL 326
7.3.4 加强OAL功能 326
7.3.5 完成OAL 328
7.4 Windows CE设备驱动开发 329
7.4.1 中断处理 329
7.4.2 Stream Interface Driver和Native Device Driver 330
7.4.3 驱动程序的分层实现方式和一体实现方式 331
7.4.4 驱动程序的安装 332
7.4.5 Assabet的触摸屏驱动程序 332
参考文献 339
附录A ARM指令集、ARM寻址方式和Thumb指令集速查表 340
附录B ARM指令集编码和Thumb指令集编码 347