内容简介
《嵌入式Linux系统开发全程解析》是一本全面介绍嵌入式Linux开发的专著,书中涵盖了程序生成工具、调试工具、引导加载器、Linux系统结构、Linux内核、驱动程序、用户空间编程、用户空间中间件等方面的内容。《嵌入式Linux系统开发全程解析》内容前后照应、贴近实践,且有较强的延伸型,有利于读者建立嵌入式Linux开发系统化的知识结构和技术理念。
《嵌入式Linux系统开发全程解析》不仅适用于嵌入式Linux的工程师增强能力,也适用于其他领域的技术人员了解嵌入式Linux。
目录
第1章 Linux的开发环境 1
1.1 开发环境概述 1
1.2 串口终端工具 2
1.3 TFTP 6
1.4 NFS 7
1.5 SAMBA共享 8
1.6 Linux系统的软件发布协议 9
第2章 程序生成和GCC 11
2.1 程序生成工具概述 11
2.1.1 GUN的GCC工具 11
2.1.2 ELF文件格式 14
2.2 GCC工具的使用 16
2.2.1 示例工程 16
2.2.2 编译、汇编和连接 18
2.2.3 预处理和汇编 20
2.2.4 归档工具(ar)和静态库 20
2.2.5 动态库 22
2.2.6 ELF格式文件信息读取(readelf) 22
2.2.7 符号信息工具(nm) 25
2.2.8 字符串工具(strings) 26
2.2.9 去除符号(strip) 27
2.2.10 目标文件复制(objcopy) 28
2.2.11 目标文件信息(objdump) 28
第3章 工程管理和make机制 33
3.1 make工具 33
3.2 Makefile的基本原则 34
3.2.1 Makefile的变量 34
3.2.2 Makefile的条件执行 36
3.2.3 Makefile中的函数 36
3.3 Makefile使用示例 39
3.3.1 简单的Makefile 39
3.3.2 依赖关系实例 39
3.3.3 隐含规则的编译实例 41
3.3.4 指定依赖的编译实例 44
3.4 自动生成Makefile 46
3.4.1 autoconf工具介绍 46
3.4.2 automake工具介绍 46
3.4.3 其他工具 47
3.4.4 自动生成Makefile的流程 47
第4章 调试和GDB 49
4.1 嵌入式系统的调试技术 49
4.1.1 调试技术 49
4.1.2 硬件调试 50
4.1.3 代码调试 51
4.2 Linux的基本信息 51
4.3 GDB调试和远程调试 52
4.4 GDB的安装与使用 57
4.4.1 使用gdbstub实现调试用户程序 57
4.4.2 GDB和GDB Server的编译 59
4.5 使用gdbserver调试 61
第5章 Linux系统的结构 65
5.1 Linux操作系统基本概念 65
5.1.1 Linux的进程信息 65
5.1.2 Linux的文件系统和文件信息 70
5.1.3 文件的另外三位属性 71
5.2 Linux系统的组成和构建 72
5.2.1 Linux系统的组成 72
5.2.2 嵌入式Linux的构建 73
5.3 Linux系统的启动流程 74
第6章 BootLoader及其构建 76
6.1 嵌入式Linux的BootLoader 76
6.1.1 BootLoader的开发要点 76
6.1.2 BootLoader的结构 78
6.2 U-Boot的使用 80
6.2.1 U-Boot概述 80
6.2.2 U-Boot的结构 81
6.2.3 U-Boot的生成 83
6.2.4 U-Boot的启动流程 84
6.3 U-Boot的命令 86
6.3.1 U-Boot命令概述 86
6.3.2 增加命令 88
6.4 U-Boot的移植 91
6.4.1 U-Boot的移植概述 92
6.4.2 U-Boot的扩展 92
6.4.3 板级支持 94
第7章 Linux内核及其构建 97
7.1 Linux内核概述 97
7.1.1 Linux内核结构 97
7.1.2 Linux源文件结构 98
7.2 嵌入式Linux的配置和编译 99
7.2.1 Linux内核配置结构 99
7.2.2 Linux内核的配置 99
7.2.3 Linux内核的生成 107
7.3 Linux内核的启动过程 108
7.4 特定系统的Linux的构建 114
7.4.1 Linux内核的移植 114
7.4.2 ARM处理器上运行的Linux系统 115
7.4.3 S3C6410 Linux内核的构建 117
7.4.4 S3C6410 Linux内核的移植内容 118
第8章
摘要与插图
本书写作目的嵌入式Linux开发已经不算很新的技术。本书作者从2003年开始从事Linux方面的研究、开发和科普工作。在10年多的时间里,Linux内核已经从2.4版本发展到了3.x版本,广泛使用的嵌入式处理器也从ARMv4的ARM7核心发展成为ARMv6的Cortex核心。这10年多嵌入式Linux技术逐步成熟,产品已经数不胜数。
作者在几年前出版过一些有关嵌入式系统、Linux和C语言编程的书籍。目前面对技术的发展,感觉有必要出版一本全面介绍嵌入式Linux的书籍,以帮助相关行业的学习者和开发者更地了解嵌入式Linux,更好地从事相关工作。
希望将本书打造成简明、的工具书,成为快速开发Linux软件的指导书、硬件移植的工具书,以及计算机专业从业者理论联系实际的桥梁。
本书特点
本书结合了作者多年的开发经验和知识技术的传播经验,主要有下面一些特点。
内容来自工程实践,实用性强。
覆盖面更全面、知识系统完整。
使用框架图+代码路径+关键代码的方式,一目了然。
内容紧凑,读者可以结合手头代码对照学习。
将工程技巧蕴含于理论知识的网络之中。
包含Linux软件编程开发的常用技巧:查找代码、运行时看信息等。
结合硬件和操作系统的知识。
帮助读者深入理解Linux系统的关键结构,具有完备的开发调试能力。
重点关注目前的主要应用场景:用户空间开发和驱动开发。
本书以Linux尤其是嵌入式Linux中用的内容为主,这些内容大部分是Linux开发不同方面的工程师均需要掌握的。通过对本书的学习,可以让有C语言基础的工程师在Linux环境中开发用户空间软件;让有硬件基础的工程师可以在嵌入式Linux平台中具有适配硬件的能力;让具有一定经验的嵌入式Linux工程师具有更广泛的视野、更强的开发能力。
本书主要内容
本书包含了嵌入式Linux系统的主要内容,按照知识结构分成四个方面。
第一个方面:开发环境和编程基础(第1章到第4章)。
第二个方面:Linux系统结构(第5章到第8章)。
第三个方面:嵌入式Linux的用户空间(第9章到第13章)。
第四个方面:嵌入式Linux的驱动开发(第14章到第24章)。
按照内容的侧重点,本书具有环境、原理性开发和核心开发几个方面。
对读者的话
目前的IT技术领域有很多热点,除了嵌入式设备的开发外,还有移动开发、互联网开发等。嵌入式Linux是很多产品的技术基础。在实践过程中,很多问题都是嵌入式Linux础的问题,只是由于工程师可能来自其他领域,不熟悉嵌入式Linux,从而小问题就成了大问题。因此,对于嵌入式Linux,是目前从事IT技术领域的各类工程师都至少需要了解的。
本书不仅适用于嵌入式Linux的工程师增强能力,也适用于其他领域的技术人员了解嵌入式Linux。本书尤其注重和高校计算机专业的互补关系,基于高校计算机专业知识基础,书中大量补充了在实践中的应用,帮助读者将知识“落地扎根”,读者进一步在工作中让知识和技能“生根发芽”,直到在工作中“结出丰硕的果实”。
本书的几个基础方面是C语言编程、嵌入式处理器、操作系统,这也是计算机行业的基础。通过对本书的学习,读者得到的不仅仅是各个方面的知识和技巧,更有它们之间的有机结合。
本书作者
韩超是中国大陆长期工作于一线的知名工程师、架构师,也是嵌入式Linux相关技术在大陆发展10年的技术领航人之一,同时也是书作者。其主要从事相关技术研发方向,包括嵌入式Linux板级平台、GUI系统和应用、移动多媒体。韩超对嵌入式Linux的技术把握以实用技术为主,以操作系