《嵌入式Linux编程》是2017年机械工业出版社出版图书,作者[英] 克里斯·西蒙兹(Chris Simmonds)。
基本介绍
- 书名:嵌入式Linux编程
- 作者:[英] 克里斯·西蒙兹(Chris Simmonds)
- 出版社:机械工业出版社
- 出版时间:2017年
基本信息
作者:[英] 克里斯·西蒙兹(Chris Simmonds) 着 |
ISBN(书号):978-7-111-56128-6 |
丛书名:Linux/Unix技术丛书 |
出版日期:2017-04 |
版次:1/1 |
开本:16 |
定价:¥79.00 |
内容简介
本书引导你遍历整个嵌入式Linux产品的周期,并提供在每个阶段可用组件和选项的深入描述。作者首先介绍工具链、引导载入程式、Linux核心和配置根档案系统的相关知识,然后讲解如何使用两个最常用的构建系统,即Buildroot和Yocto项目,以加快和简化开发过程,接着介绍如何充分使用raw NAND/NOR快闪记忆体和託管快闪记忆体eMMC晶片,包括增加器件寿命的机制以及进行可靠的现场更新,探讨POSIX执行绪的使用,这对最终设备的回响能力和性能有着很大的影响。本书的结尾部分探讨使用perf与Ftrace剖析和跟蹤应用程式以及核心代码的技术。
图书目录
第1章 概述 1
1.1 选择合适的作业系统 2
1.2 参与者 3
1.3 项目生命周期 4
1.4 开放源码 5
1.5 嵌入式Linux系统硬体 6
1.6 本书使用的硬体 7
1.7 本书使用的软体 9
1.8 总结 9
第2章 学习工具链 10
2.1 工具链是什幺 10
2.2 工具链类型:本地工具链和交叉工具链 11
2.3 选择C库 13
2.4 寻找工具链 14
2.5 工具链解析 17
2.6 工具链中的其他工具 20
2.7 查看C库的组件 21
2.8 程式库:静态和动态连结 21
2.9 交叉编译艺术 24
2.10 交叉编译的问题 28
2.11 总结 29
第3章 引导载入程式 30
3.1 引导载入程式都做了些什幺 30
3.2 引导序列 31
3.3 使用UEFI固件引导 32
3.4 从引导载入程式到核心 33
3.5 设备树介绍 34
3.6 选择引导载入程式 38
3.7 U-Boot 39
3.8 Barebox 49
3.9 总结 51
第4章 移植与配置核心 52
4.1 核心做了什幺 52
4.2 选择核心 53
4.3 核心构建 55
4.4 编译 60
4.5 清理核心源 63
4.6 启动你的核心 63
4.7 将Linux移植到新板上 66
4.8 延伸阅读 69
4.9 总结 69
第5章 构建根档案系统 71
5.1 根档案系统是什幺 71
5.2 根档案系统的程式 75
5.3 根档案系统库 78
5.4 设备节点 79
5.5 proc与sysfs档案系统 80
5.6 核心模组 81
5.7 把根档案系统转移到目标 81
5.8 创建启动记忆体磁碟 82
5.9 init程式 85
5.10 配置用户账号 86
5.11 启动守护进程 87
5.12 管理设备节点的更好方法 88
5.13 配置网路 89
5.14 藉助设备表创建档案系统映像 90
5.15 使用NFS挂载根档案系统 92
5.16 使用TFTP载入核心 94
5.17 延伸阅读 95
5.18 总结 95
1.1 选择合适的作业系统 2
1.2 参与者 3
1.3 项目生命周期 4
1.4 开放源码 5
1.5 嵌入式Linux系统硬体 6
1.6 本书使用的硬体 7
1.7 本书使用的软体 9
1.8 总结 9
第2章 学习工具链 10
2.1 工具链是什幺 10
2.2 工具链类型:本地工具链和交叉工具链 11
2.3 选择C库 13
2.4 寻找工具链 14
2.5 工具链解析 17
2.6 工具链中的其他工具 20
2.7 查看C库的组件 21
2.8 程式库:静态和动态连结 21
2.9 交叉编译艺术 24
2.10 交叉编译的问题 28
2.11 总结 29
第3章 引导载入程式 30
3.1 引导载入程式都做了些什幺 30
3.2 引导序列 31
3.3 使用UEFI固件引导 32
3.4 从引导载入程式到核心 33
3.5 设备树介绍 34
3.6 选择引导载入程式 38
3.7 U-Boot 39
3.8 Barebox 49
3.9 总结 51
第4章 移植与配置核心 52
4.1 核心做了什幺 52
4.2 选择核心 53
4.3 核心构建 55
4.4 编译 60
4.5 清理核心源 63
4.6 启动你的核心 63
4.7 将Linux移植到新板上 66
4.8 延伸阅读 69
4.9 总结 69
第5章 构建根档案系统 71
5.1 根档案系统是什幺 71
5.2 根档案系统的程式 75
5.3 根档案系统库 78
5.4 设备节点 79
5.5 proc与sysfs档案系统 80
5.6 核心模组 81
5.7 把根档案系统转移到目标 81
5.8 创建启动记忆体磁碟 82
5.9 init程式 85
5.10 配置用户账号 86
5.11 启动守护进程 87
5.12 管理设备节点的更好方法 88
5.13 配置网路 89
5.14 藉助设备表创建档案系统映像 90
5.15 使用NFS挂载根档案系统 92
5.16 使用TFTP载入核心 94
5.17 延伸阅读 95
5.18 总结 95
第6章 选择构建系统 96
6.1 不再手动创建嵌入式Linux 96
6.2 构建系统 96
6.3 包格式和包管理器 98
6.4 Buildroot 98
6.5 Yocto项目 104
6.6 延伸阅读 116
6.7 总结 116
第7章 创建存储策略 117
7.1 存储器选择 117
7.2 从引导载入程式访问快闪记忆体 121
7.3 从Linux中访问快闪记忆体 122
7.4 快闪记忆体档案系统 127
7.5 NOR和NAND快闪记忆体的档案系统 128
7.6 託管快闪记忆体的档案系统 134
7.7 唯读压缩档案系统 138
7.8 临时档案系统 138
7.9 使根档案系统为唯读 139
7.10 档案系统选择 140
7.11 现场更新 140
7.12 延伸阅读 142
7.13 总结 143
第8章 设备驱动程式介绍 144
8.1 设备驱动程式的作用 144
8.2 字元设备 145
8.3 块设备 147
8.4 网路设备 147
8.5 在运行时寻找驱动程式 149
8.6 找到正确的设备驱动程式 153
8.7 用户空间中的设备驱动程式 153
8.8 编写核心设备驱动程式 158
8.9 载入核心模组 163
8.10 查找硬体配置 163
8.11 延伸阅读 166
8.12 总结 167
第9章 启动初始化程式 168
9.1 在核心启动后 168
9.2 初始化程式简介 169
9.3 BusyBox init 169
9.4 System V init 171
9.5 systemd 176
9.6 延伸阅读 181
9.7 总结 181
第10章 学习进程和执行绪 182
10.1 进程还是执行绪 182
10.2 进程 183
10.3 执行绪 191
10.4 调度 196
10.5 延伸阅读 200
10.6 总结 200
第11章 记忆体管理 201
11.1 虚拟记忆体基础 201
11.2 核心空间记忆体布局 202
11.3 用户空间记忆体布局 205
11.4 进程记忆体映射 206
11.5 交换 207
11.6 用mmap映射记忆体 208
11.7 我的应用程式使用了多少记忆体 209
11.8 每个进程的记忆体使用情况 210
11.9 识别记忆体泄漏 213
11.10 记忆体耗尽 215
11.11 延伸阅读 217
11.12 总结 217
第12章 使用GDB调试 218
12.1 GNU调试器:GDB 218
12.2 準备调试 218
12.3 使用GDB调试应用程式 219
12.4 使用gdbserver远程调试 219
12.5 开始调试 221
12.6 调试共享库 224
12.7 即时调试 225
12.8 调试分叉和执行绪 226
12.9 核心档案 226
12.10 GDB用户界面 228
12.11 调试核心代码 230
12.12 延伸阅读 237
12.13 总结 237
第13章 剖析和跟蹤 238
13.1 观察者效应 238
13.2 开始剖析 239
13.3 使用top进行剖析 240
13.4 介绍perf 241
13.5 其他剖析器:OProf?ile和gprof 245
13.6 跟蹤事件 247
13.7 介绍Ftrace 247
13.8 使用LTTng 252
13.9 使用Valgrind剖析应用程式 256
13.10 Callgrind 256
13.11 Helgrind 256
13.12 使用strace显示系统调用 257
13.13 总结 259
第14章 实时编程 260
14.1 什幺是实时性 260
14.2 确认非确定性的来源 262
14.3 理解调度延迟 263
14.4 核心抢占 263
14.5 实时Linux核心(PREEMPT_RT) 264
14.6 执行绪化中断处理程式 264
14.7 可抢占的核心锁 266
14.8 获得PREEMPT_RT补丁 266
14.9 高精度定时器 267
14.10 在实时套用中避免页面错误 268
14.11 中断禁止 269
14.12 测量调度延迟 269
14.13 延伸阅读 273
14.14 总结 273