在《深入剖析Linux内核与设备驱动》的结构编排上,从基础出发,努力使各章节独立起来,但是少量的向前或者向后引用还是必不可少的。但是总体上,会将最基本的篇章尽量放到前面。所以按顺序阅读是最好的。
在代码的引用上,以TI发布的DM3730的Android版本中内核代码为主,为了突出主线部分和削减本书的篇幅,笔者会以主要功能代码为主进行分析和介绍,而省略辅助型代码。
《深入剖析Linux内核与设备驱动》从需求的角度出发,以层次分析的方法探究Linux内核以及驱动的各部分框架和实现。另外以TI的嵌入式芯片为例,对内核各部分功能特别是电源管理功能进行代码级别的分析。整体以需求是什么,如何实现相应需求来进行分析,更易于对系统的把握和理解。《深入剖析Linux内核与设备驱动》将软件和硬件结合起来分析了嵌入式处理以及Linux内核实现中的各种技术,特别是对电源管理技术进行了全面细致的分析和介绍。《深入剖析Linux内核与设备驱动》可以作为本科和研究生操作系统的参考书,也适合Linux内核,驱动以及嵌入式系统各种级别的开发者和爱好者。
前言
第1章 引言
1.1 为什么要从硬件设备的角度看Linux 内核
1.2 从了解硬件开始
1.2.1 最小系统
1.2.2 完整设备介绍
1.2.3 电源管理相关基础
1.3 从设备看内核应该满足的需求
1.4 所涉及的重要概念
1.5 小结
第2章 TI应用处理器芯片及其内核特点
2.1 DM 3730微处理器
2.1.1 DM 3730微处理器框架
2.1.2 DM 3730微处理器特性
2.1.3 DM 3730微处理器电源管理相关设计
2.2 DM 81XX系列微处理器
2.2.1 DM 81XX系列微处理器框架
2.2.2 DM 81XX系列微处理器特性
2.2.3 DM 81XX系列微处理器电源管理相关设计
2.3 Sitara系列芯片
2.3.1 Sitara系列芯片框架
2.3.2 Sitara系列芯片特性
2.3.3 Sitara系列芯片电源管理相关设计
2.4 TI处理器内核特殊代码结构
2.5 小结
第3章 Linux 内核框架探究
3.1 内核框架概述
3.1.1 Linux内核的层次分析
3.1.2 Linux内核模块间关联
3.2 需求探究
3.2.1 对内核核心的需求探究
3.2.2 对设备管理的需求探究
3.3 按需求的设备分类
3.3.1 功能型设备
3.3.2 总线型设备
3.4 系统实现各种无关性的框架
3.4.1 体系结构无关
3.4.2 功能型设备的框架与总线无关
3.4.3 总线控制器与总线设备的无关
3.4.4 设备属性和设备操作无关
3.4.5 策略和机制无关
3.5 内核提供的基本服务和接口简介
3.5.1 基本数据类型
3.5.2 基本原子操作
3.5.3 延时、调度、定时器相关
3.5.4 锁操作
3.5.5 抢占和屏障
3.6 小结
第4章 内核核心介绍及硬件的具体实现
4.1 内核初始化
4.1.1 内核初始化的基本需求
4.1.2 内核初始化框架介绍
4.1.3 TI芯片内核初始化相关实现详解
4.2 地址映射
4.2.1 地址映射的基本需求
4.2.2 地址映射框架介绍
4.2.3 TI芯片地址映射相关实现详解
4.3 中断处理
4.3.1 中断的基本需求
4.3.2 中断处理框架介绍
4.3.3 TI芯片中断处理相关实现详解
4.4 内存管理
4.4.1 内存管理的基本需求
4.4.2 内存管理框架介绍
4.4.3 TI芯片内存管理相关实现详解
4.5 直接存储器访问单元(DMA)
4.5.1 DMA使用和管理基本需求
4.5.2 DMA使用和管理框架介绍
4.5.3 TI芯片DMA使用和管理相关实现详解
4.6 时钟(clock)
4.6.1 clock管理基本需求
4.6.2 clock管理框架介绍
4.6.3 TI芯片clock管理相关实现详解
4.7 时间管理(Time)
4.7.1 时间管理基本需求
4.7.2 时间管理框架介绍
4.7.3 TI芯片时间管理相关实现详解
4.8 通用目的输入输出(GPIO)
4.8.1 GPIO管理基本需求
4.8.2 GPIO管理框架介绍
4.8.3 TI芯片GPIO管理相关实现详解
4.9 引脚复用(pin mux)
4.9.1 引脚复用的基本需求
4.9.2 引脚复用框架介绍
4.9.3 TI芯片引脚复用相关实现详解
4.10 小结
第5章 内核设备管理以及驱动基础框架
5.1 VFS及其与设备的关联
5.1.1 VFS框架
5.1.2 VFS与设备关联
5.2 Linux设备模型(Linux device model)
5.2.1 设备模型的需求及基本设计
5.2.2 总线(bus)
5.2.3 驱动(driver)
5.2.4 设备(devices)
5.2.5 功能类(class)
5.2.6 设备资源管理(device resource)
5.3 字符设备(char device)
5.3.1 字符设备的特点和需求
5.3.2 字符设备的核心数据结构及操作
5.3.3 字符设备子类型
5.4 块设备(block device)
5.4.1 块设备特点和需求
5.4.2 块设备核心数据结构及操作
5.4.3 块设备子类型
5.5 电源管理
5.5.1 电源管理特点和需求
5.5.2 电源管理核心框架介绍
5.6 内核提供的同步操作、异步事件与单独执行实体的服务
5.6.1 同步操作服务
5.6.2 异步事件
5.6.3 单独执行实体服务
5.7 内核提供的数据保护一致性操作服务
5.7.1 数据保护一致性操作服务的需求
5.7.2 各种数据保护一致性操作简介
5.8 小结
第6章 设备驱动之功能型驱动
6.1 输入设备(input)
6.1.1 输入设备需求
6.1.2 输入设备框架解析
6.1.3 输入设备应用层操作及框架适配
6.1.4 TI芯片输入设备相关实现详解
6.1.5 输入设备电源管理相关说明
6.2 帧缓冲(frame buffer)
6.2.1 帧缓冲设备需求
6.2.2 帧缓冲框架解析
6.2.3 帧缓冲应用层操作及框架适配
6.2.4 TI芯片帧缓冲驱动相关实现详解
6.2.5 帧缓冲驱动电源管理相关说明
6.3 音频设备(audio ALSA)
6.3.1 音频设备需求
6.3.2 音频驱动框架解析
6.3.3 音频驱动应用层操作及框架适配
6.3.4 TI芯片音频驱动相关实现详解
6.3.5 音频驱动电源管理相关说明
6.4 视频驱动(V4L2)
6.4.1 视频驱动需求
6.4.2 视频驱动框架解析
6.4.3 视频驱动应用层操作及框架适配
6.4.4 TI芯片视频驱动相关实现详解
6.4.5 视频驱动电源管理相关说明
6.5 小结
第7章 设备驱动之总线型驱动
7.1 内部集成电路总线(I2C)
7.1.1 I2C总线驱动需求
7.1.2 I2C总线驱动框架解析
7.1.3 TI芯片I2C总线驱动相关实现详解
7.1.4 I2C总线驱动电源管理相关说明
7.2 串行外设接口总线(SPI)
7.2.1 SPI总线驱动需求
7.2.2 SPI总线驱动框架解析
7.2.3 TI芯片SPI总线驱动相关实现详解
7.2.4 SPI总线驱动电源管理相关说明
7.3 多媒体卡(MMC)
7.3.1 MMC需求
7.3.2 MMC框架解析
7.3.3 TI芯片MMC相关实现详解
7.3.4 MMC电源管理相关说明
7.4 通用串行总线(USB)
7.4.1 USB总线驱动需求
7.4.2 USB总线驱动框架解析
7.4.3 TI芯片USB总线驱动相关实现详解
7.4.4 USB总线驱动电源管理相关说明
7.5 小结
第8章 设备驱动之SoC特殊驱动
8.1 SoC电源管理核心技术详解
8.1.1 SoC电源管理需求
8.1.2 TI芯片SoC电源管理相关实现详解
8.2 小结
参考文献