第1章 嵌入式系统基础 1
1.1嵌入式系统简介 1
1.1.1嵌入式系统定义 1
1.1.2嵌入式系统与PC 2
1.1.3嵌入式系统的特点 4
1.2嵌入式系统的发展 4
1.2.1嵌入式系统现状 4
1.2.2嵌入式系统发展趋势 5
1.3嵌入式操作系统与实时操作系统 6
1.3.1 Linux 7
1.3.2 uC/OS 8
1.3.3 Windows CE 9
1.3.4 VxWorks 10
1.3.5 Palm OS 11
1.3.6 QNX 11
1.4嵌入式系统选型 12
第2章基于ARM9处理器的硬件开发平台 13
2.1 ARM处理器简介 13
2.1.1 ARM公司简介 13
2.1.2 ARM微处理器核 14
2.2 ARM9微处理器简介 19
2.2.1与ARM7处理器的比较 19
2.2.2三星S3C2410X处理器详解 20
2.3 FS2410开发平台 55
第3章 创建嵌入式系统开发环境 58
3.1嵌入式Linux的开发环境 58
3.2 Cygwin 59
3.3虚拟机 62
3.4交叉编译的预备知识 64
3.4.1 Make命令和Makefile文件 65
3.4.2 binutils工具包 68
3.4.3 gcc编译器 92
3.4.4 Glibc库 94
3.4.5 GDB 96
3.5交叉编译 101
3.5.1创建编译环境 102
3.5.2编译binutils 104
3.5.3编译bootstrap_gcc 107
3.5.4编译Glibc 109
3.5.5编译完整的gcc 112
3.5.6编译GDB 113
3.5.7成果 113
3.5.8其他交叉编译方法 114
3.6通过二进制软件包创建交叉编译环境 117
3.7主机交叉开发环境配置 117
第4章 Bootloader 121
4.1嵌入式系统的引导代码 121
4.1.1初识Bootloader 121
4.1.2 Bootloader的启动流程 123
4.2 Bootloader之vivi 124
4.2.1 vivi简介 124
4.2.2 vivi的配置与编译 125
4.2.3 vivi代码导读 126
4.3 Bootloader之U-Boot 141
4.3.1 U-Boot代码结构分析 142
4.3.2编译U-Boot代码 142
4.3.3 U-Boot代码导读 143
4.3.4 U-Boot命令 156
4.3.5 U-Boot移植 157
4.4 FS2410的Bootloader 170
第5章 Linux系统在ARM平台的移植 172
5.1移植的概念 172
5.2 Linux内核结构 172
5.3 Linux内核向ARM平台的移植 174
5.3.1定义平台和编译器 174
5.3.2 arch/arm/mach-s3c2410/devs.c 175
5.3.3 arch/arm/mach-s3c2410/mach-fs2410.c 178
5.3.4串口输出 178
5.4编译Linux内核 178
5.4.1代码成熟等级选项 179
5.4.2通用的一些选项 180
5.4.3和模块相关的选项 181
5.4.4和块相关的选项 182
5.4.5和系统类型相关的选项 182
5.4.6和总线相关的选项 183
5.4.7和内核特性相关的选项 184
5.4.8和系统启动相关的选项 184
5.4.9和浮点运算相关的选项 184
5.4.10用户空间使用的二进制文件格式的选项 185
5.4.11和电源管理相关的选项 185
5.4.12和网络协议相关的选项 186
5.4.13和设备驱动程序相关的选项 188
5.4.14和文件系统相关的选项 192
5.4.15 和程序性能分析相关的选项 194
5.4.16和内核调试相关的选项 195
5.4.17和安全相关的选项 196
5.4.18和加密算法相关的选项 197
5.4.19库选项 197
5.4.20保存内核配置 197
第6章 Linux设备驱动程序开发 199
6.1设备驱动概述 199
6.1.1设备驱动和文件系统的关系 200
6.1.2设备类型分类 201
6.1.3内核空间和用户空间 203
6.2设备驱动基础 204
6.2.1设备驱动中关键数据结构 204
6.2.2字符设备驱动开发 208
第7章 网络设备驱动程序开发 235
7.1网络设备驱动程序简介 235
7.1.1 device数据结构 236
7.1.2 sk buff数据结构 242
7.1.3内核的驱动程序接口 244
7.2以太网控制器CS8900A 245
7.2.1特性 245
7.2.2工作原理 246
7.2.3电路连接 247
7.2.4引脚 247
7.2.5操作模式 249
7.3网络设备驱动程序实例 249
7.3.1初始化函数 249
7.3.2打开函数 255
7.3.3关闭函数 258
7.3.4发送函数 258
7.3.5接收函数 259
7.3.6中断处理函数 262
第8章 USB驱动程序开发 265
8.1 USB驱动程序简介 265
8.1.1 USB背景知识 265
8.1.2 Linux内核对USB规范的支持 266
8.1.3 OHCI简介 267
8.2 Linux下USB系统文件结点 276
8.3 USB主机驱动结构 277
8.3.1 USB数据传输时序 279
8.3.2 USB设备连接/断开时序 280
8.4主要数据结构及接口函数 281
8.4.1数据传输管道 281
8.4.2统一的USB数据传输块 282
8.4.3 USBD数据描述 284
8.4.4 USBD与HCD驱动程序接口 285
8.4.5设备类驱动与USBD接口 292
8.5 USB HUB驱动程序 302
8.5.1 HUB驱动初始化 303
8.5.2 HUB Probe相关函数 304
第9章 嵌入式文件系统 307
9.1文件系统简介 307
9.2 Linux根文件系统 308
9.3 Linux系统的引导过程 310
9.3.1启动内核 310
9.3.2 init 312
9.3.3 mingetty 314
9.4嵌入式文件系统 314
9.4.1嵌入式文件系统的特点和种类 314
9.4.2常见的嵌入式文件系统 316
9.4.3 MTD 326
9.4.4 RAMDISK 329
9.4.5网络文件系统 331
9.5使用Busybox制作根文件系统 334
第10章 系统设计开发 339
10.1概述 339
10.2硬件功能的实现 340
10.2.1功能定义 341
10.2.2原理图设计 342
10.2.3 PCB设计 355
10.2.4硬件调试 357
参考文献 358