《嵌入式Linux系统开发全程解析》是2014年5月1日电子工业出版社出版的图书,作者是韩超。
基本介绍
- 书名:嵌入式Linux系统开发全程解析
- 类型:计算机与网际网路
- 出版日期:2014年5月1日
- 语种:简体中文
- ISBN:7121228882
- 作者:韩超 等
- 出版社:电子工业出版社
- 页数:426页
- 开本:16
- 品牌:电子工业出版社
内容简介
《嵌入式Linux系统开发全程解析》是一本全面介绍嵌入式Linux开发的专着,书中涵盖了程式生成工具、调试工具、引导载入器、Linux系统结构、Linux核心、驱动程式、用户空间编程、用户空间中间件等方面的内容。本书内容前后照应、贴近实践,且有较强的延伸型,有利于读者建立嵌入式Linux开发系统化的知识结构和技术理念。本书不仅适用于嵌入式Linux的工程师增强能力,也适用于其他领域的技术人员了解嵌入式Linux。
《嵌入式Linux系统开发全程解析》内容丰富,不仅适用于嵌入式Linux的工程师增强能力,也适用于其他领域的技术人员了解嵌入式Linux。
作者简介
韩超是大陆嵌入式系统技术专家、着名工程师、架构师,嵌入式Linux相关技术在大陆发展十余年的技术领航人之一。主要从事相关技术研发方向包括:Linux软体平台、嵌入式Linux板级平台、GUI系统和套用、移动多媒体。对嵌入式Linux的技术把握以实用技术为主,以作业系统本身为辅,重视在系统使用特定硬体,核心与用户空间的互动,适用于嵌入式Linux的软体工程等方面。
图书目录
第1章Linux的开发环境
1.1开发环境概述
1.2串口终端工具
1.3TFTP
1.4NFS
1.5SAMBA共享
1.6Linux系统的软体发布协定
第2章程式生成和GCC
2.1程式生成工具概述
2.1.1GUN的GCC工具
2.1.2ELF档案格式
2.2 GCC工具的使用
2.2.1示例工程
2.2.2编译、彙编和连线
2.2.3预处理和彙编
2.2.4归档工具(ar)和静态库
2.2.5动态库
2.2.6ELF格式档案信息读取(readelf)
2.2.7符号信息工具(nm)
2.2.8字元串工具(strings)
2.2.9去除符号(strip)
2.2.10目标档案複製(objcopy)
2.2.11目标档案信息(objdump)
第3章工程管理和make机制
3.1 make工具
3.2 Makefile的基本原则
3.2.1Makefile的变数
3.2.2 Makefile的条件执行
3.2.3Makefile中的函式
3.3Makefile使用示例
3.3.1简单的Makefile
3.3.2依赖关係实例
3.3.3隐含规则的编译实例
3.3.4指定依赖的编译实例
3.4自动生成Makefile
3.4.1autoconf工具介绍
3.4.2 automake工具介绍
3.4.3其他工具
3.4.4自动生成Makefile的流程
第4章调试和GDB
4.1嵌入式系统的调试技术
4.1.1调试技术
4.1.2硬体调试
4.1.3代码调试
4.2 Linux的基本信息
4.3GDB调试和远程调试
4.4 GDB的安装与使用
4.4.1使用gdbstub实现调试用户程式
4.4.2GDB和GDB Server的编译
4.5使用gdbserver调试
第5章Linux系统的结构
5.1 Linux作业系统基本概念
5.1.1Linux的进程信息
5.1.2 Linux的档案系统和档案信息
5.1.3档案的另外三位属性
5.2Linux系统的组成和构建
5.2.1Linux系统的组成
5.2.2嵌入式Linux的构建
5.3 Linux系统的启动流程
第6章BootLoader及其构建
6.1嵌入式Linux的BootLoader
6.1.1 BootLoader的开发要点
6.1.2 BootLoader的结构
6.2U—Boot的使用
6.2.1U—Boot概述
6.2.2U—Boot的结构
6.2.3U—Boot的生成
6.2.4 U—Boot的启动流程
6.3U—Boot的命令
6.3.1U—Boot命令概述
6.3.2增加命令
6.4 U—Boot的移植
6.4.1U—Boot的移植概述
6.4.2U—Boot的扩展
6.4.3板级支持
第7章Linux核心及其构建
7.1 Linux核心概述
7.1.1Linux核心结构
7.1.2Linux源档案结构
7.2嵌入式Linux的配置和编译
7.2.1Linux核心配置结构
7.2.2 Linux核心的配置
7.2.3Linux核心的生成
7.3Linux核心的启动过程
7.4特定系统的Linux的构建
7.4.1Linux核心的移植
7.4.2ARM处理器上运行的Linux系统
7.4.3 S3C6410Linux核心的构建
7.4.4 S3C6410 Linux核心的移植内容
第8章档案系统及其构建
8.1 Linux档案系统特性
8.2Linux档案系统的结构
8.2.1档案系统的主要接口
8.2.2档案系统的实现
8.2.3默认的公共实现
8.3几种Linux使用的档案系统
8.3.1EXT2/3(扩展档案系统2/3)
8.3.2 NFS(网路档案系统)
8.3.3 ROMFS(唯读档案系统)
8.3.4 CRAMFS(压缩ROM档案系统)
8.3.5JFFS2(日誌Flash档案系统)
8.3.6 YAFFS(另一种Flash档案系统)
8.3.7UBIFS(非排序块映像档案系统)
8.4 Linux档案系统的构建
8.4.1根档案系统的结构
8.4.2製作根档案系统映像
8.4.3核心启动中根档案系统的参数
第9章Linux用户空间的核心
9.1嵌入式系统中的作业系统和系统关係
9.2 C语言库
9.3Shell工具Busybox
9.3.1 Busybox配置和编译
9.3.2 Busybox的原始码结构
第10章Linux用户空间的编程
10.1Linux用户空间编程概述
10.2档案的相关内容
10.2.1档案的打开、关闭和读写等
10.2.2档案的控制、映射和查询等
10.2.3档案的其他操作
10.3进程相关的内容
10.3.1fork和exec
10.3.2管道
10.3.3SyStem V IPC
10.3.4POSIX IPC
10.4信号相关的内容
10.5 pthread执行绪
10.5.1执行绪的基本使用
10.5.2执行绪的属性
10.5.3执行绪互斥量
10.5.4执行绪条件量
10.5.5执行绪取消
10.6 dlopen机制
10.6.1 dlopen的结构和意义
10.6.2在C语言中使用dlopen
10.6.3在C++中使用dlopen
第11章Linux用户空间的中间件
11.1基于嵌入式Linux的系统与中间件
11.2网路协定相关
11.2.1Linux套接字编程的基础
11.2.2 TCP和UDP协定的流程
11.2.3 TCP编程实例
11.2.4UDP编程实例
11.2.5深入网路编程
11.2.6用作IPC的UNIX Socket
11.3GUI套用开发
11.3.1 Qt系统
11.3.2 MiniGUI应用程式
11.3.3 MicroWindows (Nano—X Window)
11.4资料库
11.4.1关于嵌入式资料库
11.4.2SQLite
第12章Linux驱动基础
12.1Linux驱动概述
12.1.1驱动的理念和结构
12.1.2驱动程式对用户空间的接口
12.2设备档案和相关档案系统
12.2.1设备档案
12.2.2 sys档案系统
12.2.3 proc档案系统
第13章Linux的核心编程
13.1Linux核心编程概述
13.2核心模组的编写
13.2.1Linux核心中的模组
13.2.2核心模组的编译结构
13.3核心编程接口
13.3.1Linux编程风格
13.3.2Linux编程主要接口
第14章Linux的驱动核心架构
14.1用户空间的接口
14.1.1用户空间的驱动调用接口
14.1.2系统调用
14.1.3驱动的主要调用函式
14.2字元设备和块设备的框架
14.2.1档案操作file_operations
14.2.2字元设备的基本框架
14.2.3块设备的框架
14.2.4字元设备和块设备的默认file_operations实现
14.3网路协定和网路设备的框架
14.3.1网路系统的核心
14.3.2网路协定的实现
14.3.3网路设备的框架
14.4 proc档案系统的框架
14.4.1 proc档案系统的编程接口
14.4.2 proc档案系统的实现
14.5 sys档案系统的框架
14.5.1 sys档案系统的编程接口
14.5.2 sys档案系统的实现
第15章Linux驱动的要点
15.1驱动程式的核心实现
15.2设备、驱动和资源
15.3中断的处理
15.4中断的下半部
15.4.1软中断
15.4.2软中断之tasklet
15.4.3软中断之定时器
15.5竞态处理
15.5.1自旋锁
15.5.2信号量
15.6阻塞处理
15.7异步操作
第16章几个典型的简单驱动
16.1设备驱动概述
16.2记忆体设备驱动
16.2.1记忆体设备驱动的公共内容
16.2.2空设备
16.2.3零设备
16.2.4满设备
16.3记忆体块设备驱动
16.4迴环块设备驱动
16.5迴环网路设备驱动
第17章几个典型的驱动框架和相应的驱动
17.1Misc驱动框架
17.2帧缓冲驱动框架和具体驱动
17.2.1帧缓冲驱动框架
17.2.2虚拟帧缓冲驱动
17.2.3针对硬体实现的帧缓冲驱动
17.3输入事件驱动框架
17.3.1输入—事件驱动框架概述
17.3.2针对硬体的事件驱动
17.4GPIO驱动框架和具体驱动
17.4.1GPIO驱动框架
17.4.2 GPIO具体硬体的驱动
17.5 PowerSupply驱动框架和具体驱动
17.5.1 PowerSupply驱动框架
17.5.2 PowerSupply驱动
17.6TTY驱动框架和驱动
17.6.1 TTY驱动框架
17.6.2伪TTY驱动
17.6.3串口TTY和虚拟TTY
第18章MTD系统和驱动
18.1MTD概述
18.2 MTD的核心
18.2.1MTD的接口部分
18.2.2MTD的核心实现部分
18.3MTD的设备层
18.3.1 MTD字元设备
18.3.2 MTD块设备
18.4CFI硬体实现层
18.4.1公用部分
18.4.2 ROM的MTD实现
18.4.3 RAM的MTD实现
18.4.4 NorFlash的MTD实现
18.5 Nand Flash的硬体实现层
18.5.1公用部分
18.5.2 GPIO的Nand Flash实现
18.5.3处理器晶片上的Nand Flash实现
第19章USB系统和驱动
19.1USB概述
19.1.1 USB规範
19.1.2 USB的软体系统
19.2Linux的USB主机端支持
19.2.1 USB主机端的软体结构
19.2.2 USB主机端的核心部分
19.2.3 USB驱动的实现
19.2.4HCI的实现
19.3Linux的USB设备端支持
19.3.1USB设备端的软体结构
19.3.2 Gadget的核心部分
19.3.3 Gadget驱动
19.3.4 UDC驱动的实现
……
第20章SPI汇流排和驱动
第21章12C汇流排和驱动
第22章PCI汇流排和驱动
第23章音频系统和驱动
第24章视频系统和驱动
1.1开发环境概述
1.2串口终端工具
1.3TFTP
1.4NFS
1.5SAMBA共享
1.6Linux系统的软体发布协定
第2章程式生成和GCC
2.1程式生成工具概述
2.1.1GUN的GCC工具
2.1.2ELF档案格式
2.2 GCC工具的使用
2.2.1示例工程
2.2.2编译、彙编和连线
2.2.3预处理和彙编
2.2.4归档工具(ar)和静态库
2.2.5动态库
2.2.6ELF格式档案信息读取(readelf)
2.2.7符号信息工具(nm)
2.2.8字元串工具(strings)
2.2.9去除符号(strip)
2.2.10目标档案複製(objcopy)
2.2.11目标档案信息(objdump)
第3章工程管理和make机制
3.1 make工具
3.2 Makefile的基本原则
3.2.1Makefile的变数
3.2.2 Makefile的条件执行
3.2.3Makefile中的函式
3.3Makefile使用示例
3.3.1简单的Makefile
3.3.2依赖关係实例
3.3.3隐含规则的编译实例
3.3.4指定依赖的编译实例
3.4自动生成Makefile
3.4.1autoconf工具介绍
3.4.2 automake工具介绍
3.4.3其他工具
3.4.4自动生成Makefile的流程
第4章调试和GDB
4.1嵌入式系统的调试技术
4.1.1调试技术
4.1.2硬体调试
4.1.3代码调试
4.2 Linux的基本信息
4.3GDB调试和远程调试
4.4 GDB的安装与使用
4.4.1使用gdbstub实现调试用户程式
4.4.2GDB和GDB Server的编译
4.5使用gdbserver调试
第5章Linux系统的结构
5.1 Linux作业系统基本概念
5.1.1Linux的进程信息
5.1.2 Linux的档案系统和档案信息
5.1.3档案的另外三位属性
5.2Linux系统的组成和构建
5.2.1Linux系统的组成
5.2.2嵌入式Linux的构建
5.3 Linux系统的启动流程
第6章BootLoader及其构建
6.1嵌入式Linux的BootLoader
6.1.1 BootLoader的开发要点
6.1.2 BootLoader的结构
6.2U—Boot的使用
6.2.1U—Boot概述
6.2.2U—Boot的结构
6.2.3U—Boot的生成
6.2.4 U—Boot的启动流程
6.3U—Boot的命令
6.3.1U—Boot命令概述
6.3.2增加命令
6.4 U—Boot的移植
6.4.1U—Boot的移植概述
6.4.2U—Boot的扩展
6.4.3板级支持
第7章Linux核心及其构建
7.1 Linux核心概述
7.1.1Linux核心结构
7.1.2Linux源档案结构
7.2嵌入式Linux的配置和编译
7.2.1Linux核心配置结构
7.2.2 Linux核心的配置
7.2.3Linux核心的生成
7.3Linux核心的启动过程
7.4特定系统的Linux的构建
7.4.1Linux核心的移植
7.4.2ARM处理器上运行的Linux系统
7.4.3 S3C6410Linux核心的构建
7.4.4 S3C6410 Linux核心的移植内容
第8章档案系统及其构建
8.1 Linux档案系统特性
8.2Linux档案系统的结构
8.2.1档案系统的主要接口
8.2.2档案系统的实现
8.2.3默认的公共实现
8.3几种Linux使用的档案系统
8.3.1EXT2/3(扩展档案系统2/3)
8.3.2 NFS(网路档案系统)
8.3.3 ROMFS(唯读档案系统)
8.3.4 CRAMFS(压缩ROM档案系统)
8.3.5JFFS2(日誌Flash档案系统)
8.3.6 YAFFS(另一种Flash档案系统)
8.3.7UBIFS(非排序块映像档案系统)
8.4 Linux档案系统的构建
8.4.1根档案系统的结构
8.4.2製作根档案系统映像
8.4.3核心启动中根档案系统的参数
第9章Linux用户空间的核心
9.1嵌入式系统中的作业系统和系统关係
9.2 C语言库
9.3Shell工具Busybox
9.3.1 Busybox配置和编译
9.3.2 Busybox的原始码结构
第10章Linux用户空间的编程
10.1Linux用户空间编程概述
10.2档案的相关内容
10.2.1档案的打开、关闭和读写等
10.2.2档案的控制、映射和查询等
10.2.3档案的其他操作
10.3进程相关的内容
10.3.1fork和exec
10.3.2管道
10.3.3SyStem V IPC
10.3.4POSIX IPC
10.4信号相关的内容
10.5 pthread执行绪
10.5.1执行绪的基本使用
10.5.2执行绪的属性
10.5.3执行绪互斥量
10.5.4执行绪条件量
10.5.5执行绪取消
10.6 dlopen机制
10.6.1 dlopen的结构和意义
10.6.2在C语言中使用dlopen
10.6.3在C++中使用dlopen
第11章Linux用户空间的中间件
11.1基于嵌入式Linux的系统与中间件
11.2网路协定相关
11.2.1Linux套接字编程的基础
11.2.2 TCP和UDP协定的流程
11.2.3 TCP编程实例
11.2.4UDP编程实例
11.2.5深入网路编程
11.2.6用作IPC的UNIX Socket
11.3GUI套用开发
11.3.1 Qt系统
11.3.2 MiniGUI应用程式
11.3.3 MicroWindows (Nano—X Window)
11.4资料库
11.4.1关于嵌入式资料库
11.4.2SQLite
第12章Linux驱动基础
12.1Linux驱动概述
12.1.1驱动的理念和结构
12.1.2驱动程式对用户空间的接口
12.2设备档案和相关档案系统
12.2.1设备档案
12.2.2 sys档案系统
12.2.3 proc档案系统
第13章Linux的核心编程
13.1Linux核心编程概述
13.2核心模组的编写
13.2.1Linux核心中的模组
13.2.2核心模组的编译结构
13.3核心编程接口
13.3.1Linux编程风格
13.3.2Linux编程主要接口
第14章Linux的驱动核心架构
14.1用户空间的接口
14.1.1用户空间的驱动调用接口
14.1.2系统调用
14.1.3驱动的主要调用函式
14.2字元设备和块设备的框架
14.2.1档案操作file_operations
14.2.2字元设备的基本框架
14.2.3块设备的框架
14.2.4字元设备和块设备的默认file_operations实现
14.3网路协定和网路设备的框架
14.3.1网路系统的核心
14.3.2网路协定的实现
14.3.3网路设备的框架
14.4 proc档案系统的框架
14.4.1 proc档案系统的编程接口
14.4.2 proc档案系统的实现
14.5 sys档案系统的框架
14.5.1 sys档案系统的编程接口
14.5.2 sys档案系统的实现
第15章Linux驱动的要点
15.1驱动程式的核心实现
15.2设备、驱动和资源
15.3中断的处理
15.4中断的下半部
15.4.1软中断
15.4.2软中断之tasklet
15.4.3软中断之定时器
15.5竞态处理
15.5.1自旋锁
15.5.2信号量
15.6阻塞处理
15.7异步操作
第16章几个典型的简单驱动
16.1设备驱动概述
16.2记忆体设备驱动
16.2.1记忆体设备驱动的公共内容
16.2.2空设备
16.2.3零设备
16.2.4满设备
16.3记忆体块设备驱动
16.4迴环块设备驱动
16.5迴环网路设备驱动
第17章几个典型的驱动框架和相应的驱动
17.1Misc驱动框架
17.2帧缓冲驱动框架和具体驱动
17.2.1帧缓冲驱动框架
17.2.2虚拟帧缓冲驱动
17.2.3针对硬体实现的帧缓冲驱动
17.3输入事件驱动框架
17.3.1输入—事件驱动框架概述
17.3.2针对硬体的事件驱动
17.4GPIO驱动框架和具体驱动
17.4.1GPIO驱动框架
17.4.2 GPIO具体硬体的驱动
17.5 PowerSupply驱动框架和具体驱动
17.5.1 PowerSupply驱动框架
17.5.2 PowerSupply驱动
17.6TTY驱动框架和驱动
17.6.1 TTY驱动框架
17.6.2伪TTY驱动
17.6.3串口TTY和虚拟TTY
第18章MTD系统和驱动
18.1MTD概述
18.2 MTD的核心
18.2.1MTD的接口部分
18.2.2MTD的核心实现部分
18.3MTD的设备层
18.3.1 MTD字元设备
18.3.2 MTD块设备
18.4CFI硬体实现层
18.4.1公用部分
18.4.2 ROM的MTD实现
18.4.3 RAM的MTD实现
18.4.4 NorFlash的MTD实现
18.5 Nand Flash的硬体实现层
18.5.1公用部分
18.5.2 GPIO的Nand Flash实现
18.5.3处理器晶片上的Nand Flash实现
第19章USB系统和驱动
19.1USB概述
19.1.1 USB规範
19.1.2 USB的软体系统
19.2Linux的USB主机端支持
19.2.1 USB主机端的软体结构
19.2.2 USB主机端的核心部分
19.2.3 USB驱动的实现
19.2.4HCI的实现
19.3Linux的USB设备端支持
19.3.1USB设备端的软体结构
19.3.2 Gadget的核心部分
19.3.3 Gadget驱动
19.3.4 UDC驱动的实现
……
第20章SPI汇流排和驱动
第21章12C汇流排和驱动
第22章PCI汇流排和驱动
第23章音频系统和驱动
第24章视频系统和驱动
序言
本书写作目的
嵌入式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的技术把握以实用技术为主,以作业系统本身为辅,重视在系统使用特定硬体的技术,重视核心与用户空间的互动的要点,适用于嵌入式Linux的软体工程等方面。
韩超完成了本书主要部分的编写工作,此外,众多不同规模的企业开发成果也为本书的编写提供了重要的素材。参与本书编写的还有康硕、于仕林、张超等人,以及清华大学计算机系作业系统研究兴趣小组的肖奇学、徐永健、王欢、何嘉权、範文良、茅俊杰等人。
嵌入式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的技术把握以实用技术为主,以作业系统本身为辅,重视在系统使用特定硬体的技术,重视核心与用户空间的互动的要点,适用于嵌入式Linux的软体工程等方面。
韩超完成了本书主要部分的编写工作,此外,众多不同规模的企业开发成果也为本书的编写提供了重要的素材。参与本书编写的还有康硕、于仕林、张超等人,以及清华大学计算机系作业系统研究兴趣小组的肖奇学、徐永健、王欢、何嘉权、範文良、茅俊杰等人。