第1章嵌入式系统概述 1
1.1嵌入式系统 2
1.2嵌入式操作系统 3
1.3嵌入式Linux历史 5
1.4嵌入式Linux开发环境 6
1.5嵌入式Linux系统开发要点 8
第2章ARM处理 9
2.1 ARM处理器简介 10
2.1.1 ARM公司简介 11
2.1.2 ARM处理器体系结构 12
2.1.3 Linux与ARM处理器 17
2.2 ARM指令集 18
2.2.1 ARM微处理器的指令集概述 18
2.2.2 ARM指令寻址方式 19
2.2.3 Thumb指令 21
2.2.4 Thumb-2指令 22
2.2.5 ThumbEE指令 22
2.3典型ARM处理器简介 22
2.3.1 Atmel AT91RM9200 22
2.3.2 Samsung S3C2410 23
2.3.3 TI OMAP5系列 25
2.3.4 Freescale i.Max6 26
2.3.5 Intel Xscale PXA系列 27
2.3.6 Cortex-A系列的Exynos4412 29
2.4华清远见 FS4412开发板 30
2.4.1 华清远见 FS4412开发板介绍 30
2.4.2 众多的开发板供应商 34
2.5习题 34
第3章Linux编程环境 35
3.1 Linux常用工具 36
3.1.1 Shell简介 36
3.1.2 常用的Shell命令 38
3.1.3 编写Shell脚本 46
3.1.4 正则表达式 50
3.1.5 程序编辑器 53
3.2 Makefile 57
3.2.1 GNU make 57
3.2.2 Makefile规则语法 59
3.2.3 Makefile文件中变量的使用 60
3.3二进制代码工具的使用 62
3.3.1 GNU Binutils工具介绍 62
3.3.2 Binutils工具软件使用 63
3.4 GCC编译器的使用 64
3.4.1 GCC编译器简介 64
3.4.2 GCC编译选项解析 66
3.5调试器GDB的使用技巧 70
3.5.1 GDB调试器介绍 70
3.5.2 GDB调试命令 71
3.6 Linux编程库 75
3.6.1 Linux编程库介绍 75
3.6.2 Linux系统调用 76
3.6.3 Linux线程库 78
3.7习题 81
第4章交叉开发环境 82
4.1交叉开发环境介绍 83
4.1.1 交叉开发概念模型 83
4.1.2 目标板与主机之间的连接 84
4.1.3 文件传输 86
4.1.4 网络文件系统 87
4.2安装交叉编译工具 87
4.2.1 获取交叉开发工具链 87
4.2.2 主机安装工具链 88
4.3主机开发环境配置 88
4.3.1 主机环境配置 88
4.3.2 串口控制台工具 89
4.3.3 TFTP服务 93
4.3.4 NFS服务 93
4.4启动目标板 95
4.4.1 系统引导过程 95
4.4.2 内核解压启动 96
4.4.3 挂接根文件系统 98
4.5应用程序的远程交叉调试 99
4.5.1 交叉调试的模型 99
4.5.2 交叉调试程序实例 100
4.6实例:FS4412嵌入式开发环境搭建 102
4.6.1 开发主机安装 102
4.6.2 联调测试 110
4.7习题 113
第5章Bootloader 114
5.1 Bootloader 简介 115
5.1.1 Bootloader介绍 115
5.1.2 Bootloader的启动 115
5.1.3 Bootloader的种类 118
5.2 U-Boot简介 120
5.2.1 U-Boot介绍 120
5.2.2 U-Boot的常用命令 120
5.2.3 U-Boot的环境变量 124
5.2.4 U-Boot源码结构 126
5.3 U-Boot源码分析 127
5.3.1 配置编译 127
5.3.2 U-Boot启动过程 132
5.3.3 U-Boot与内核的关系 136
5.4 U-Boot移植实例 138
5.4.1 收集移植相关资源 138
5.4.2 选择U-Boot 源码版本 139
5.4.3 u-Boot 配置编译 139
5.4.4 串口能输出信息 140
5.4.5 移植网卡实现Ping和TFTP的功能 145
5.5习题 151
第6章配置编译内核 153
6.1 Linux内核特点 154
6.1.1 Linux内核版本介绍 154
6.1.2 Linux内核特点 155
6.2配置编译内核源码 156
6.2.1 内核源码的下载方法和结构 157
6.2.2 内核配置系统 160
6.2.3 KbuildMakefiles 167
6.2.4 内核编译 178
6.2.5 内核编译结果 185
6.3内核配置选项 187
6.3.1 使用配置菜单 187
6.3.2 基本配置选项 189
6.3.3 驱动程序配置选项 191
6.4习题 192
第7章内核移植基础 193
7.1移植内核源码 194
7.1.1 移植的基本工作 194
7.1.2 移植后的工作 196
7.2 Linux设备树 197
7.2.1 Linux设备树的由来 197
7.2.2 Linux设备树的目的 197
7.2.3 Linux设备树的使用 199
7.3 Linux内核启动过程分析 206
7.3.1 内核启动流程介绍 206
7.3.2 内核启动加载程序 209
7.3.3 内核主体程序入口 215
7.3.4 Linux系统初始化 218
7.3.5 初始化驱动模型 224
7.3.6 挂载根文件系统 225
7.4习题 227
第8章内核移植实例 229
8.1基本内核移植 230
8.2网卡驱动移植 234
8.2.1 网卡原理图分析 234
8.2.2 网卡驱动移植 235
8.2.3 以NFS挂载根文件系统 237
8.3 SD/eMMC驱动移植 238
8.4 USB主机控制器驱动移植 240
8.5 LCD驱动移植 244
8.6习题 249
第9章内核调试技术 250
9.1内核调试方法 251
9.1.1 内核调试介绍 251
9.1.2 学会分析内核源程序 252
9.1.3 调试方法介绍 252
9.2内核打印函数 255
9.2.1 内核映像解压前的串口输出函数 255
9.2.2 内核映像解压后的串口输出函数 257
9.2.3 printk 258
9.3获取内核信息 263
9.3.1 系统请求键 263
9.3.2 通过/proc接口 264
9.3.3 通过/sys接口 265
9.4处理出错信息 268
9.4.1 oops信息 268
9.4.2 panic 269
9.4.3 通过ioctl方法 271
9.5内核源代码调试 272
9.6习题 275
第10章制作Linux根文件系统 276
10.1根文件系统目录结构 277
10.2 init系统初始化过程 280
10.2.1 inittab文件 281
10.2.2 System V init启动过程 284
10.2.3 Busyboxinit启动过程分析 285
10.3制作根文件系统 287
10.3.1 配置并编译Busybox 287
10.3.2 添加共享库文件和内核模块 289
10.3.3 添加其他目录和文件 290
10.4固化根文件系统 293
10.4.1 制作image格式的initrd根文件系统镜像 293
10.4.2 固化ext2格式的根文件系统 295
10.5习题 297
第11章Qt移植 299
11.1 Qt源码配置、编译及安装 300
11.2在根文件系统中添加Qt 309
11.3安装Qt集成开发环境 309
11.4添加ARM平台的构建环境 313
11.5编写并运行Qt测试程序 316
11.6习题 320
参考文献 322
附录习题答案 323
· · · · · · (
收起)