嵌入式Linux基础教程(第2版)
作者: (美)哈利南
译者:周鹏 译;
出版时间:2016年4月
出版社:人民邮电出版社
- 人民邮电出版社
- 9787115402509
- 100387
- 2016年4月
- 未分类
- 未分类
- TP316.89
哈利南著的《嵌入式Linux基础教程(第2版)》是嵌入式Linux的经典教程,介绍了引导加载程序、系统初始化、文件系统、闪存和内核、应用程序调试技巧等,还讲述了构建Linux系统的工作原理,用于驱动不同架构的配置,Linux内核源码树的特性,如何根据需求配制内核运行时的行为,如何扩展系统功能,用于构建完整嵌入式Linux发行版的常用构建系统,USB子系统和系统配置工具udev等内容。更重要的是,《嵌入式Linux基础教程(第2版)》阐述了如何修改系统使之满足读者自身的需求,确保读者能够从中学习一些嵌入式工程中非常有用的提示和技巧。
《嵌入式Linux基础教程(第2版)》适合Linux程序员阅读,也可作为高等院校相关专业师生的参考读物。
第1章 入门
1.1 为什么选择Linux
1.2 嵌入式Linux现状
1.3 开源和GPL
1.4 标准及相关组织
1.4.1 Linux标准基础
1.4.2 Linux基金会
1.4.3 电信级Linux
1.4.4 移动Linux计划:Moblin
1.4.5 服务可用性论坛
1.5 小结
第2章 综述
2.1 嵌入与非嵌入
2.2 剖析嵌入式系统
2.2.1 典型的嵌入式Linux开发环境
2.2.2 启动目标板
2.2.3 引导内核
2.2.4 内核初始化:概述
2.2.5第一个用户空间进程:init
2.3 存储
2.3.1 闪存
2.3.2 NAND型闪存
2.3.3 闪存的用途
2.3.4 闪存文件系统
2.3.5 内存空间
2.3.6 执行上下文
2.3.7 进程虚拟内存
2.3.8 交叉开发环境
2.4 嵌入式Linux发行版
2.4.1 商业Linux发行版
2.4.2 打造自己的Linux发行版
2.5 小结
第3章 处理器基础
3.1 独立处理器
3.1.1 IBM 970FX
3.1.2 英特尔奔腾M
3.1.3 英特尔凌动TM
3.1.4 飞思卡尔MPC7448
3.1.5 配套芯片组
3.2 集成处理器:片上系统
3.2.1 Power架构
3.2.2 飞思卡尔Power架构
3.2.3 飞思卡尔PowerQUICC I
3.2.4 飞思卡尔PowerQUICC II
3.2.5 PowerQUICC II Pro
3.2.6 飞思卡尔PowerQUICC III
3.2.7 飞思卡尔QorIQTM
3.2.8 AMCC Power架构
3.2.9 MIPS
3.2.10 Broadcom MIPS
3.2.11 其他MIPS
3.2.12 ARM
3.2.13 德州仪器ARM
3.2.14 飞思卡尔ARM
3.2.15 其他ARM处理器
3.3 其他架构
3.4 硬件平台
3.4.1 CompactPCI
3.4.2 ATCA
3.5 小结
第4章 Linux内核:不同的视角
4.1 背景知识
4.1.1 内核版本
4.1.2 内核源码库
4.1.3 使用git下载内核代码
4.2 Linux内核的构造
4.2.1 顶层源码目录
4.2.2 编译内核
4.2.3 内核主体:vmlinux
4.2.4 内核镜像的组成部分
4.2.5 子目录的布局
4.3 内核构建系统
4.3.1 .config文件
4.3.2 配置编辑器
4.3.3 Makefile目标
4.4 内核配置
4.4.1 定制配置选项
4.4.2 内核Makefile
4.5 内核文档
4.6 获得定制的Linux内核
4.7 小结
第5章 内核初始化
5.1 合成内核镜像:Piggy及其他
5.1.1 Image对象
5.1.2 与具体架构相关的对象
5.1.3 启动加载程序
5.1.4 引导消息
5.2 初始化时的控制流
5.2.1 内核入口:head.o
5.2.2 内核启动:main.c
5.2.3 架构设置
5.3 内核命令行的处理
5.4 子系统初始化
5.5 init线程
5.5.1 通过initcalls进行初始化
5.5.2 initcall_debug
5.5.3 最后的引导步骤
5.6 小结
第6章 用户空间初始化
6.1 根文件系统
6.1.1 FHS:文件系统层次结构标准
6.1.2 文件系统布局
6.1.3 最小化的文件系统
6.1.4 嵌入式根文件系统带来的挑战
6.1.5 试错法
6.1.6 自动化文件系统构建工具
6.2 内核的最后一些引导步骤
6.2.1第一个用户空间程序
6.2.2 解决依赖关系
6.2.3 定制的初始进程
6.3 init进程
6.3.1 inittab
6.3.2 Web服务器启动脚本示例
6.4 初始RAM磁盘
6.4.1 使用initrd进行引导
6.4.2 引导加载程序对initrd的支持
6.4.3 initrd的奥秘所在:linuxrc
6.4.4 initrd探究
6.4.5 构造initrd镜像
6.5 使用initramfs
6.6 关机
6.7 小结
第7章 引导加载程序
7.1 引导加载程序的作用
7.2 引导加载程序带来的挑战
7.2.1 DRAM控制器
7.2.2 闪存与RAM
7.2.3 镜像的复杂性
7.2.4 执行环境
7.3 通用引导加载程序:Das U-Boot
7.3.1 获取U-Boot
7.3.2 配置U-Boot
7.3.3 U-Boot的监控命令
7.3.4 网络操作
7.3.5 存储子系统
7.3.6 从磁盘引导
7.4 移植U-Boot
7.4.1 EP405的U-Boot移植
7.4.2 U-Boot Makefile中的配置目标
7.4.3 EP405的第一次构建
7.4.4 EP405 处理器初始化
7.4.5 与具体板卡相关的初始化
7.4.6 移植总结
7.4.7 U-Boot镜像格式
7.5 设备树对象(扁平设备树)
7.5.1 设备树源码
7.5.2 设备树编译器
7.5.3 使用DTB的其他内核镜像
7.6 其他引导加载程序
7.6.1 Lilo
7.6.2 GRUB
7.6.3 其他更多的引导加载程序
7.7 小结
第8章 设备驱动程序基础
8.1 设备驱动程序的概念
8.1.1 可加载模块
8.1.2 设备驱动程序架构
8.1.3 最小设备驱动程序示例
8.1.4 模块构建的基础设施
8.1.5 安装设备驱动程序
8.1.6 加载模块
8.1.7 模块参数
8.2 模块工具
8.2.1 insmod
8.2.2 lsmod
8.2.3 modprobe
8.2.4 depmod
8.2.5 rmmod
8.2.6 modinfo
8.3 驱动程序方法
8.3.1 驱动程序中的文件系统操作
8.3.2 设备号的分配
8.3.3 设备节点和mknod
8.4 综合应用
8.5 在内核源码树外构建驱动
8.6 设备驱动程序和GPL
8.7 小结
第9章 文件系统
第10章 MTD子系统
第11章 BusyBox
第12章 嵌入式开发环境
第13章 开发工具
第14章 内核调试技术
第15章 调试嵌入式Linux应用程序
第16章 开源构建系统
第17章 实时Linux
第18章 通用串行总线
第19章 udev
附录A 可配置的U-Boot命令
附录B BusyBox命令
附录C SDRAM接口注意事项
附录D 开源资源
附录E 简单的BDI-2000配置文件