第1章 嵌入式系统与ARM处理器 1
1.1 嵌入式系统特性 1
1.1.1 功能特定性 1
1.1.2 规模可变性 2
1.1.3 实时性与稳定性 2
1.1.4 系统的其他特性 3
1.2 嵌入式系统的分类与应用 4
1.2.1 按照系统组成分类 4
1.2.2 按照系统应用分类 5
1.2.3 按照系统实时性分类 7
1.3 ARM处理器体系结构 7
1.3.1 ARM处理器概述 8
1.3.2 ARM内核种类分类 9
1.4 ARM处理器工作模式 12
1.4.1 ARM和Thumb状态 12
1.4.2 ARM处理器模式 13
1.4.3 ARM寄存器介绍 13
1.4.4 ARM体系结构的异常中断 17
1.4.5 ARM体系结构中的存储系统 18
1.5 嵌入式操作系统概述 20
1 5 1 VxWorks 21
1.5.2 QNX 22
1.5.3 Palm OS 22
1.5.4 Windows CE 22
1.5.5 uClinux 23
1.5.6 Linux 23
1.5.7 uC/OS-Ⅱ 24
1.5.8 Nuclues 24
1.6 本章小结 25
第2章 基于ARM处理器的硬件系统设计与调试技术 27
2.1 常用内存技术介绍 27
2.1.1 Flash(快闪存储器) 27
2.1.2 SRAM(静态随机存取存储器) 29
2.1.3 SDRAM(同步动态RAM) 30
2.1.4 DDR SDRAM(双倍数据速率内存) 30
2.1.5 MCP技术 31
2.2 Boot介绍 32
2.2.1 大/小端 32
2.2.2 外围内存扩展接口 32
2.2.3 启动选择 39
2.2.4 内存地址重映射 39
2.3 硬件系统及外围接口电路设计 40
2.3.1 电源电路设计 41
2.3.2 Reset电路设计 46
2.3.3 时钟电路设计 48
2.3.4 地址/数据总线接口 49
2.3.5 JTAG电路设计 51
2.3.6 RS-232串行接口电路 52
2.3.7 以太网接口设计 54
2.3.8 USB接口电路设计 56
2.3.9 I2C接口电路设计 59
2.3.10 SPI接口电路设计 59
2.3.11 GPIO(通用I/O接口)电路设计 60
2.3.12 LCD接口电路设计 62
2.3.13 TouchPanel接口 65
2.3.14 MMC/SD卡接口 67
2.3.15 PCI接口设计 68
2.3.16 其他外围接口 70
2.4 硬件设计中需要注意的几个问题 71
2.4.1 IC元件的选择 71
2.4.2 元件封装设计 71
2.4.3 PCB设计精度 72
2.4.4 分离元件的正确使用 72
2.4.5 高速PCB设计方法 73
2.4.6 PCB设计的一般原则 74
2.4.7 高速PCB设计中的仿真技术 75
2.5 硬件调试方法 78
2.5.1 硬件板级调试 79
2.5.2 小系统调试 79
2.5.3 系统整体调试 80
2.6 本章小结 80
第3章 开发工具与开发环境 81
3.1 常用ARM开发工具 81
3.1.1 Banyan-UE仿真器 82
3.1.2 Multi-ICE仿真器 82
3.1.3 Banyan-UE的安装与使用 83
3.2 ARM集成开发环境 88
3.2.1 ARM RealView 88
3.2.2 ARM SDT2.5 88
3.2.3 ARM ADS1.2 88
3.3 ADS的基本使用 89
3.3.1 CodeWarrior For ADS IDE 89
3.3.2 AXD调试器的使用介绍 92
3.3.3 ADS命令行命令介绍 96
3.3.4 ADS下可执行文件组成及内存映射 98
3.3.5 ADS下的程序装载过程 99
3.4 开发编译环境 100
3.4.1 VMware WorkStation虚拟机介绍 101
3.4.2 Linux编译开发环境的建立 108
3.4.3 交叉编译器arm-elf-gcc 118
3.4.4 汇编器arm-elf-as 124
3.4.5 链接器arm-elf-ld 126
3.4.6 库管理器arm-elf-ar 128
3.4.7 Linkcmds链接命令文件 129
3.4.8 makefile介绍 135
3.4.9 编写一个makefile 137
3.5 软件维护与建立的工具 142
3.5.1 Autoconf/Automake 142
3.5.2 ./configure配置脚本 144
3.5.3 autogen.sh的介绍 148
3.6 代码管理CVS 148
3.6.1 CVS简介 149
3.6.2 CVS的使用方法 152
3.6.3 RedHat下CVS的配置 153
3.6.4 WinCVS介绍 155
3.7 本章小结 158
第4章 嵌入式Linux系统的移植 159
4.1关于 Boot Loader的介绍 159
4.1.1 rrload介绍 159
4.1.2 U-Boot介绍 162
4.1.3 Blob介绍 166
4.1.4 Vivi介绍 167
4.1.5 Boot Loader的工作流程 169
4.1.6 Boot Loader的移植 173
4.1.7 LDS文件的简单说明 182
4.2 内核的移植 183
4.2.1 Linux内核介绍 183
4.2.2 基于OMAP5910的Linux-2.4.21的移植 187
4.2.3 基于S3C2410的Linux-2.6.14移植 194
4.2.4 基于S3C44B0x的uClinux-2.6.14移植 200
4.3 文件系统介绍 206
4.3.1 文件系统的生成 207
4.3.2 jffs文件系统 210
4.3.3 jffs2文件系统 213
4.3.4 ext2文件系统 218
4.3.5 cramfs文件系统 219
4.3.6 FAT文件系统 220
4.3.7 NFS文件系统 221
4.3.8 yaffs文件系统 222
4.3.9 ReiserFS文件系统 229
4.3.10 devfs文件系统 232
4.4 本章小结 233
第5章 基于ARM处理器的底层驱动开发 235
5.1 有关ARM的汇编语言编程 235
5.1.1 ARM汇编伪指令介绍 236
5.1.2 模块化程序设计 237
5.1.3 混合语言编程 238
5.2 裸机底层驱动设计方法 242
5.2.1 复位向量表 243
5.2.2 中断服务程序 245
5.2.3 程序调试方式 254
5.3 基于Linux操作系统的底层驱动技术 255
5.3.1 设备驱动概述 255
5.3.2 设备类型分类 256
5.3.3 设备驱动中关键数据结构 257
5.3.4 设备驱动程序模板与实现 260
5.3.5 设备驱动程序的使用 270
5.4 本章小结 273
第6章 Linux下的GUI开发技术 275
6.1 Linux下的主流GUI介绍 275
6.1.1 MiniGUI介绍 276
6.1.2 Qt介绍 278
6.1.3 MicroWindows介绍 279
6.1.4 OpenGUI介绍 280
6.1.5 主流GUI对比 280
6.2 GUI的移植与中文化 281
6.2.1 MicroWindows的移植 281
6.2.2 MiniGUI的移植 283
6.2.3 Qt/Embedded的移植 290
6.3 本章小结 293
第7章 基于Samsung S3C4510B的系统设计实例 295
7.1 系统概述 295
7.2 硬件接口电路设计 296
7.2.1 有关S3C4510B处理器 296
7.2.2 系统管理器 297
7.2.3 HDLC通道的使用 299
7.2.4 Flash存储器接口 301
7.2.5 SDRAM存储器接口 302
7.2.6 异步串行通信口 302
7.2.7 复位电路与晶振电路 303
7.2.8 以太网接口 304
7.2.9 JTAG接口 305
7.2.10 电源电路 305
7.2.11 扩展LCD接口 305
7.3 硬件编程举例 306
7.3.1 GPIO编程参考 307
7.3.2 UART编程参考 307
7.3.3 I2C接口编程参考 310
7.4 uClinux编程参考 314
7.4.1 裸机Flash烧写方法 314
7.4.2 内核的移植 316
7.4.3 在uClinux下添加应用程序的方法 319
7.4.4 uClinux下的串口编程和Socket编程 324
7.4.5 基于uClinux的Web服务器应用程序设计 329
7.5 本章小结 332
第8章 基于Intel PXA271的CDMA通信终端开发实例 333
8.1 系统概述 333
8.1.1 PXA27x处理器介绍 333
8.1.2 PXA271处理器特点 335
8.2 系统硬件接口设计 336
8.2.1 电源电路设计 336
8.2.2 LCD接口设计 340
8.2.3 AC97 Audio CODEC接口设计 341
8.2.4 键盘接口设计 344
8.2.5 与CDMA模块的接口设计 346
8.2.6 MMC/SD卡接口设计 348
8.2.7 SSP接口介绍 350
8.2.8 其他外围接口介绍 350
8.3 系统软件开发 351
8.3.1 软件开发平台搭建 351
8.3.2 有关MMX指令 354
8.3.3 SSP接口编程技术 354
8.4 本章小结 360
第9章 基于Samsung 2510A的IP网络MPEG2/MPEG4编解码器开发实例 361
9.1 系统概述 363
9.2 硬件接口设计 364
9.2.1 与编解码器的接口设计 364
9.2.2 编码(Encoder)部分接口 364
9.2.3 解码(Decoder)部分接口 367
9.2.4 VW2010小系统设计 370
9.3 软件设计 373
9.3.1 软件移植介绍 373
9.3.2 内核驱动介绍 374
9.3.3 上层应用程序 382
9.4 本章小结 386
第10章 基于Samsung S3C2410的PDA开发实例 387
10.1 系统概述 387
10.2 系统硬件接口设计 388
10.2.1 CPU核心部分接口电路 389
10.2.2 Memory接口部分 392
10.2.3 Audio接口 394
10.2.4 USB接口设计 396
10.2.5 MMC/SD卡接口设计 397
10.2.6 触摸屏接口设计 398
10.2.7 LCD接口 399
10.3 系统软件设计 401
10.3.1 触摸屏驱动设计 401
10.3.2 IIS驱动 404
10.4 本章小结 410
第11章 基于TI OMAP591x处理器的加密通信终端开发实例 411
11.1 系统概述 411
11.2 硬件平台设计 413
11.2.1 OMAP5910处理器架构介绍 413
11.2.2 晶振电路设计部分 417
11.2.3 存储系统部分 420
11.2.4 电源电路设计部分 426
11.2.5 调试接口部分ETM和JTAG 429
11.2.6 系统低功耗设计举措 431
11.2.7 与GSM模块的接口设计 440
11.2.8 语音输入输出接口设计 443
11.2.9 和弦芯片接口电路 446
11.2.10 LCD接口 450
11.2.11 有关摄像头接口 465
11.3 软件设计介绍 467
11.3.1 CCS基本设置方法 467
11.3.2 关于GEL文件 469
11.3.3 在CCS下烧写Boot Loader的方法 474
11.3.4 McBSP接口程序设计 474
11.3.5 CODEC接口程序 476
11.3.6 I2C接口应用程序 480
11.4 多处理器平台设计技术 483
11.4.1 处理器Mailbox技术 484
11.4.2 DSP Gateway架构 484
11.4.3 DSP Gateway下的Mailbox机制 486
11.4.4 ARM Linux下访问DSP Gateway设备 487
11.4.5 DSP端的编程 488
11.4.6 DSP task程序的执行 493
11.4.7 DSP Gateway的应用 493
11.5 本章小结 494
参考文献 495