第1章 嵌入式系统概述 1
1.1什么是嵌入式系统 1
1.1.1嵌入式系统的历史与现状 1
1.1.2嵌入式计算机的分类 4
1.1.3嵌入式系统的一些基本概念 6
1.1.4嵌入式系统的特点 6
1.2嵌入式系统的设计方法 7
1.2.1嵌入式系统体系结构 7
1.2.2嵌入式系统的开发环境 8
1.2.3嵌入式系统的开发流程 8
1.3嵌入式系统应用领域与发展趋势 9
1.3.1嵌入式系统的应用领域 10
1.3.2嵌入式系统发展趋势 11
1.4本章小结 12
第2章 ARM处理器及S3C2410基本外围电路 13
2.1 ARM处理器概述 13
2.1.1 ARM公司简介 13
2.1.2 ARM微处理器特点 14
2.1.3 ARM处理器系列 14
2.2 ARM体系结构 17
2.2.1硬件构架 17
2.2.2 RISC指令体系 18
2.3 ARM开发环境和调试系统 19
2.3.1 ARM开发环境的组成 20
2.3.2开发调试方法简介 20
2.3.3 ADS集成开发软件介绍 21
2.4 S3C2410简介 27
2.5 S3C2410基本外围电路 28
2.5.1 S3C2410芯片各引脚意义 28
2.5.2电源和复位电路 34
2.5.3晶振及JTAG电路 35
2.5.4存储器电路 36
2.5.5 Nor-Flash/Nand-Flash电路 40
2.5.6串口及USB接口电路 42
2.6本章小结 43
第3章 嵌入式Linux系统 44
3.1嵌入式操作系统概述 44
3.1.1嵌入式操作系统发展历史 44
3.1.2选择嵌入式操作系统的原则 45
3.1.3典型的嵌入式操作系统 46
3.2 Linux介绍 48
3.2.1 Linux的特性 48
3.2.2 Linux的内核版本 50
3.2.3 Linux操作系统内核组成 51
3.2.4 Linux系统数据结构 52
3.2.5 Linux内核源码结构 53
3.2.6 Linux操作系统的其他部分 55
3.2.7 Linux作为嵌入式操作系统的优缺点 56
3.3嵌入式Linux简介 57
3.3.1常用的嵌入式Linux系统 58
3.3.2嵌入式Linux的基本要素 59
3.3.3嵌入式Linux开发步骤 59
3.4本章小结 61
第4章 嵌入式开发环境的建立 62
4.1 Linux操作系统的安装 62
4.1.1系统安装程序的获取 62
4.1.2对开发PC的性能要求 63
4.1.3 Redhat Linux Fedora的安装 63
4.1.4 Linux系统运行 65
4.2开发环境配置 65
4.2.1串口配置方法 65
4.2.2网口配置方法 67
4.3立交叉编译环境 72
4.3.1交叉编译工具下载和版本选择 72
4.3.2准备资源文件 73
4.3.3建立脚本文件 73
4.3.4建立配置文件 74
4.3.5执行脚本 74
4.3.6添加环境变量 75
4.3.7测试交叉编译工具链 76
4.4 Makefile和Make 76
4.4.1 Makefile 76
4.4.2 Make用法 78
4.5镜像文件烧写 79
4.5.1将应用程序加入到Linux系统 79
4.5.2让应用程序自动启动 80
4.6本章小结 81
第5章 BootLoader 82
5.1 BootLoader简介 82
5.1.1 BootLoader的作用 82
5.1.2 BootLoader在嵌入式系统中的位置 83
5.1.3 BootLoader程序结构 83
5.1.4 BootLoader的操作模式 84
5.2常用嵌入式BootLoader介绍 84
5.2.1 VNI 84
5.2.2 U-Boot 85
5.2.3 RedBoot 85
5.2.4 ARMBoot 86
5.2.5 Blob 86
5.2.6 DIY 86
5.3 BootLoader程序编写 87
5.3.1硬件环境介绍 87
5.3.2软件环境介绍 88
5.3.3 BootLoader的stage1 89
5.3.4 BootLoader的stage2 97
5.4 BootLoader程序调试和烧写 101
5.5本章小结 102
第6章 Linux内核向ARM平台的移植 103
6.1 Linux内核移植概述 103
6.2修改内核代码 104
6.2.1选定处理器支持 104
6.2.2修改与Flash存储器相关的内核代码 105
6.3配置内核选项 108
6.3.1内核配置系统原理 108
6.3.2内核配置选项说明 110
6.4 Linux 2.6内核移植实例 113
6.5本章小结 116
第7章 嵌入式文件系统 117
7.1嵌入式文件系统概述 117
7.1.1嵌入式系统存储介质 117
7.1.2嵌入式Linux文件系统 118
7.2根文件系统 121
7.2.1根文件系统目录 121
7.2.2根文件系统制作 123
7.3 Cramfs文件系统 127
7.3.1 Cramfs文件系统概述 127
7.3.2 Cramfs文件系统移植 128
7.4 JFSS2文件系统 130
7.4.1 JFSS2文件系统概述 130
7.4.2 JFSS2文件系统移植 131
7.5 Yaffs文件系统 135
7.5.1 Yaffs文件系统概述 135
7.5.2 Yaffs文件系统移植 136
7.6网络文件系统 139
7.6.1 NFS概述 139
7.6.2 NFS文件系统建立 139
7.7本章小结 141
第8章 设备驱动程序开发基础 142
8.1设备驱动概述 142
8.1.1设备驱动程序基本原理 142
8.1.2设备驱动和文件系统的关系 143
8.1.3设备分类 143
8.1.4设备号 144
8.1.5设备驱动程序开发步骤 145
8.2设备驱动程序框架 146
8.2.1设备驱动程序结构 146
8.2.2设备驱动程序关键数据结构 149
8.3设备驱动程序的加载 153
8.3.1内核模块和设备驱动程序 153
8.3.2驱动程序静态编译加载 155
8.3.3设备驱动程序动态加载 158
8.4设备驱动程序开发中的关键问题 159
8.4.1内核空间和用户空间 159
8.4.2设备注册和卸载 160
8.4.3驱动程序内存分配 162
8.4.4与硬件通信 162
8.4.5中断处理函数 164
8.5本章小结 167
第9章 网络设备驱动程序开发 168
9.1 Linux网络设备驱动程序原理 168
9.1.1 Linux驱动程序框架 168
9.1.2 Linux网络设备关键数据结构 169
9.1.3网络驱动程序接口 176
9.2 CS8900以太网芯片 178
9.2.1芯片介绍 178
9.2.2 CS8900芯片电路连接 179
9.2.3 CS8900片内寄存器介绍 181
9.2.4 CS8900芯片工作原理 185
9.3 CS8900芯片驱动程序实现 186
9.3.1网络设备初始化函数 187
9.3.2网络设备打开函数 189
9.3.3网络设备关闭函数 190
9.3.4网络设备发送数据函数 191
9.3.5网络设备接收数据函数 192
9.3.6网络设备中断处理函数 193
9.4本章小结 195
第10章 USB设备驱动程序开发 196
10.1 USB系统概述 196
10.1.1 USB系统基本模型 196
10.1.2 USB硬件系统总体结构 197
10.1.3 USB系统层次结构 198
10.2 USB主机 199
10.2.1 USB主机端构成 199
10.2.2客户软件 200
10.2.3 USB系统软件 200
10.2.4 USB主机控制器 202
10.3 USB集线器 202
10.4 USB设备 203
10.4.1 USB设备逻辑结构 203
10.4.2 USB设备物理结构 203
10.4.3 USB数据传输 204
10.4.4 USB协议栈框架 205
10.5 Linux下USB系统框架 206
10.5.1 USB系统文件节点 206
10.5.2 USB驱动结构 207
10.5.3 Linux下USB内核系统代码结构 208
10.6 USB内核分析 209
10.6.1 USB内核主要数据结构 209
10.6.2 USB内核接口 213
10.7 USB客户端驱动程序分析 217
10.7.1初始化和卸载设备模块 217
10.7.2上层文件系统接口模块 221
10.7.3数据传输模块 226
10.7.4 USB内核的支持 226
10.8本章小结 227
第11章 音频设备驱动程序开发 228
11.1音频设备概述 228
11.1.1音频信号基础 228
11.1.2音频设备原理 229
11.2 Linux音频设备驱动 230
11.2.1 DSP设备 230
11.2.2 Mixer设备 231
11.2.3 DMA缓存和内存管理 233
11.3 I 2S音频系统硬件设计 234
11.3.1 I 2S音频接口 234
11.3.2音频接口电路设计 237
11.4 I2S音频驱动程序开发实例 239
11.4.1 DSP设备驱动程序设计 239
11.4.2 Mixer设备驱动程序设计 245
11.5 I2S音频应用程序开发实例 247
11.5.1 DSP应用程序编程 247
11.5.2 Mixer应用程序编程 249
11.6本章小结 251
第12章 嵌入式应用软件开发 252
12.1嵌入式应用软件开发简介 252
12.1.1嵌入式应用软件的生命周期 252
12.1.2嵌入式应用软件的体系结构 254
12.1.3嵌入式应用软件分类 256
12.2嵌入式应用软件开发特点 263
12.3本章小结 265
第13章 QT 266
13.1嵌入式GUI简介 266
13.1.1 MicroWindows 267
13.1.2 MiniGUI 267
13.1.3 QT/Embedded 268
13.2初识QT/Embedded 268
13.2.1 QT的优势 268
13.2.2 QT的架构 270
13.2.3组成 271
13.2.4系统要求 272
13.3 QT的安装 273
13.3.1系统及安装文件设置 273
13.3.2安装QT 274
13.3.3另一种安装方法 275
13.4用QT制作嵌入式应用程序 276
13.5编译与移植 284
13.5.1编译 284
13.5.2移植 286
13.6本章小结 287
第14章 嵌入式Web服务 288
14.1嵌入式Web服务基础知识 288
14.1.1 TCP/IP简介 288
14.1.2嵌入式Web服务器 291
14.1.3 CGI技术 293
14.1.4常见嵌入式Web服务器介绍 297
14.2嵌入式Web服务器——Boa 299
14.2.1 Boa的功能实现及源文件下载 299
14.2.2 Boa的安装和配置 300
14.2.3移植测试 304
14.3 CGI开发技术 305
14.3.1 CGIC库的移植 306
14.3.2 HTML模板的制作 308
14.3.3 CGI程序的开发 308
14.4本章小结 309
第15章 嵌入式数据库设计 310
15.1数据库知识介绍 310
15.1.1基本概念 310
15.1.2关系数据库语言SQL 311
15.2 Linux环境下常见数据库简介 313
15.2.1商业数据库 313
15.2.2自由软件数据库 314
15.3 SQLite 316
15.3.1 SQLite的优点 316
15.3.2 SQLite安装 317
15.3.3直接操作SQLite数据库 319
15.3.4用C/C++语言操作SQLite数据库 324
15.3.5 SQLite的移植 331
15.4本章小结 334
第16章 嵌入式网络视频终端 335
16.1嵌入式网络视频终端简介 335
16.2系统总体设计 337
16.2.1硬件框架结构 337
16.2.2软件框架结构 337
16.3硬件设计 338
16.3.1 ARM处理器模块 338
16.3.2存储器模块 339
16.3.3图像传感器模块 341
16.3.4音频传感器模块 343
16.3.5视频压缩模块 347
16.3.6网络控制器模块 348
16.3.7辅助部分 351
16.4软件设计 352
16.4.1硬件驱动程序 352
16.4.2网络数据发送 370
16.4.3系统编译 374
16.5系统调试 375
16.6本章小结 376
参考文献 377