《linux设备驱动开发详解》插图汇总

目录

说明:

第一章 linux设备驱动概述及开发环境构建

图1.1 无操作系统时硬件、 设备驱动和应用软件的关系

图1.4 硬件、 驱动、 操作系统和应用程序的关系

 图1.5 Linux设备驱动与整个软硬件系统的关系

 第二章 驱动设计的硬件基础

图2.2 冯·诺依曼结构与哈佛结构​编辑

 图2.3 改进的哈佛结构

 图2.4 处理器分类

 图2.5 典型的类SRAM接口

 图2.6 双端口RAM

 图2.8 存储器分类

 图2.9 RS-232C串口电路原理

图2.10 I2C总线的开始位和停止位​编辑

 图2.11 I2C总线的时序

 图2.12 SPI主、 从硬件连接图

 图2.13 SPI总线的时序

 图2.14 USB的物理拓扑结构

图2.15 以太网接口的硬件电路原理​编辑

 图2.16 基于PCI总线的计算机系统逻辑示意图

图2.17 PCI配置空间​编辑

 图2.18 SDIO单模块读、 写的典型时序

 图2.19 典型的CPLD的单个宏单元结构

 图2.20 典型的CPLD整体架构

 图2.21 典型的FPGA内部结构

第三章 linux内核及内核编程

 图3.2 Linux 2.4和2.6以后的内核在抢占上的区别

 图3.3 Linux内核的组成部分与关系

 图3.4 Linux进程状态转换

 图3.5 Linux进程地址空间

 图3.6 Linux内存管理

 图3.7 Linux虚拟文件系统

 图3.8 Linux网络体系结构

图3.11 ARM上的Linux引导流程

第四章 linux内核模块

第五章 linux文件系统与设备文件

 图5.1 文件系统与设备驱动之间的关系

 图5.2 应用程序、 VFS与设备驱动

 图5.3 Linux设备模型

 第六章 字符设备驱动

图6.1 字符设备驱动的结构​编辑

 第七章 linux设备驱动中的并发控制

图7.1 并发执行单元的顺序执行​编辑

 图7.2 并发执行单元的交错执行

 图7.3 SMP体系结构

 图7.4 SMP下多核之间的竞态

 图7.5 SMP下核间与核内竞态

图7.8 自旋锁的使用实例 ​编辑

 第八章 linux设备驱动中的阻塞与非阻塞I/O

 图8.2 wait_queque_head_t、 wait_queque和task_struct之间的关系

 图8.3 多路复用select()

 第九章 linux设备驱动中的异步通知与异步I/O

图9.1 阻塞、 结合轮询的非阻塞I/O和异步通知的区别​编辑

 图9.2 异步通知中设备驱动和异步通知的交互

 图9.3 异步I/O的时序

 第十章 中断与时钟

图10.1 PIT定时器的工作原理​编辑

 图10.2 ARM多核处理器里的GIC

 图10.3 Linux中断处理机制

 图10.5 共享中断的处理

 第十一章 内存与I/O访问

图11.1 内存空间和I/O空间

 图11.2 内存中的转换表

 图11.3 ARM处理器的MMU

 图11.4 ARM CPU进行数据访问的流程

图11.5 用户空间与内核空间

 图11.6 32位x86系统Linux内核的地址空间

 图11.7 32位ARM系统中Linux内核的地址空间

 图11.8 DMA、 常规、 高端内存区域分布

图11.9 buddy算法​编辑

 图11.10 I/O端口的访问流程

 图11.11 I/O内存访问流程

图11.12 DMA目的地址与Cache对象没有重叠 ​编辑

 图11.13 DMA目的地址与Cache对象有重叠

 图11.14 MMU与IOMMU

第十二章 linux设备驱动的软件架构思想

图12.1 Linux设备和驱动的分离​编辑

 图12.2 Linux驱动的分层

 图12.3 将M∶ N耦合转化为M∶ 1∶ N耦合

 图12.4 Linux设备驱动的主机、 外设驱动分离

 图12.5 Linux设备驱动的分层

 图12.6 Linux内核输入子系统的框架

 图12.7 Linux RTC设备驱动的分层

图12.8 Linux帧缓冲设备驱动的程序结构​编辑

图12.9 Linux内核中tty的层次结构 ​编辑

 图12.10 tty设备发送、 接收数据流的流程

 图12.11 串口核心层

图12.12 tty驱动各层泛化​编辑

第十三章 linux块设备驱动

图13.1 调整块设备I/O操作的顺序​编辑

 图13.2 Linux块设备子系统

 图13.3 request_queue、 request、 bio和bio_vec

 图13.4 vmem_disk的I/O处理过程

图13.5 Linux MMC子系统​编辑

第十四章 网络设备驱动

图14.1 Linux网络设备驱动程序的体系结构​编辑

 图14.2 sk_buff的head、 data、 tail、 end指针

 图14.3 NAPI驱动程序各部分的调用关系

 第十五章  Linux I2C核心、 总线与设备驱动

图15.1 Linux的I2C体系结构​编辑

 图15.2 I2C驱动的各种数据结构的关系

 图15.3 master_xfer() 完成的时序

 图15.4 i2cdev_read() 和i2cdev_write() 函数对应的时序

 图15.5 RepStart模式

 第十六章 USB主机、 设备与Gadget驱动

图16.1 Linux USB驱动总体结构​编辑

 图16.2 USB设备、 配置、 接口和端点

 图16.4 URB处理流程

 第十七章  I2C、 SPI、 USB驱动架构类比

表17.1 I2C、 SPI、 USB驱动架构的类比​编辑

 图17.1 I2C主机和外设眼里的Linux世界

 第十八章  ARM Linux设备树

图18.1 设备树参考硬件结构图​编辑

 图18.2 设备树的全景视图

 第十九章  Linux电源管理的系统架构和驱动

图19.1 Linux内核电源管理的整体架构​编辑

 图19.2 CPUFreq、 系统负载、 策略与调频

图19.3 LADDER与MENU的区别​编辑

图19.4 Linux CPUIdle子系统的整体架构​编辑

 图19.6 Regulator树形结构

 图19.8 ARM的big.LITTLE架构

 图19.9 Linux的待机模式

 图19.10 Linux挂起到RAM流程

 第二十章  Linux芯片级移植及底层驱动

图20.1 周期节拍的系统节拍中断发生的时序​编辑

 图20.3 屏蔽中断的3个不同位置

 图20.4 SoC中断控制器的典型分布

 图20.5 中断级联与映射

 图20.6 一个典型的多核Linux启动过程

 图20.7 CPU0唤醒其他CPU过程

 图20.10 针对PGA封装的SoC的引脚分组

 第二十一章 Linux设备驱动的调试

图21.2 DDD运行机理


说明:

        该文档所有插图均来自宋宝华老师的《linux设备驱动开发详解——-基于最新的linux4.0内核》一书。截图出来仅做平时网页查阅学习。

第一章 linux设备驱动概述及开发环境构建

图1.1 无操作系统时硬件、 设备驱动和应用软件的关系

图1.4 硬件、 驱动、 操作系统和应用程序的关系

 图1.5 Linux设备驱动与整个软硬件系统的关系

 第二章 驱动设计的硬件基础

图2.2 冯·诺依曼结构与哈佛结构

 图2.3 改进的哈佛结构

 图2.4 处理器分类

 图2.5 典型的类SRAM接口

 图2.6 双端口RAM

 图2.8 存储器分类

 图2.9 RS-232C串口电路原理

图2.10 I2C总线的开始位和停止位

 图2.11 I2C总线的时序

 图2.12 SPI主、 从硬件连接图

 

 图2.13 SPI总线的时序

 图2.14 USB的物理拓扑结构

图2.15 以太

图2.15 以太网接口的硬件电路原理

 图2.16 基于PCI总线的计算机系统逻辑示意图

图2.17 PCI配置空间

 图2.18 SDIO单模块读、 写的典型时序

 图2.19 典型的CPLD的单个宏单元结构

 图2.20 典型的CPLD整体架构

 图2.21 典型的FPGA内部结构

第三章 linux内核及内核编程

 图3.2 Linux 2.4和2.6以后的内核在抢占上的区别

 图3.3 Linux内核的组成部分与关系

 图3.4 Linux进程状态转换

 图3.5 Linux进程地址空间

 图3.6 Linux内存管理

 图3.7 Linux虚拟文件系统

 图3.8 Linux网络体系结构

图3.11 ARM上的Linux引导流程

 

第四章 linux内核模块

第五章 linux文件系统与设备文件

 图5.1 文件系统与设备驱动之间的关系

 图5.2 应用程序、 VFS与设备驱动

 图5.3 Linux设备模型

 第六章 字符设备驱动

图6.1 字符设备驱动的结构

 第七章 linux设备驱动中的并发控制

图7.1 并发执行单元的顺序执行

 图7.2 并发执行单元的交错执行

 图7.3 SMP体系结构

 图7.4 SMP下多核之间的竞态

 图7.5 SMP下核间与核内竞态

图7.8 自旋锁的使用实例
 

 第八章 linux设备驱动中的阻塞与非阻塞I/O

 图8.2 wait_queque_head_t、 wait_queque和task_struct之间的关系

 图8.3 多路复用select()

 第九章 linux设备驱动中的异步通知与异步I/O

图9.1 阻塞、 结合轮询的非阻塞I/O和异步通知的区别

 图9.2 异步通知中设备驱动和异步通知的交互

 图9.3 异步I/O的时序

 第十章 中断与时钟

图10.1 PIT定时器的工作原理

 图10.2 ARM多核处理器里的GIC

 图10.3 Linux中断处理机制

 图10.5 共享中断的处理

 第十一章 内存与I/O访问

图11.1 内存空间和I/O空间

 图11.2 内存中的转换表

 图11.3 ARM处理器的MMU

 图11.4 ARM CPU进行数据访问的流程

图11.5 用户空间与内核空间

 图11.6 32位x86系统Linux内核的地址空间

 

 图11.7 32位ARM系统中Linux内核的地址空间

 图11.8 DMA、 常规、 高端内存区域分布

图11.9 buddy算法

 图11.10 I/O端口的访问流程

 

 图11.11 I/O内存访问流程

图11.12 DMA目的地址与Cache对象没有重叠
 

 图11.13 DMA目的地址与Cache对象有重叠

 图11.14 MMU与IOMMU

 

第十二章 linux设备驱动的软件架构思想

图12.1 Linux设备和驱动的分离

 图12.2 Linux驱动的分层

 图12.3 将M∶ N耦合转化为M∶ 1∶ N耦合

 图12.4 Linux设备驱动的主机、 外设驱动分离

 图12.5 Linux设备驱动的分层

 图12.6 Linux内核输入子系统的框架

 图12.7 Linux RTC设备驱动的分层

 

图12.8 Linux帧缓冲设备驱动的程序结构

图12.9 Linux内核中tty的层次结构
 

 图12.10 tty设备发送、 接收数据流的流程

 图12.11 串口核心层

图12.12 tty驱动各层泛化

第十三章 linux块设备驱动

图13.1 调整块设备I/O操作的顺序

 图13.2 Linux块设备子系统

 图13.3 request_queue、 request、 bio和bio_vec

 

 图13.4 vmem_disk的I/O处理过程

图13.5 Linux MMC子系统

第十四章 网络设备驱动

图14.1 Linux网络设备驱动程序的体系结构

 图14.2 sk_buff的head、 data、 tail、 end指针

 图14.3 NAPI驱动程序各部分的调用关系

 第十五章  Linux I2C核心、 总线与设备驱动

图15.1 Linux的I2C体系结构

 图15.2 I2C驱动的各种数据结构的关系

 图15.3 master_xfer() 完成的时序

 图15.4 i2cdev_read() 和i2cdev_write() 函数对应的时序

 

 图15.5 RepStart模式

 第十六章 USB主机、 设备与Gadget驱动

图16.1 Linux USB驱动总体结构

 图16.2 USB设备、 配置、 接口和端点

 

 图16.4 URB处理流程

 

 第十七章  I2C、 SPI、 USB驱动架构类比

表17.1 I2C、 SPI、 USB驱动架构的类比

 图17.1 I2C主机和外设眼里的Linux世界

 第十八章  ARM Linux设备树

图18.1 设备树参考硬件结构图

 图18.2 设备树的全景视图

 第十九章  Linux电源管理的系统架构和驱动

图19.1 Linux内核电源管理的整体架构

 图19.2 CPUFreq、 系统负载、 策略与调频

 

图19.3 LADDER与MENU的区别

 

 

图19.4 Linux CPUIdle子系统的整体架构

 图19.6 Regulator树形结构

 图19.8 ARM的big.LITTLE架构

 图19.9 Linux的待机模式

 图19.10 Linux挂起到RAM流程

 第二十章  Linux芯片级移植及底层驱动

图20.1 周期节拍的系统节拍中断发生的时序

 图20.2 NO_HZ的运行节拍

 图20.3 屏蔽中断的3个不同位置

 图20.4 SoC中断控制器的典型分布

 图20.5 中断级联与映射

 图20.6 一个典型的多核Linux启动过程

 图20.7 CPU0唤醒其他CPU过程

 图20.10 针对PGA封装的SoC的引脚分组

 第二十一章 Linux设备驱动的调试

图21.2 DDD运行机理

 

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值