• 嵌入式Linux基础教程
21年品牌 40万+商家 超1.5亿件商品

嵌入式Linux基础教程

正版保障 假一赔十 可开发票

55.82 6.3折 89 全新

库存6件

广东广州
认证卖家担保交易快速发货售后保障

作者[美]Christopher Hallinan

出版社人民邮电出版社

ISBN9787115402509

出版时间2015-08

装帧平装

开本其他

定价89元

货号8699206

上书时间2024-12-23

灵感书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
克里斯托弗·哈利南(Christopher Hallinan),有名嵌入式Linux技术专家。现任Mentor Graphics公司技术市场工程师,曾任MontaVista软件公司现场应用工程师,3Com公司工程总监,Crosscomm公司工程总监。他有25年以上网络和通信产品的软硬件开发经验。曾担任Linux咨询师,提供定制Linux主板接口、设备驱动程序和引导加载程序等方面的解决方案。

目录
第1章 入门1
1.1 为什么选择Linux1
1.2 嵌入式Linux现状2
1.3 开源和GPL2
1.4 标准及相关组织3
1.4.1 Linux标准基础3
1.4.2 Linux基金会4
1.4.3 电信级Linux4
1.4.4 移动Linux计划:Moblin4
1.4.5 服务可用性论坛5
1.5 小结5
第2章 综述6
2.1 嵌入与非嵌入6
2.2 剖析嵌入式系统7
2.2.1 典型的嵌入式Linux开发环境8
2.2.2 启动目标板9
2.2.3 引导内核10
2.2.4 内核初始化:概述12
2.2.5 第一个用户空间进程:init13
2.3 存储14
2.3.1 闪存14
2.3.2 NAND型闪存15
2.3.3 闪存的用途16
2.3.4 闪存文件系统17
2.3.5 内存空间17
2.3.6 执行上下文19
2.3.7 进程虚拟内存20
2.3.8 交叉开发环境21
2.4 嵌入式Linux发行版22
2.4.1 商业Linux发行版24
2.4.2 打造自己的Linux发行版24
2.5 小结24
第3章 处理器基础26
3.1 独立处理器26
3.1.1 IBM 970FX27
3.1.2 英特尔奔腾M27
3.1.3 英特尔凌动TM28
3.1.4 飞思卡尔MPC744828
3.1.5 配套芯片组28
3.2 集成处理器:片上系统30
3.2.1 Power架构30
3.2.2 飞思卡尔Power架构30
3.2.3 飞思卡尔PowerQUICC I31
3.2.4 飞思卡尔PowerQUICC II32
3.2.5 PowerQUICC II Pro32
3.2.6 飞思卡尔PowerQUICC III33
3.2.7 飞思卡尔QorIQTM34
3.2.8 AMCC Power架构36
3.2.9 MIPS38
3.2.10 Broadcom MIPS38
3.2.11 其他MIPS39
3.2.12 ARM40
3.2.13 德州仪器ARM40
3.2.14 飞思卡尔ARM42
3.2.15 其他ARM处理器43
3.3 其他架构43
3.4 硬件平台43
3.4.1 CompactPCI43
3.4.2 ATCA44
3.5 小结44
第4章 Linux内核:不同的视角46
4.1 背景知识46
4.1.1 内核版本47
4.1.2 内核源码库48
4.1.3 使用git下载内核代码49
4.2 Linux内核的构造49
4.2.1 顶层源码目录49
4.2.2 编译内核50
4.2.3 内核主体:vmlinux52
4.2.4 内核镜像的组成部分53
4.2.5 子目录的布局56
4.3 内核构建系统57
4.3.1 .config文件57
4.3.2 配置编辑器58
4.3.3 Makefile目标61
4.4 内核配置66
4.4.1 定制配置选项68
4.4.2 内核Makefile71
4.5 内核文档72
4.6 获得定制的Linux内核72
4.7 小结73
第5章 内核初始化75
5.1 合成内核镜像:Piggy及其他75
5.1.1 Image对象78
5.1.2 与具体架构相关的对象78
5.1.3 启动加载程序79
5.1.4 引导消息80
5.2 初始化时的控制流83
5.2.1 内核入口:head.o84
5.2.2 内核启动:main.c85
5.2.3 架构设置86
5.3 内核命令行的处理87
5.4 子系统初始化92
5.5 init线程94
5.5.1 通过initcalls进行初始化95
5.5.2 initcall_debug96
5.5.3 最后的引导步骤97
5.6 小结98
第6章 用户空间初始化100
6.1 根文件系统100
6.1.1 FHS:文件系统层次结构
标准101
6.1.2 文件系统布局101
6.1.3 最小化的文件系统102
6.1.4 嵌入式根文件系统带
来的挑战103
6.1.5 试错法104
6.1.6 自动化文件系统构建工具104
6.2 内核的最后一些引导步骤104
6.2.1 第一个用户空间程序106
6.2.2 解决依赖关系106
6.2.3 定制的初始进程107
6.3 init进程107
6.3.1 inittab109
6.3.2 Web服务器启动脚本示例111
6.4 初始RAM磁盘112
6.4.1 使用initrd进行引导113
6.4.2 引导加载程序对initrd的
支持113
6.4.3 initrd的奥秘所在:
linuxrc115
6.4.4 initrd探究116
6.4.5 构造initrd镜像116
6.5 使用initramfs117
6.6 关机119
6.7 小结120
第7章 引导加载程序122
7.1 引导加载程序的作用122
7.2 引导加载程序带来的挑战123
7.2.1 DRAM控制器123
7.2.2 闪存与RAM123
7.2.3 镜像的复杂性124
7.2.4 执行环境126
7.3 通用引导加载程序:Das U-Boot126
7.3.1 获取U-Boot127
7.3.2 配置U-Boot127
7.3.3 U-Boot的监控命令129
7.3.4 网络操作130
7.3.5 存储子系统132
7.3.6 从磁盘引导133
7.4 移植U-Boot133
7.4.1 EP405的U-Boot移植133
7.4.2 U-Boot Makefile中的配置
目标134
7.4.3 EP405的第一次构建135
7.4.4 EP405 处理器初始化136
7.4.5 与具体板卡相关的初始化138
7.4.6 移植总结141
7.4.7 U-Boot镜像格式141
7.5 设备树对象(扁平设备树)143
7.5.1 设备树源码145
7.5.2 设备树编译器148
7.5.3 使用DTB的其他内核镜像148
7.6 其他引导加载程序149
7.6.1 Lilo149
7.6.2 GRUB150
7.6.3 其他更多的引导加载程序151
7.7 小结152
第8章 设备驱动程序基础154
8.1 设备驱动程序的概念154
8.1.1 可加载模块155
8.1.2 设备驱动程序架构155
8.1.3 最小设备驱动程序示例156
8.1.4 模块构建的基础设施157
8.1.5 安装设备驱动程序160
8.1.6 加载模块160
8.1.7 模块参数161
8.2 模块工具162
8.2.1 insmod162
8.2.2 lsmod163
8.2.3 modprobe163
8.2.4 depmod164
8.2.5 rmmod165
8.2.6 modinfo165
8.3 驱动程序方法166
8.3.1 驱动程序中的文件系统
操作166
8.3.2 设备号的分配169
8.3.3 设备节点和mknod169
8.4 综合应用170
8.5 在内核源码树外构建驱动171
8.6 设备驱动程序和GPL172
8.7 小结173
第9章 文件系统174
9.1 Linux文件系统概念175
9.2 ext2176
9.2.1 挂载文件系统177
9.2.2 检查文件系统的完整性178
9.3 ext3180
9.4 ext4182
9.5 ReiserFS182
9.6 JFFS2183
9.7 cramfs185
9.8 网络文件系统187
9.9 伪文件系统190
9.9.1 /proc文件系统191
9.9.2 sysfs194
9.10 其他文件系统196
9.11 创建简单的文件系统197
9.12 小结199
第10章 MTD子系统201
10.1 MTD概述201
10.1.1 开启MTD服务202
10.1.2 MTD基础203
10.1.3 在目标板上配置MTD205
10.2 MTD分区205
10.2.1 使用Redboot分区表进行
分区206
10.2.2 使用内核命令行传递分区
信息210
10.2.3 映射驱动211
10.2.4 闪存芯片驱动213
10.2.5 与具体板卡相关的初始化214
10.3 MTD工具215
10.4 UBI文件系统219
10.4.1 配置UBIFS219
10.4.2 构建UBIFS镜像220
10.4.3 使用UBIFS作为根文件
系统222
10.5 小结222
第11章 BusyBox224
11.1 BusyBox简介224
11.2 BusyBox的配置225
11.3 BusyBox的操作227
11.3.1 BusyBox的init230
11.3.2 rcS初始化脚本示例232
11.3.3 BusyBox在目标板上的
安装233
11.3.4 BusyBox小应用235
11.4 小结235
第12章 嵌入式开发环境237
12.1 交叉开发环境237
12.2 对主机系统的要求241
12.3 为目标板提供服务242
12.3.1 TFTP服务器242
12.3.2 BOOTP/DHCP 服务器243
12.3.3 NFS服务器245
12.3.4 目标板使用NFS挂载根
文件系统247
12.3.5 U-Boot中使用NFS挂载根
文件系统的例子248
12.4 小结250
第13章 开发工具252
13.1 GNU调试器(GDB)252
13.1.1 调试核心转储253
13.1.2 执行GDB255
13.1.3 GDB中的调试会话257
13.2 数据显示调试器258
13.3 cbrowser/cscope260
13.4 追踪和性能评测工具261
13.4.1 strace261
13.4.2 strace命令行选项264
13.4.3 ltrace266
13.4.4 ps267
13.4.5 top269
13.4.6 mtrace270
13.4.7 dmalloc272
13.4.8 内核oops274
13.5 二进制工具276
13.5.1 readelf277
13.5.2 使用readelf查看调试信息278
13.5.3 objdump280
13.5.4 objcopy281
13.6 其他二进制实用程序281
13.6.1 strip281
13.6.2 addr2line282
13.6.3 strings282
13.6.4 ldd282
13.6.5 nm283
13.6.6 prelink283
13.7 小结284
第14章 内核调试技术286
14.1 内核调试带来的挑战286
14.2 使用KGDB进行内核调试287
14.2.1 KGDB的内核配置288
14.2.2 在开启KGDB时引导
目标板289
14.2.3 一些有用的内核断点293
14.2.4 KGDB与控制台共享一个
串行端口294
14.2.5 调试非常早期的内核代码295
14.2.6 主线内核对KGDB的支持296
14.3 内核调试技术297
14.3.1 gdb远程串行协议298
14.3.2 调试优化的内核代码300
14.3.3 GDB的用户自定义命令307
14.3.4 有用的内核GDB宏307
14.3.5 调试可加载模块315
14.3.6 printk调试319
14.3.7 Magic SysReq key320
14.4 硬件辅助调试321
14.4.1 使用JTAG探测器对闪存
进行编程322
14.4.2 使用JTAG探测器进行调
试323
14.5 不能启动的情况326
14.5.1 早期的串行端口调试输
出326
14.5.2 转储printk的日志缓冲
区327
14.5.3 使用KGDB调试内核异常328
14.6 小结329
第15章 调试嵌入式Linux应用程序331
15.1 目标调试331
15.2 远程(交叉)调试331
15.3 调试共享程序库335
15.4 调试多个任务340
15.4.1 调试多个进程340
15.4.2 调试多线程应用程序342
15.4.3 调试引导加载程序/闪存
代码345
15.5 其他远程调试选项345
15.5.1 使用串行端口进行调试345
15.5.2 附着到运行的进程上346
15.6 小结346
第16章 开源构建系统348
16.1 为什么使用构建系统348
16.2 Scratchbox349
16.2.1 安装Scratchbox349
16.2.2 创建一个交叉编译目标350
16.3 Buildroot351
16.3.1 安装Buildroot352
16.3.2 配置Buildroot352
16.3.3 构建Buildroot353
16.4 OpenEmbedded354
16.4.1 OpenEmbedded的组成355
16.4.2 BitBake元数据355
16.4.3 配方基础356
16.4.4 任务358
16.4.5 类359
16.4.6 配置元数据360
16.4.7 构建镜像361
16.5 小结362
第17章 实时Linux363
17.1 什么是实时363
17.1.1 软实时363
17.1.2 硬实时364
17.1.3 Linux调度364
17.1.4 延时364
17.2 内核抢占365
17.2.1 抢占的障碍366
17.2.2 抢占模式367
17.2.3 SMP内核368
17.2.4 抢占延时的根源369
17.3 实时内核补丁369
17.3.1 实时补丁的特性370
17.3.2 O(1)调度器371
17.3.3 创建实时进程372
17.4 实时内核的性能分析373
17.4.1 使用Ftrace追踪内核行为373
17.4.2 检测抢占被关闭的延时374
17.4.3 检测唤醒延时375
17.4.4 检测中断被关闭的延时377
17.4.5 检测Soft Lockup378
17.5 小结378
第18章 通用串行总线379
18.1 USB概述379
18.1.1 USB的物理拓扑结构379
18.1.2 USB的逻辑拓扑结构381
18.1.3 USB版本382
18.1.4 USB连接器382
18.1.5 USB线缆383
18.1.6 USB模式384
18.2 配置USB384
18.3 sysfs和USB设备命名388
18.4 实用的USB工具390
18.4.1 USB文件系统390
18.4.2 使用usbview392
18.4.3 USB 实用程序(lsusb)394
18.5 通用USB子系统395
18.5.1 USB大容量存储类395
18.5.2 USB HID类397
18.5.3 USB CDC类驱动398
18.5.4 USB网络支持400
18.6 USB调试401
18.6.1 usbmon402
18.6.2 实用USB杂记403
18.7 小结403
第19章 udev405
19.1 什么是udev405
19.2 设备发现406
19.3 udev的默认行为407
19.4 理解udev规则409
19.4.1 Modalias411
19.4.2 典型的udev规则配置414
19.4.3 udev的初始系统设置415
19.5 加载平台设备驱动程序417
19.6 定制udev的行为419
19.7 持久的设备命名420
19.8 udev和busybox配合使用423
19.8.1 busybox mdev423
19.8.2 配置mdev425
19.9 小结425
附录A 可配置的U-Boot命令427
附录B BusyBox命令430
附录C SDRAM接口注意事项440
附录D 开源资源447
附录E 简单的BDI-2000配置文件449

主编推荐
嵌入式Linux著作Amazon全五星评价全面剖析嵌入式Linux开发,揭示大量技术内幕广泛的硬件支持、稳定的内核、开源共享的软件开发工具、完善的网络通信和文件管理机制等特点,是嵌入式Linux获得了广泛应用,已成为嵌入式开发的主流平台。本书是嵌入式Linux领域的名著,全面深入而又简明地阐述了构建嵌入式Linux系统的精髓。本书不仅剖析了嵌入式Linux系统,而且讲述了处理器、内核、引导加载程序、设备驱动开发、文件系统等关键组件,介绍了嵌入式Linux系统的开发工具、调试技术。作者多年积累总结的嵌入式Linux开发技巧和提示,无论对初学者还是有经验的开发人员,都弥足珍贵。这一版不仅对原有章节进行了全面的修订、更新和改进,还新增了udev、USB和开源构建系统等内容。 

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

媒体评论
“这本书很令我振奋,它为那些想在嵌入式系统中使用Linux的开发人员提供了极

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP