第1章 嵌入式系统开发技术基础 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的定义、分类与特点 1
1.1.2 嵌入式系统的组成 2
1.1.3 嵌入式系统的应用领域 3
1.2 嵌入式处理器 3
1.2.1 嵌入式处理器的分类与特点 4
1.2.2 ARM微处理器简介 5
1.2.3 ARM微处理器基础 6
1.2.4 ARM微处理器的指令系统 16
1.2.5 ARM内存管理单元 32
1.3 嵌入式操作系统 33
1.3.1 嵌入式操作系统的种类、特点与发展 33
1.3.2 嵌入式Linux概述 35
1.4 嵌入式系统的结构、开发流程、开发要点 36
1.4.1 嵌入式系统的结构 36
1.4.2 开发模式及开发流程 37
1.4.3 嵌入式Linux系统开发要点 39
本章小结 40
习题1 40
第2章 嵌入式软件开发基础 42
2.1 Linux C语言程序设计基础知识 42
2.1.1 程序安装目录、头文件、库文件 43
2.1.2 gcc编译器 44
2.1.3 GNU make工具和Makefile文件 49
2.1.4 glibc 51
2.1.5 gdb 52
2.1.6 Binutils工具集 53
2.2 实例——使用gcc编译器 56
2.3 实例——使用make及Makefile文件 63
2.4 实例——使用gdb调试器 78
2.5 ARM汇编语言程序设计 89
2.5.1 ARM汇编伪指令介绍 89
2.5.2 模块化程序设计 97
2.6 混合语言编程 99
本章小结 104
习题2 104
第3章 嵌入式系统开发环境 106
3.1 嵌入式系统开发环境简介 106
3.2 OK2440-Ⅱ开发平台介绍 106
3.2.1 OK2440-Ⅱ开发板构成 106
3.2.2 OK2440-Ⅱ开发板硬件资源 108
3.2.3 实例——OK2440-Ⅱ开发板的基本使用 109
3.2.4 实例——引导Windows CE 119
3.2.5 实例——引导Linux 121
3.3 交叉编译的基本知识 124
3.4 实例——创建交叉编译环境 127
3.5 实例——TFTP服务器的搭建 131
3.6 实例——NFS服务器的搭建 132
本章小结 134
习题3 134
第4章 引导加载程序BootLoader的移植 135
4.1 BootLoader 135
4.1.1 BootLoader概述 136
4.1.2 BootLoader的工作流程 137
4.2 常见BootLoader介绍 140
4.3 实例——引导程序U-Boot的移植 142
4.3.1 U-Boot的代码结构 142
4.3.2 U-Boot的启动流程 143
4.3.3 U-Boot的配置与编译 156
4.3.4 实例——移植U-Boot到S3C2410A平台 165
4.3.5 实例——烧写U-Boot到Flash 165
4.4 实例——使用U-Boot 166
4.4.1 U-Boot的常用命令 167
4.4.2 U-Boot的环境变量 172
4.4.3 U-Boot与内核的关系 172
4.4.4 添加U-Boot命令 176
本章小结 177
习题4 177
第5章 Linux在ARM平台的移植 179
5.1 Linux内核 179
5.1.1 Linux内核简介 179
5.1.2 Linux内核源代码结构 181
5.1.3 Linux内核的配置 182
5.2 实例——Linux内核的移植 183
5.3 Linux内核启动流程分析 187
本章小结 203
习题5 203
第6章 根文件系统 204
6.1 嵌入式Linux的文件系统 204
6.1.1 基于Flash的文件系统 205
6.1.2 基于RAM的文件系统 209
6.1.3 网络文件系统NFS 210
6.1.4 Linux根文件系统 212
6.1.5 Linux根文件系统的目录结构 213
6.2 Linux系统的引导过程 213
6.3 建立根文件系统 220
6.3.1 实例——用BusyBox建立文件系统 220
6.3.2 实例——建立JFFS2根文件系统 223
6.3.3 实例——建立YAFFS2根文件系统 226
6.3.4 实例——建立Ramdisk文件系统 228
6.3.5 实例——建立Cramfs文件系统 233
6.3.6 实例——建立romfs文件系统 234
本章小结 235
习题6 236
第7章 嵌入式Linux设备驱动程序开发 237
7.1 Linux设备驱动程序的相关知识 237
7.1.1 设备驱动程序的概念 237
7.1.2 设备类型 238
7.2 裸机底层驱动设计 239
7.2.1 复位向量表 239
7.2.2 中断服务程序 240
7.3 Linux设备驱动程序设计 246
7.3.1 Linux设备驱动程序概述 246
7.3.2 设备驱动程序中关键的数据结构 247
7.3.3 实例——动态加载驱动模块 249
7.5 实例——LED驱动程序的设计 251
7.6 实例——AD驱动程序的设计 253
本章小结 255
习题7 256
第8章 嵌入式Linux的图形用户接口 257
8.1 嵌入式Linux中的GUI简介 257
8.2 Qt/Embedded 257
8.3 Microwindows 259
8.4 MiniGUI 261
8.5 OpenGUI 263
本章小结 264
习题8 264
第9章 基于SkyEye的嵌入式系统开发 265
9.1 SkyEye简介 265
9.2 实例——安装SkyEye 268
9.3 实例——BootLoader的移植 271
9.4 实例——Linux的移植 281
9.5 实例——根文件系统的移植 291
本章小结 299
习题9 299
附录A Linux-2.6.29.1配置菜单的详细选项 300
附录B 资源及学习网站 306
参考文献 307