《嵌入式Linux基础教程》

图书作者:华清远见 丛书名称: 图灵程序设计丛书 操作系统 出版日期: 2009年11月 PDF电子版免费下载

编辑推荐理由

推荐评分:5.0分

多年嵌入式人才培养及项目研发经验总结

数百家企业嵌入式研发岗位人才需求汇总

数十所嵌入式专业大学院校教学现状调研

侧重实践及案例分析并辅以代码加以讲解

图书简介

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

图书目录

  • ※ 第1章 引言.

  • 1.1 为什么使用linux
  • 1.2 嵌入式linux现状
  • 1.3 开源和gpl
  • 1.4 标准和相关机构
  • 1.4.1 lsb
  • 1.4.2 osdl
  • 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 intel pentium m
  • 3.1.3 freescale mpc7448
  • 3.1.4 配套芯片组
  • 3.2 集成化处理器:片上系统
  • 3.2.1 powerpc
  • 3.2.2 amcc powerpc
  • 3.2.3 freescale powerpc
  • 3.2.4 mips
  • 3.2.5 broadcom mips
  • 3.2.6 amd mips
  • 3.2.7 其他类型的mips
  • 3.2.8 arm
  • 3.2.9 ti arm
  • 3.2.10 freescale arm
  • 3.2.11 intel arm xscale v
  • 3.2.12 其他arm
  • 3.2.13 其他体系结构
  • 3.3 硬件平台
  • 3.3.1 compactpci
  • 3.3.2 atca
  • 3.4 小结
  • 参考资源
  • ※ 第4章 linux内核——不同视角

  • 4.1 背景知识
  • 4.1.1 内核的版本
  • 4.1.2 内核源码库
  • 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.3.4 内核配置
  • 4.3.5 自定义配置选项
  • 4.3.6 内核makefile
  • 4.3.7 内核文档
  • 4.4 获取linux内核
  • 4.5 小结
  • 参考资源
  • ※ 第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 通过initcall初始化
  • 5.5.2 引导的最后步骤
  • 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 初始ram磁盘的目的
  • 6.4.2 使用initrd引导
  • 6.4.3 引导装入程序对于initrd的支持
  • 6.4.4 initrd的奥妙所在:linuxrc文件
  • 6.4.5 initrd探究
  • 6.4.6 构建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 执行上下文
  • 7.3.2 u-boot命令集
  • 7.3.3 网络操作
  • 7.3.4 存储子系统
  • 7.3.5 从磁盘启动:u-boot
  • 7.4 移植u-boot
  • 7.4.1 为ep405开发板移植u-boot
  • 7.4.2 u-boot的makefile配置目标
  • 7.4.3 ep405处理器初始化
  • 7.4.4 特定开发板的初始化
  • 7.4.5 移植概要
  • 7.4.6 u-boot映像格式
  • 7.5 其他引导装入程序
  • 7.5.1 lilo
  • 7.5.2 grub..
  • 7.5.3 其他引导装入程序
  • 7.6 小结
  • 参考资源
  • ※ 第8章 设备驱动程序基础

  • 8.1 设备驱动程序基本概念
  • 8.1.1 可加载模块
  • 8.1.2 设备驱动程序的体系结构
  • 8.1.3 最小设备驱动程序示例
  • 8.1.4 模块构建的基础设施
  • 8.1.5 安装设备驱动程序
  • 8.1.6 加载设备驱动程序模块
  • 8.2 模块实用程序
  • 8.2.1 insmod
  • 8.2.2 模块参数
  • 8.2.3 lsmod
  • 8.2.4 modprobe
  • 8.2.5 depmod
  • 8.2.6 rmmod
  • 8.2.7 modinfo
  • 8.3 驱动程序方法
  • 8.3.1 驱动程序文件系统操作
  • 8.3.2 设备节点与mknod
  • 8.4 汇总
  • 8.5 设备驱动程序与gpl
  • 8.6 小结
  • 参考资源
  • ※ 第9章 文件系统

  • 9.1 linux文件系统的概念
  • 9.2 ext2文件系统
  • 9.2.1 挂载文件系统
  • 9.2.2 文件系统完整性检查
  • 9.3 ext3文件系统
  • 9.4 reiserfs文件系统
  • 9.5 jffs2文件系统
  • 9.6 cramfs文件系统
  • 9.7 nfs文件系统
  • 9.8 伪文件系统
  • 9.8.1 proc文件系统
  • 9.8.2 sysfs文件系统
  • 9.9 其他文件系统
  • 9.10 构建简单的文件系统
  • 9.11 小结
  • 参考资源
  • ※ 第10章 mtd子系统

  • 10.1 启用mtd服务
  • 10.2 mtd基础知识
  • 10.3 mtd分区
  • 10.3.1 redboot分区表
  • 10.3.2 内核命令行分区
  • 10.3.3 映射驱动程序
  • 10.3.4 闪存芯片驱动程序
  • 10.3.5 特定开发板的初始化
  • 10.4 mtd实用程序
  • 10.5 小结
  • 参考资源
  • ※ 第11章 busybox

  • 11.1 busybox简介
  • 11.2 busybox配置
  • 11.3 busybox操作
  • 11.3.1 busybox之init
  • 11.3.2 rcs初始化脚本示例
  • 11.3.3 在目标平台安装busybox
  • 11.3.4 busybox命令
  • 11.4 小结
  • 参考资源
  • ※ 第12章 嵌入式开发环境

  • 12.1 交叉开发环境
  • 12.2 主机系统需求
  • 12.3 为目标板提供服务
  • 12.3.1 tftp服务器
  • 12.3.2 bootp/dhcp服务器
  • 12.3.3 nfs服务器
  • 12.3.4 使用nfs为目标板挂载根文件系统
  • 12.3.5 u-boot nfs根挂载示例
  • 12.4 小结
  • 参考资源
  • ※ 第13章 开发工具

  • 13.1 gdb
  • 13.1.1 调试核心转储
  • 13.1.2 调用gdb
  • 13.1.3 gdb调试会话
  • 13.2 ddd
  • 13.3 cbrowser/cscope
  • 13.4 追踪和程序分析工具
  • 13.4.1 strace
  • 13.4.2 strace的变体
  • 13.4.3 ltrace
  • 13.4.4 ps
  • 13.4.5 top
  • 13.4.6 mtrace
  • 13.4.7 dmalloc
  • 13.4.8 内核oops
  • 13.5 二进制实用程序
  • 13.5.1 readelf
  • 13.5.2 使用readelf检查调试信息
  • 13.5.3 objdump
  • 13.5.4 objcopy
  • 13.6 其他二进制实用程序
  • 13.6.1 strip
  • 13.6.2 addr2line
  • 13.6.3 strings
  • 13.6.4 ldd
  • 13.6.5 nm
  • 13.6.6 prelink
  • 13.7 小结
  • 参考资源
  • ※ 第14章 内核调试技术

  • 14.1 内核调试的难点
  • 14.2 使用kgdb调试内核
  • 14.2.1 kgdb内核配置
  • 14.2.2 支持kgdb的内核启动
  • 14.2.3 有用的内核断点
  • 14.3 linux内核的调试
  • 14.3.1 gdb远程串口协议
  • 14.3.2 调试优化后的内核代码
  • 14.3.3 gdb用户定义命令
  • 14.3.4 有用的内核gdb宏
  • 14.3.5 调试可加载模块
  • 14.3.6 printk调试
  • 14.3.7 magic sysreq键
  • 14.4 硬件辅助调试
  • 14.4.1 使用jtag探测器对闪存编程
  • 14.4.2 用jtag探测器进行调试
  • 14.5 无法启动时
  • 14.5.1 早期串口调试输出
  • 14.5.2 转储printk日志缓冲区
  • 14.5.3 kgdb捕捉崩溃
  • 14.6 小结
  • 参考资源
  • ※ 第15章 调试嵌入式linux应用程序

  • 15.1 目标机调试
  • 15.2 远程(交叉)调试
  • 15.3 使用共享库进行调试
  • 15.4 多任务调试
  • 15.4.1 多进程的调试
  • 15.4.2 多线程应用程序的调试
  • 15.4.3 引导装入程序/闪存代码的调试
  • 15.5 远程调试的附加选项
  • 15.5.1 串行端口调试
  • 15.5.2 绑定到正在运行的进程
  • 15.6 小结
  • 参考资源
  • ※ 第16章 移植linux

  • 16.1 linux源代码的组织
  • 16.2 为开发板定制linux
  • 16.2.1 前提和假设
  • 16.2.2 定制内核初始化
  • 16.2.3 静态内核命令行
  • 16.3 平台初始化
  • 16.3.1 早期变量访问
  • 16.3.2 开发板信息结构
  • 16.3.3 机器相关的调用
  • 16.4 汇总
  • 16.5 小结
  • 参考资源
  • ※ 第17章 linux与实时

  • 17.1 什么是实时
  • 17.1.1 软实时
  • 17.1.2 硬实时
  • 17.1.3 linux 调度
  • 17.1.4 中断延迟
  • 17.2 内核抢占
  • 17.2.1 抢占的缺陷
  • 17.2.2 抢占模型
  • 17.2.3 smp内核
  • 17.2.4 抢占延迟源
  • 17.3 实时内核补丁
  • 17.3.1 实时的特性
  • 17.3.2 o(1) 调度器
  • 17.3.3 创建实时进程
  • 17.3.4 临界区管理
  • 17.4 调试实时内核
  • 17.4.1 软锁检测
  • 17.4.2 抢占调试
  • 17.4.3 调试唤醒时间
  • 17.4.4 唤醒延迟历史
  • 17.4.5 中断响应时间
  • 17.4.6 中断响应历史
  • 17.4.7 延迟跟踪
  • 17.4.8 调试死锁环境
  • 17.4.9 锁模式的运行时控制权
  • 17.5 小结
  • 参考资源
  • 附录a 可配置的u-boot命令
  • 附录b busybox命令
  • 附录c sdram接口的注意事项
  • 附录d 开源项目资源
  • 附录e bdi-2000配置文件示例...