第1章 嵌入式系统的定制及配置使用 1
1.1嵌入式系统开发综述 1
1.1.1嵌入式系统的定义 1
1.1.2嵌入式Linux基础 1
1.2 Linux安装与配置 2
1.2.1 Linux定制安装 2
1.2.2服务器配置 7
1.3 Linux常用命令 12
1.3.1用户系统相关命令 12
1.3.2文件操作相关命令 13
1.3.3压缩打包相关命令 18
1.3.4网络相关命令 19
1.3.5其他常用命令 22
1.4思考与练习 26
第2章 嵌入式开发软件工具的使用 27
2.1 Windows平台下软件工具的使用 27
2.1.1 Source Insight 27
2.1.2 SecureCRT 31
2.1.3 Notepad +++ 32
2.2 Linux平台下软件工具的使用 33
2.2.1 vi 33
2.2.2 gcc程序编译 37
2.2.3 gdb程序调试 42
2.3思考与练习 49
第3章Linux脚本编程 50
3.1常用shell命令 50
3.2脚本编写基础 51
3.2.1特殊字符 51
3.2.2变量和参数 53
3.2.3退出和退出状态 55
3.3流程控制 56
3.3.1条件测试 56
3.3.2操作符相关主题 58
3.3.3循环控制 59
3.3.4测试与分支 62
3.3.5实例进阶 63
3.4思考与练习 65
第4章ARM11综述 66
4.1 ARM概述 66
4.1.1 ARM11主要功能 66
4.1.2 ARM11处理器比较 67
4.2 ARM指令与系统 70
4.2.1 ARM寄存器结构 70
4.2.2 ARM指令集 72
4.2.3 ARM伪指令 80
4.3 ARM中断体系结构 89
4.3.1 ARM中断系统结构 89
4.3.2 ARM中断系统操作 91
4.4思考题 97
第5章GPIO接口 98
5.1 GPIO接口介绍 98
5.1.1 GPIO结构 98
5.1.2 GPIO寄存器 100
5.2 GPIO操作实例 114
5.2.1硬件设计 114
5.2.2软件设计 115
5.3思考与练习 116
第6章IIC接口 117
6.1 IIC接口介绍 117
6.1.1 IIC结构及寄存器 118
6.1.2软件访问方法 121
6.2 IIC操作实例 124
6.2.1硬件设计 124
6.2.2软件设计 129
6.3思考与练习 131
第7章UART接口 132
7.1 UART接口介绍 132
7.1.1 UART结构及操作 132
7.1.2寄存器 137
7.2 UART操作实例 147
7.2.1 RS232原理 147
7.2.2硬件设计 149
7.2.3软件设计 150
7.3思考题 153
第8章ADC接口 154
8.1 ADC接口介绍 154
8.1.1 ADC基本原理 154
8.1.2 S3C6410ADC接口 155
8.1.3 ADC寄存器 158
8.2 ADC操作实例 161
8.2.1硬件设计 161
8.2.2软件设计 161
8.3思考与练习 163
第9章 内核开发基础 164
9.1构建嵌入式Linux系统基础 164
9.1.1嵌入式开发环境搭建 164
9.1.2嵌入式Linux内核 168
9.1.3根文件系统 170
9.1.4 BootLoader 170
9.2嵌入式Linux内核简介 170
9.2.1内核架构 170
9.2.2内核源代码 172
9.2.3内核模块化 173
9.3思考与练习 178
第10章 内核的配置与编译 179
10.1内核的配置 179
10.1.1内核配置系统 179
10.1.2内核配置项 182
10.2内核的编译与安装 186
10.2.1内核编译命令 186
10.2.2内核编译与安装 186
10.3思考与练习 190
第11章 嵌入式文件系统 191
11.1 Linux文件系统概述 191
11.1.1 Linux文件系统的结构 191
11.1.2 Linux文件系统的特征 194
11.2嵌入式文件系统简介 195
11.2.1 JFFS文件系统简介 198
11.2.2 YAFFS文件系统简介 201
11.3构建根文件系统 203
11.3.1 Busybox简介 203
11.3.2构建RAMdisk文件系统 208
11.4思考与练习 209
第12章BootLoader技术 210
12.1 BootLoader简介 210
12.1.1 BootLoader的基本概念 210
12.1.2 BootLoader的启动过程 216
12.1.3 BootLoader与主机之间的通信方式 218
12.2 BootLoader的工作流程 218
12.2.1 stage1阶段 218
12.2.2 stage2 219
12.3思考与练习 220
第13章U-Boot分析和移植 221
13.1 U-Boot简介 221
13.1.1 U-Boot源代码结构 222
13.1.2 U-Boot主要功能 223
13.1.3 U-Boot的工具 223
13.1.4 U-Boot的编译 223
13.1.5 U-boot命令 226
13.2 U-Boot的移植 235
13.3思考与练习 243
第14章Linux驱动开发基础与调试 244
14.1设备驱动简介 244
14.1.1设备类型分类 244
14.1.2内核空间和用户空间 245
14.1.3驱动程序层次结构 246
14.1.4驱动程序与外界接口 246
14.1.5驱动模块的特点 247
14.2字符设备驱动程序基础 249
14.2.1关键数据结构 249
14.2.2设备驱动开发的基本函数 251
14.2.3设备文件和设备号 256
14.2.4加载和卸载驱动程序 257
14.2.5打印调试 258
14.3思考与练习 259
第15章 字符设备驱动 260
15.1并发和竞态 260
15.1.1并发及其管理 260
15.1.2信号量和互斥体 260
15.1.3自旋锁 262
15.2 ioctl and llseek 268
15.2.1 ioctl 268
15.2.2定位设备(llseek实现) 271
15.3阻塞型I/O和休眠 271
15.3.1休眠 271
15.3.2阻塞和非阻塞操作 272
15.3.3高级休眠 272
15.3.4 poll和select 273
15.4思考与练习 277
第16章 块设备驱动 278
16.1块设备驱动程序开发基础 278
16.1.1块设备的I/O操作特点 278
16.1.2块设备主要数据结构 278
16.1.3块设备的操作 286
16.2实例进阶:IDE硬盘设备 291
16.2.1 IDE硬盘设备原理 291
16.2.2 S3C2440与IDE接口电路 292
16.3实例进阶:IDE硬盘设备驱动 293
16.3.1 block_device_operations及成员函数 293
16.3.2 I/O请求处理 294
16.3.3在内核中增加对新系统IDE设备的支持 300
16.4思考与练习 304
第17章 网络设备驱动 305
17.1网络设备驱动简介 305
17.1.1驱动程序体系结构 305
17.1.2主要数据结构 306
17.1.3基本函数 308
17.2 DM9000网卡设备 310
17.2.1 DM9000简介 310
17.2.2 DM9000网卡接口电路 311
17.3实例进阶:DM9000设备驱动程序 312
17.3.1初始化网络设备 312
17.3.2打开网络设备 318
17.3.3关闭网络设备 319
17.3.4中断处理 320
17.3.5发送数据 322
17.3.6接收数据 323
17.4思考与练习 326
参考文献 327