嵌入式Linux系统开发全程解析

出版日期:2014-4
ISBN:9787121228882
作者:韩超
页数:436页页

内容概要

韩超是中国大陆长期工作于一线的知名工程师、架构师,也是嵌入式Linux相关技术在大陆发展10年的技术领航人之一,同时也是畅销书作者。其主要从事相关技术研发方向,包括嵌入式Linux板级平台、GUI系统和应用、移动多媒体。韩超对嵌入式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章 文件系统及其构建
123
8.1 Linux文件系统特性
123
8.2 Linux文件系统的结构
125
8.2.1 文件系统的主要接口
125
8.2.2 文件系统的实现
130
8.2.3 默认的公共实现
134
8.3 几种Linux使用的文件系统
136
8.3.1 EXT 2/3(扩展文件系统2/3)
136
8.3.2 NFS(网络文件系统)
136
8.3.3 ROMFS(只读文件系统)
137
8.3.4 CRAMFS(压缩ROM文件系统)
137
8.3.5 JFFS2(日志Flash文件系统)
138
8.3.6 YAFFS(另一种Flash文件系统)
138
8.3.7 UBIFS(非排序块映像文件系统)
139
8.4 Linux文件系统的构建
140
8.4.1 根文件系统的结构
140
8.4.2 制作根文件系统映像
141
8.4.3 内核启动中根文件系统的参数
142
第9章 Linux用户空间的核心
143
9.1 嵌入式系统中的操作系统和系统关系
143
9.2 C语言库
144
9.3 Shell工具Busybox
147
9.3.1 Busybox配置和编译
148
9.3.2 Busybox的源代码结构
150
第10章 Linux用户空间的编程
152
10.1 Linux用户空间编程概述
152
10.2 文件的相关内容
154
10.2.1 文件的打开、关闭和读写等
155
10.2.2 文件的控制、映射和查询等
157
10.2.3 文件的其他操作
158
10.3 进程相关的内容
159
10.3.1 fork和exec
159
10.3.2 管道
161
10.3.3 System V IPC
162
10.3.4 POSIX IPC
165
10.4 信号相关的内容
166
10.5 pthread线程
168
10.5.1 线程的基本使用
169
10.5.2 线程的属性
171
10.5.3 线程互斥量
172
10.5.4 线程条件量
173
10.5.5 线程取消
175
10.6 dlopen机制
176
10.6.1 dlopen的结构和意义
176
10.6.2 在C语言中使用dlopen
178
10.6.3 在C++中使用dlopen
180
第11章 Linux用户空间的中间件
185
11.1 基于嵌入式Linux的系统与中间件
185
11.2 网络协议相关
186
11.2.1 Linux套接字编程的基础
186
11.2.2 TCP和UDP协议的流程
189
11.2.3 TCP编程实例
189
11.2.4 UDP编程实例
193
11.2.5 深入网络编程
196
11.2.6 用作IPC的UNIX Socket
198
11.3 GUI应用开发
201
11.3.1 Qt系统
203
11.3.2 MiniGUI应用程序
209
11.3.3 MicroWindows(Nano-X Window)
216
11.4 数据库
217
11.4.1 关于嵌入式数据库
217
11.4.2 SQLite
218
第12章 Linux驱动基础
228
12.1 Linux驱动概述
228
12.1.1 驱动的理念和结构
228
12.1.2 驱动程序对用户空间的接口
230
12.2 设备文件和相关文件系统
230
12.2.1 设备文件
230
12.2.2 sys文件系统
231
12.2.3 proc文件系统
233
第13章 Linux的内核编程
237
13.1 Linux内核编程概述
237
13.2 内核模块的编写
237
13.2.1 Linux内核中的模块
237
13.2.2 内核模块的编译结构
239
13.3 内核编程接口
241
13.3.1 Linux编程风格
241
13.3.2 Linux编程主要接口
242
第14章 Linux的驱动核心架构
248
14.1 用户空间的接口
248
14.1.1 用户空间的驱动调用接口
248
14.1.2 系统调用
248
14.1.3 驱动的主要调用函数
249
14.2 字符设备和块设备的框架
250
14.2.1 文件操作file_operations
250
14.2.2 字符设备的基本框架
251
14.2.3 块设备的框架
252
14.2.4 字符设备和块设备的默认file_operations实现
254
14.3 网络协议和网络设备的框架
258
14.3.1 网络系统的核心
259
14.3.2 网络协议的实现
261
14.3.3 网络设备的框架
263
14.4 proc文件系统的框架
264
14.4.1 proc文件系统的编程接口
264
14.4.2 proc文件系统的实现
266
14.5 sys文件系统的框架
266
14.5.1 sys文件系统的编程接口
266
14.5.2 sys文件系统的实现
267
第15章 Linux驱动的要点
269
15.1 驱动程序的核心实现
269
15.2 设备、驱动和资源
273
15.3 中断的处理
276
15.4 中断的下半部
277
15.4.1 软中断
277
15.4.2 软中断之tasklet
278
15.4.3 软中断之定时器
279
15.5 竞态处理
280
15.5.1 自旋锁
280
15.5.2 信号量
280
15.6 阻塞处理
281
15.7 异步操作
282
第16章 几个典型的简单驱动
283
16.1 设备驱动概述
283
16.2 内存设备驱动
284
16.2.1 内存设备驱动的公共内容
284
16.2.2 空设备
286
16.2.3 零设备
287
16.2.4 满设备
288
16.3 内存块设备驱动
288
16.4 回环块设备驱动
291
16.5 回环网络设备驱动
294
第17章 几个典型的驱动框架和相应的驱动
296
17.1 Misc驱动框架
296
17.2 帧缓冲驱动框架和具体驱动
297
17.2.1 帧缓冲驱动框架
297
17.2.2 虚拟帧缓冲驱动
300
17.2.3 针对硬件实现的帧缓冲驱动
302
17.3 输入-事件驱动框架
305
17.3.1 输入-事件驱动框架概述
305
17.3.2 针对硬件的事件驱动
307
17.4 GPIO驱动框架和具体驱动
310
17.4.1 GPIO驱动框架
310
17.4.2 GPIO具体硬件的驱动
312
17.5 Power Supply驱动框架和具体驱动
312
17.5.1 Power Supply驱动框架
312
17.5.2 Power Supply驱动
313
17.6 TTY驱动框架和驱动
314
17.6.1 TTY驱动框架
314
17.6.2 伪TTY驱动
316
17.6.3 串口TTY和虚拟TTY
316
第18章 MTD系统和驱动
318
18.1 MTD概述
318
18.2 MTD的核心
319
18.2.1 MTD的接口部分
320
18.2.2 MTD的核心实现部分
322
18.3 MTD的设备层
322
18.3.1 MTD字符设备
322
18.3.2 MTD块设备
323
18.4 CFI硬件实现层
324
18.4.1 公用部分
324
18.4.2 ROM的MTD实现
325
18.4.3 RAM的MTD实现
325
18.4.4 Nor Flash的MTD实现
326
18.5 Nand Flash的硬件实现层
326
18.5.1 公用部分
326
18.5.2 GPIO的Nand Flash实现
327
18.5.3 处理器芯片上的Nand Flash实现
330
第19章 USB系统和驱动
331
19.1 USB概述
331
19.1.1 USB规范
331
19.1.2 USB的软件系统
333
19.2 Linux的USB主机端支持
334
19.2.1 USB主机端的软件结构
334
19.2.2 USB主机端的核心部分
335
19.2.3 USB驱动的实现
337
19.2.4 HCI的实现
339
19.3 Linux的USB设备端支持
340
19.3.1 USB设备端的软件结构
340
19.3.2 Gadget的核心部分
340
19.3.3 Gadget驱动
342
19.3.4 UDC驱动的实现
345
第20章 SPI总线和驱动
348
20.1 SPI概述
348
20.2 SPI总线驱动的框架
349
20.3 简单字符设备spidev
353
20.4 SPI主控制器的实现
355
20.4.1 GPIO实现的SPI主控制器
355
20.4.2 S3C64xx的SPI主控制器
356
20.5 SPI从设备的驱动
358
第21章 I2C总线和驱动
361
21.1 I2C概述
361
21.1.1 基本概念
361
21.1.2 SMBus
362
21.2 I2C总线驱动的框架
362
21.2.1 I2C核心框架
362
21.2.2 I2C总线接口
367
21.2.3 I2C设备和驱动
368
21.3 具体的I2C主控制器
370
21.4 I2C从设备的驱动
372
第22章 PCI总线和驱动
375
22.1 PCI概述
375
22.1.1 PCI的基本结构
375
22.1.2 PCI的总线信号
377
22.1.3 PCI的总线操作
378
22.1.4 PCI的总线配置
379
22.1.5 PCI的发展和衍生标准
381
22.2 PCI总线的驱动框架
381
22.3 PCI设备的驱动
384
22.3.1 PCI的桩实现
384
22.3.2 网卡的PCI实现
385
第23章 音频系统和驱动
389
23.1 音频系统概述
389
23.2 OSS架构
389
23.2.1 OSS系统的结构
390
23.2.2 OSS系统的核心
391
23.2.3 OSS系统的实现
392
23.3 ALSA架构
393
23.3.1 ALSA系统的结构
393
23.3.2 ALSA系统的核心
395
23.3.3 ALSA系统芯片层
395
23.3.4 ALSA的用户空间
400
第24章 视频系统和驱动
403
24.1 视频系统概述
403
24.2 Video for Linux系统
403
24.2.1 基本结构
404
24.2.2 Video for Linux的核心结构
405
24.2.3 Video for Linux的其他方面
410
24.2.4 Video for Linux驱动的接口
413
24.2.5 Video for Linux驱动的实现层
417

作者简介

《嵌入式Linux系统开发全程解析》是一本全面介绍嵌入式Linux开发的专著,书中涵盖了程序生成工具、调试工具、引导加载器、Linux系统结构、Linux内核、驱动程序、用户空间编程、用户空间中间件等方面的内容。《嵌入式Linux系统开发全程解析》内容前后照应、贴近实践,且有较强的延伸型,有利于读者建立嵌入式Linux开发系统化的知识结构和技术理念。
《嵌入式Linux系统开发全程解析》不仅适用于嵌入式Linux的工程师增强能力,也适用于其他领域的技术人员了解嵌入式Linux。


 嵌入式Linux系统开发全程解析下载



发布书评

 
 


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024