第1章 嵌入式系统设计基础 1
1.1 嵌入式系统简介 1
1.1.1 现代计算机的发展历程 1
1.1.2 嵌入式系统的定义和特点 2
1.1.3 嵌入式系统的组成 2
1.1.4 嵌入式系统的应用模式 4
1.1.5 嵌入式系统的现状和发展方向 4
1.2 嵌入式处理器 5
1.2.1 嵌入式处理器的分类 5
1.2.2 ARM微处理器 7
1.2.3 PowerPC、MIPS及X86架构 8
1.3 嵌入式操作系统 9
1.3.1 嵌入式操作系统的概念和分类 9
1.3.2 嵌入式操作系统的特点 11
1.3.3 典型嵌入式操作系统 12
练习题 14
第2章 嵌入式系统的设计方法 16
2.1 嵌入式系统的层次结构 16
2.1.1 硬件层 17
2.1.2 中间层 17
2.1.3 软件层 18
2.1.4 功能层 18
2.2 嵌入式系统的设计流程 19
2.2.1 需求分析 19
2.2.2 规格说明 20
2.2.3 体系结构设计 21
2.2.4 软/硬件构件设计 21
2.2.5 系统集成 22
2.3 嵌入式系统设计流程模型 23
2.3.1 瀑布模型 23
2.3.2 逐步求精模型 23
2.3.3 螺旋模型 24
2.3.4 其他模型 25
2.4 嵌入式系统的调试与测试 26
2.4.1 嵌入式系统开发的辅助工具 26
2.4.2 嵌入式系统的调试 27
2.4.3 嵌入式系统的测试 28
练习题 30
第3章 ARM体系结构及指令系统 31
3.1 ARM微处理器的体系结构 31
3.1.1 ARM指令集体系结构的版本及变种 31
3.1.2 ARM微处理器系列产品分类及性能 33
3.1.3 ARM微处理器体系结构 35
3.1.4 ARM体系的异常中断 40
3.2 指令系统 42
3.2.1 ARM指令编码格式与条件码 42
3.2.2 ARM指令集的寻址方式 43
3.2.3 ARM指令系统的分类 45
3.2.4 Thumb指令 49
3.3 基于ARM体系的汇编语言程序设计 50
3.3.1 ARM汇编器所支持的伪指令 50
3.3.2 汇编语言的语句格式 52
3.3.3 汇编语言的程序结构及子程序调用 54
3.3.4 ARM集成开发环境ADS的使用 59
练习题 65
第4章 基于S3C2410的硬件电路设计 66
4.1 基于微处理器的嵌入式系统的硬件设计 66
4.1.1 微处理器芯片选型的一般原则 66
4.1.2 多路时钟电路的设计 68
4.1.3 电源电路的设计 69
4.1.4 系统复位电路的设计 72
4.2 存储系统的分析与设计 73
4.2.1 存储器的分类 74
4.2.2 S3C2410存储系统的构成分析 76
4.2.3 S3C2410存储器系统的设计 78
4.3 通用I/O接口的设计 85
4.3.1 中断接口概述 85
4.3.2 RS-232-C串行接口的设计 89
4.3.3 USB接口电路的设计 91
4.3.4 JTAG接口 91
4.3.5 A/D转换接口 93
4.3.6 以太网接口 93
4.4 人机交互接口 95
4.4.1 显示接口 95
4.4.2 触摸屏接口 98
练习题 99
第5章 嵌入式Linux操作系统 100
5.1 Linux及其应用 100
5.1.1 Linux与Unix和GNU 100
5.1.2 Linux的特点 102
5.1.3 Linux的发展及应用 104
5.2 嵌入式Linux内核 105
5.2.1 嵌入式Linux的内核特征 105
5.2.2 进程管理 106
5.2.3 内存管理 108
5.2.4 文件系统管理 109
5.2.5 设备管理 110
5.2.6 进程间通信机制 111
5.3 嵌入式Linux文件系统 113
5.3.1 嵌入式文件系统介绍 113
5.3.2 Linux文件系统概述 113
5.3.3 嵌入式Linux常用文件系统 113
5.3.4 嵌入式Linux文件系统框架和特性 115
5.4 典型嵌入式Linux系统 117
5.4.1 μCLinux 117
5.4.2 RT-Linux 117
5.4.3 Monta Vista Linux 118
5.4.4 RTAI 118
练习题 119
第6章 嵌入式Linux系统的Boot Loader设计 120
6.1 Boot Loader的基本概念 120
6.1.1 Boot Loader所支持的CPU和嵌入式板 120
6.1.2 Boot Loader的安装媒介 120
6.1.3 用于控制Boot Loader的设备或机制 121
6.1.4 Boot Loader的启动过程 121
6.1.5 Boot Loader的操作模式 121
6.1.6 Boot Loader与主机之间的文件传输协议 121
6.2 基于S3C2410开发板的Boot Loader的具体实现 122
6.2.1 系统启动流程的设计 122
6.2.2 Boot Loader的具体实现 123
练习题 130
第7章 嵌入式Linux程序设计基础 131
7.1 嵌入式Linux开发基础 131
7.1.1 嵌入式Linux开发步骤 131
7.1.2 嵌入式Linux的安装 131
7.1.3 开发工具的配置 136
7.2 Linux的常用工具 137
7.2.1 Shell编程 137
7.2.2 常用Shell命令 139
7.2.3 Shell编程实例 145
7.2.4 程序编辑器 148
7.3 嵌入式Linux操作系统的开发工具 151
7.3.1 编译器GCC 151
7.3.2 Makefile 154
7.3.3 调试器GDB 157
7.3.4 二进制代码工具 159
7.4 交叉开发环境 159
7.4.1 交叉开发环境介绍 159
7.4.2 应用程序的远程交叉调试 161
练习题 163
第8章 嵌入式Linux系统的驱动开发 164
8.1 Linux下的设备驱动程序简介 164
8.1.1 设备驱动程序的概念 164
8.1.2 驱动设备的分类 165
8.1.3 设备文件 165
8.1.4 主设备号和次设备号 166
8.1.5 Linux设备驱动程序结构 166
8.2 设备驱动程序的开发过程 168
8.2.1 模块化驱动程序设计 168
8.2.2 字符设备注册和初始化 169
8.2.3 中断管理 170
8.2.4 设备驱动开发的基本函数 171
8.3 串口驱动程序设计 172
8.3.1 终端设备和控制台 172
8.3.2 Linux串口驱动程序分析 173
8.4 LCD驱动程序设计分析 176
8.4.1 LCD控制器 176
8.4.2 framebuffer设备驱动程序分析 176
8.4.3 LCD驱动开发的主要工作 178
8.5 中断处理 181
8.5.1 中断程序分析 181
8.5.2 一个简单的中断处理程序 182
练习题 183
第9章 嵌入式网络程序设计 184
9.1 嵌入式以太网基础知识 184
9.1.1 以太网介绍及其嵌入式应用 184
9.1.2 嵌入式系统中主要处理的网络协议 187
9.2 以太网接口设计 188
9.2.1 网络设备驱动程序基本结构及功能 188
9.2.2 以太网控制器CS8900A 190
9.2.3 基于CS8900A的网络驱动程序实例 193
9.3 Linux网络编程实现 202
9.3.1 socket基本函数 202
9.3.2 TCP编程实例 216
练习题 233
第10章 嵌入式Linux图形用户界面编程 234
10.1 Linux图形开发基础 234
10.1.1 GUI的一般架构 234
10.1.2 嵌入式GUI底层支持库 235
10.1.3 嵌入式GUI高级函数库 237
10.2 嵌入式Linux图形用户界面简介 238
10.2.1 Qt/Embedded 238
10.2.2 MicroWindows 239
10.2.3 MiniGUI 239
10.2.4 OpenGUI 240
10.3 Qt/Embedded嵌入式图形开发基础 240
10.3.1 Qt/Embedded概述 240
10.3.2 创建Qt/Embedded开发环境 244
10.3.3 Qt/Embedded的使用 245
10.3.4 开发实例:基于PC的简单程序 255
练习题 256
参考文献 257