注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统Linux嵌入式Linux基础教程

嵌入式Linux基础教程

嵌入式Linux基础教程

定 价:¥59.00

作 者: (美)哈利南 著,华清远见嵌入式培训中心 译
出版社: 人民邮电出版社
丛编项:
标 签: LINUX

购买这本书可以去


ISBN: 9787115215222 出版时间: 2009-11-01 包装: 平装
开本: 16开 页数: 341 字数:  

内容简介

  《嵌入式Linux基础教程》是嵌入式Linux的经典教程,介绍了引导装入程序、系统初始化、文件系统、闪存和内核、应用程序调试技巧等,还讲述了构建Linux系统的工作原理,用于驱动不同体系结构的配置,Linux内核源码树的特性,如何根据需求配制内核运行时的行为,如何扩展系统功能等内容。更重要的是,《嵌入式Linux基础教程》阐述了如何修改系统使之满足读者自己的需求,使读者能从中学习一些嵌入式工程中非常有用的提示和技巧。《嵌入式Linux基础教程》适合Linux程序员阅读,也可作为高等院校相关专业师生的参考读物。

作者简介

  Christopher Hallinan,著名嵌入式Linux技术专家。Monta Vistata件公司现场应用工程师,曾任3Com公司工程总监。他有25年以上网络和通信产品的软硬件开发经验,曾担任Linux咨询师,提供定制Linux主板接口、设备驱动程序和引导装入程序等方面的解决方案。译者简介:华清远见嵌入式培训中心(http://www.farsight.com.cn)是享有盛誉的嵌入式高端培训企业,目前已成为ARM、Altera、Atmel、Microsoft、Symbian等全球知名嵌入式企业授权培训中心。每年为Samsung、NEC、Philips、Motorola等世界500强企业提供嵌入式技术企业培训服务,同时也致力于推广与普及嵌入式技术。数万名技术人员由此受益。

图书目录

第1章 引言 1
1.1 为什么使用Linux 1
1.2 嵌入式Linux现状 2
1.3 开源和GPL 2
1.4 标准和相关机构 3
1.4.1 LSB 3
1.4.2 OSDL 3
1.5 小结 4
参考资源 4
第2章 嵌入式初体验 5
2.1 需要嵌入式系统吗 5
2.2 嵌入式系统剖析 6
2.2.1 典型嵌入式Linux系统设置 7
2.2.2 启动目标板 8
2.2.3 启动内核 9
2.2.4 内核初始化概述 10
2.2.5 第一个用户空间进程:init 11
2.3 存储的思考 12
2.3.1 闪存 12
2.3.2 NAND闪存 13
2.3.3 闪存的用途 14
2.3.4 闪存文件系统 14
2.3.5 存储器空间 15
2.3.6 运行上下文 16
2.3.7 进程中的虚拟内存 17
2.3.8 交叉开发环境 19
2.4 嵌入式Linux的发行版 20
2.4.1 Linux商业发行版 21
2.4.2 Linux自定义发行版 21
2.5 小结 21
参考资源 22
第3章 处理器基础 23
3.1 单机处理器 23
3.1.1 IBM 970FX 24
3.1.2 Intel Pentium M 24
3.1.3 Freescale MPC7448 25
3.1.4 配套芯片组 25
3.2 集成化处理器:片上系统 27
3.2.1 PowerPC 27
3.2.2 AMCC PowerPC 27
3.2.3 Freescale PowerPC 30
3.2.4 MIPS 33
3.2.5 Broadcom MIPS 33
3.2.6 AMD MIPS 34
3.2.7 其他类型的MIPS 35
3.2.8 ARM 35
3.2.9 TI ARM 35
3.2.10 Freescale ARM 37
3.2.11 Intel ARM XScale 37
3.2.12 其他ARM 38
3.2.13 其他体系结构 38
3.3 硬件平台 38
3.3.1 CompactPCI 38
3.3.2 ATCA 39
3.4 小结 39
参考资源 40
第4章 Linux内核——不同视角 41
4.1 背景知识 41
4.1.1 内核的版本 42
4.1.2 内核源码库 43
4.2 Linux内核构造 44
4.2.1 顶层资源目录 44
4.2.2 编译内核 45
4.2.3 严格意义上的内核:vmlinux 46
4.2.4 内核映像组件 47
4.2.5 子目录结构 50
4.3 内核构建系统 50
4.3.1 .config文件 51
4.3.2 配置编辑器 52
4.3.3 makefile的目标 55
4.3.4 内核配置 58
4.3.5 自定义配置选项 59
4.3.6 内核makefile 62
4.3.7 内核文档 62
4.4 获取Linux内核 63
4.5 小结 64
参考资源 64
第5章 内核初始化 65
5.1 合成内核映像:piggy及其他 65
5.1.1 Image目标文件 67
5.1.2 体系结构相关的目标文件 68
5.1.3 第二阶段引导装入程序 69
5.1.4 引导信息 69
5.2 初始化控制流 72
5.2.1 内核入口点:head.o 73
5.2.2 内核启动:main.c 74
5.2.3 体系结构设置 75
5.3 内核命令行处理 75
5.4 子系统初始化 80
5.5 init线程 82
5.5.1 通过initcall初始化 83
5.5.2 引导的最后步骤 84
5.6 小结 85
参考资源 85
第6章 系统初始化 86
6.1 根文件系统 86
6.1.1 FHS 87
6.1.2 文件系统布局 87
6.1.3 最小文件系统 88
6.1.4 根文件系统带来的挑战 89
6.1.5 试错法 90
6.1.6 自动化文件系统构建工具 90
6.2 内核的最后引导过程 90
6.2.1 用户空间下第一个程序 91
6.2.2 解决依赖 92
6.2.3 定制初始化进程 92
6.3 init进程 92
6.3.1 inittab 95
6.3.2 Web服务器启动脚本示例 96
6.4 初始RAM磁盘 97
6.4.1 初始RAM磁盘的目的 98
6.4.2 使用initrd引导 98
6.4.3 引导装入程序对于initrd的支持 98
6.4.4 initrd的奥妙所在:linuxrc文件 100
6.4.5 initrd探究 100
6.4.6 构建initrd映像文件 101
6.5 使用initramfs 102
6.6 关机 103
6.7 小结 103
参考资源 104
第7章 引导装入程序 105
7.1 引导装入程序的作用 105
7.2 引导装入程序的挑战 106
7.2.1 DRAM控制器 106
7.2.2 闪存与RAM 106
7.2.3 映像的复杂性 107
7.2.4 执行上下文 108
7.3 通用的引导装入程序:Das U-Boot 109
7.3.1 执行上下文 109
7.3.2 U-Boot命令集 111
7.3.3 网络操作 111
7.3.4 存储子系统 113
7.3.5 从磁盘启动:U-Boot 113
7.4 移植U-Boot 114
7.4.1 为EP405开发板移植U-Boot 114
7.4.2 U-Boot的makefile配置目标 115
7.4.3 EP405处理器初始化 116
7.4.4 特定开发板的初始化 117
7.4.5 移植概要 120
7.4.6 U-Boot映像格式 120
7.5 其他引导装入程序 122
7.5.1 Lilo 122
7.5.2 GRUB 123
7.5.3 其他引导装入程序 124
7.6 小结 124
参考资源 124
第8章 设备驱动程序基础 126
8.1 设备驱动程序基本概念 126
8.1.1 可加载模块 127
8.1.2 设备驱动程序的体系结构 127
8.1.3 最小设备驱动程序示例 128
8.1.4 模块构建的基础设施 129
8.1.5 安装设备驱动程序 131
8.1.6 加载设备驱动程序模块 132
8.2 模块实用程序 133
8.2.1 insmod 133
8.2.2 模块参数 133
8.2.3 lsmod 134
8.2.4 modprobe 135
8.2.5 depmod 136
8.2.6 rmmod 136
8.2.7 modinfo 137
8.3 驱动程序方法 137
8.3.1 驱动程序文件系统操作 138
8.3.2 设备节点与mknod 140
8.4 汇总 141
8.5 设备驱动程序与GPL 143
8.6 小结 143
参考资源 144
第9章 文件系统 145
9.1 Linux文件系统的概念 146
9.2 ext2文件系统 147
9.2.1 挂载文件系统 148
9.2.2 文件系统完整性检查 149
9.3 ext3文件系统 150
9.4 ReiserFS文件系统 152
9.5 JFFS2文件系统 153
9.6 cramfs文件系统 155
9.7 NFS文件系统 156
9.8 伪文件系统 160
9.8.1 proc文件系统 160
9.8.2 sysfs文件系统 162
9.9 其他文件系统 164
9.10 构建简单的文件系统 165
9.11 小结 166
参考资源 166
第10章 MTD子系统 168
10.1 启用MTD服务 168
10.2 MTD基础知识 170
10.3 MTD分区 172
10.3.1 Redboot分区表 173
10.3.2 内核命令行分区 176
10.3.3 映射驱动程序 177
10.3.4 闪存芯片驱动程序 178
10.3.5 特定开发板的初始化 179
10.4 MTD实用程序 180
10.5 小结 184
参考资源 184
第11章 BusyBox 186
11.1 BusyBox简介 186
11.2 BusyBox配置 187
11.3 BusyBox操作 189
11.3.1 BusyBox之init 191
11.3.2 rcS初始化脚本示例 193
11.3.3 在目标平台安装BusyBox 193
11.3.4 BusyBox命令 195
11.4 小结 196
参考资源 196
第12章 嵌入式开发环境 197
12.1 交叉开发环境 197
12.2 主机系统需求 200
12.3 为目标板提供服务 201
12.3.1 TFTP服务器 201
12.3.2 BOOTP/DHCP服务器 202
12.3.3 NFS服务器 204
12.3.4 使用NFS为目标板挂载根文件系统 205
12.3.5 U-Boot NFS根挂载示例 206
12.4 小结 208
参考资源 208
第13章 开发工具 209
13.1 GDB 209
13.1.1 调试核心转储 210
13.1.2 调用GDB 211
13.1.3 GDB调试会话 213
13.2 DDD 214
13.3 cbrowser/cscope 216
13.4 追踪和程序分析工具 217
13.4.1 strace 217
13.4.2 strace的变体 220
13.4.3 ltrace 221
13.4.4 ps 222
13.4.5 top 224
13.4.6 mtrace 225
13.4.7 dmalloc 226
13.4.8 内核oops 228
13.5 二进制实用程序 230
13.5.1 readelf 230
13.5.2 使用readelf检查调试信息 232
13.5.3 objdump 233
13.5.4 objcopy 234
13.6 其他二进制实用程序 234
13.6.1 strip 234
13.6.2 addr2line 235
13.6.3 strings 235
13.6.4 ldd 235
13.6.5 nm 236
13.6.6 prelink 236
13.7 小结 237
参考资源 237
第14章 内核调试技术 238
14.1 内核调试的难点 238
14.2 使用KGDB调试内核 239
14.2.1 KGDB内核配置 240
14.2.2 支持KGDB的内核启动 241
14.2.3 有用的内核断点 243
14.3 Linux内核的调试 244
14.3.1 gdb远程串口协议 244
14.3.2 调试优化后的内核代码 247
14.3.3 gdb用户定义命令 251
14.3.4 有用的内核gdb宏 252
14.3.5 调试可加载模块 258
14.3.6 printk调试 262
14.3.7 Magic SysReq键 263
14.4 硬件辅助调试 263
14.4.1 使用JTAG探测器对闪存编程 265
14.4.2 用JTAG探测器进行调试 266
14.5 无法启动时 268
14.5.1 早期串口调试输出 269
14.5.2 转储printk日志缓冲区 270
14.5.3 KGDB捕捉崩溃 271
14.6 小结 272
参考资源 272
第15章 调试嵌入式Linux应用程序 274
15.1 目标机调试 274
15.2 远程(交叉)调试 274
15.3 使用共享库进行调试 278
15.4 多任务调试 282
15.4.1 多进程的调试 282
15.4.2 多线程应用程序的调试 284
15.4.3 引导装入程序/闪存代码的调试 286
15.5 远程调试的附加选项 287
15.5.1 串行端口调试 287
15.5.2 绑定到正在运行的进程 287
15.6 小结 288
参考资源 288
第16章 移植Linux 289
16.1 Linux源代码的组织 289
16.2 为开发板定制Linux 291
16.2.1 前提和假设 291
16.2.2 定制内核初始化 292
16.2.3 静态内核命令行 294
16.3 平台初始化 295
16.3.1 早期变量访问 298
16.3.2 开发板信息结构 299
16.3.3 机器相关的调用 301
16.4 汇总 302
16.5 小结 304
参考资源 304
第17章 Linux与实时 305
17.1 什么是实时 305
17.1.1 软实时 305
17.1.2 硬实时 306
17.1.3 Linux 调度 306
17.1.4 中断延迟 306
17.2 内核抢占 307
17.2.1 抢占的缺陷 307
17.2.2 抢占模型 308
17.2.3 SMP内核 309
17.2.4 抢占延迟源 310
17.3 实时内核补丁 310
17.3.1 实时的特性 311
17.3.2 O(1)调度器 313
17.3.3 创建实时进程 313
17.3.4 临界区管理 314
17.4 调试实时内核 314
17.4.1 软锁检测 314
17.4.2 抢占调试 315
17.4.3 调试唤醒时间 315
17.4.4 唤醒延迟历史 315
17.4.5 中断响应时间 316
17.4.6 中断响应历史 316
17.4.7 延迟跟踪 317
17.4.8 调试死锁环境 318
17.4.9 锁模式的运行时控制权 319
17.5 小结 319
参考资源 319
附录A 可配置的U-Boot命令 320
附录B BusyBox命令 322
附录C SDRAM接口的注意事项 328
附录D 开源项目资源 334
附录E BDI-2000配置文件示例 336

本目录推荐