《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 无操作系统时硬件、 设备驱动和应用软件的关系

《linux设备驱动开发详解》插图汇总_第1张图片

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

《linux设备驱动开发详解》插图汇总_第2张图片

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

《linux设备驱动开发详解》插图汇总_第3张图片

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

图2.2 冯·诺依曼结构与哈佛结构
《linux设备驱动开发详解》插图汇总_第4张图片

 图2.3 改进的哈佛结构

《linux设备驱动开发详解》插图汇总_第5张图片

 图2.4 处理器分类

《linux设备驱动开发详解》插图汇总_第6张图片

 图2.5 典型的类SRAM接口

《linux设备驱动开发详解》插图汇总_第7张图片

 图2.6 双端口RAM

《linux设备驱动开发详解》插图汇总_第8张图片

 图2.8 存储器分类

《linux设备驱动开发详解》插图汇总_第9张图片

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

《linux设备驱动开发详解》插图汇总_第10张图片

图2.10 I2C总线的开始位和停止位
《linux设备驱动开发详解》插图汇总_第11张图片

 图2.11 I2C总线的时序

《linux设备驱动开发详解》插图汇总_第12张图片

 图2.12 SPI主、 从硬件连接图

 《linux设备驱动开发详解》插图汇总_第13张图片

 图2.13 SPI总线的时序

《linux设备驱动开发详解》插图汇总_第14张图片

 图2.14 USB的物理拓扑结构

《linux设备驱动开发详解》插图汇总_第15张图片图2.15 以太

图2.15 以太网接口的硬件电路原理
《linux设备驱动开发详解》插图汇总_第16张图片

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

《linux设备驱动开发详解》插图汇总_第17张图片

图2.17 PCI配置空间
《linux设备驱动开发详解》插图汇总_第18张图片

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

《linux设备驱动开发详解》插图汇总_第19张图片

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

《linux设备驱动开发详解》插图汇总_第20张图片

 图2.20 典型的CPLD整体架构

《linux设备驱动开发详解》插图汇总_第21张图片

 图2.21 典型的FPGA内部结构

《linux设备驱动开发详解》插图汇总_第22张图片

第三章 linux内核及内核编程

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

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

《linux设备驱动开发详解》插图汇总_第23张图片

 图3.4 Linux进程状态转换

《linux设备驱动开发详解》插图汇总_第24张图片

 图3.5 Linux进程地址空间

《linux设备驱动开发详解》插图汇总_第25张图片

 图3.6 Linux内存管理

《linux设备驱动开发详解》插图汇总_第26张图片

 图3.7 Linux虚拟文件系统

《linux设备驱动开发详解》插图汇总_第27张图片

 图3.8 Linux网络体系结构

《linux设备驱动开发详解》插图汇总_第28张图片

图3.11 ARM上的Linux引导流程

《linux设备驱动开发详解》插图汇总_第29张图片

 

第四章 linux内核模块

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

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

《linux设备驱动开发详解》插图汇总_第30张图片

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

《linux设备驱动开发详解》插图汇总_第31张图片

 图5.3 Linux设备模型

《linux设备驱动开发详解》插图汇总_第32张图片

 第六章 字符设备驱动

图6.1 字符设备驱动的结构
《linux设备驱动开发详解》插图汇总_第33张图片

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

图7.1 并发执行单元的顺序执行
《linux设备驱动开发详解》插图汇总_第34张图片

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

《linux设备驱动开发详解》插图汇总_第35张图片

 图7.3 SMP体系结构

《linux设备驱动开发详解》插图汇总_第36张图片

 图7.4 SMP下多核之间的竞态

《linux设备驱动开发详解》插图汇总_第37张图片

 图7.5 SMP下核间与核内竞态

《linux设备驱动开发详解》插图汇总_第38张图片

图7.8 自旋锁的使用实例
 《linux设备驱动开发详解》插图汇总_第39张图片

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

《linux设备驱动开发详解》插图汇总_第40张图片

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

《linux设备驱动开发详解》插图汇总_第41张图片

 图8.3 多路复用select()

《linux设备驱动开发详解》插图汇总_第42张图片

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

图9.1 阻塞、 结合轮询的非阻塞I/O和异步通知的区别
《linux设备驱动开发详解》插图汇总_第43张图片

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

《linux设备驱动开发详解》插图汇总_第44张图片

 图9.3 异步I/O的时序

《linux设备驱动开发详解》插图汇总_第45张图片

 第十章 中断与时钟

图10.1 PIT定时器的工作原理
《linux设备驱动开发详解》插图汇总_第46张图片

 图10.2 ARM多核处理器里的GIC

《linux设备驱动开发详解》插图汇总_第47张图片

 图10.3 Linux中断处理机制

《linux设备驱动开发详解》插图汇总_第48张图片

 图10.5 共享中断的处理

《linux设备驱动开发详解》插图汇总_第49张图片

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

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

《linux设备驱动开发详解》插图汇总_第50张图片

 图11.2 内存中的转换表

《linux设备驱动开发详解》插图汇总_第51张图片

 图11.3 ARM处理器的MMU

《linux设备驱动开发详解》插图汇总_第52张图片

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

《linux设备驱动开发详解》插图汇总_第53张图片

图11.5 用户空间与内核空间

《linux设备驱动开发详解》插图汇总_第54张图片

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

《linux设备驱动开发详解》插图汇总_第55张图片

 

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

《linux设备驱动开发详解》插图汇总_第56张图片

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

《linux设备驱动开发详解》插图汇总_第57张图片

图11.9 buddy算法
《linux设备驱动开发详解》插图汇总_第58张图片

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

 《linux设备驱动开发详解》插图汇总_第59张图片

 图11.11 I/O内存访问流程

《linux设备驱动开发详解》插图汇总_第60张图片

图11.12 DMA目的地址与Cache对象没有重叠
 《linux设备驱动开发详解》插图汇总_第61张图片

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

《linux设备驱动开发详解》插图汇总_第62张图片

 图11.14 MMU与IOMMU

《linux设备驱动开发详解》插图汇总_第63张图片

 

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

图12.1 Linux设备和驱动的分离

 图12.2 Linux驱动的分层

《linux设备驱动开发详解》插图汇总_第64张图片

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

《linux设备驱动开发详解》插图汇总_第65张图片

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

《linux设备驱动开发详解》插图汇总_第66张图片

 图12.5 Linux设备驱动的分层

《linux设备驱动开发详解》插图汇总_第67张图片

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

《linux设备驱动开发详解》插图汇总_第68张图片

 图12.7 Linux RTC设备驱动的分层

《linux设备驱动开发详解》插图汇总_第69张图片 

图12.8 Linux帧缓冲设备驱动的程序结构
《linux设备驱动开发详解》插图汇总_第70张图片

图12.9 Linux内核中tty的层次结构
 《linux设备驱动开发详解》插图汇总_第71张图片

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

《linux设备驱动开发详解》插图汇总_第72张图片

 图12.11 串口核心层

《linux设备驱动开发详解》插图汇总_第73张图片

图12.12 tty驱动各层泛化
《linux设备驱动开发详解》插图汇总_第74张图片

第十三章 linux块设备驱动

图13.1 调整块设备I/O操作的顺序
《linux设备驱动开发详解》插图汇总_第75张图片

 图13.2 Linux块设备子系统

《linux设备驱动开发详解》插图汇总_第76张图片

 图13.3 request_queue、 request、 bio和bio_vec

 《linux设备驱动开发详解》插图汇总_第77张图片

 图13.4 vmem_disk的I/O处理过程

《linux设备驱动开发详解》插图汇总_第78张图片

图13.5 Linux MMC子系统
《linux设备驱动开发详解》插图汇总_第79张图片

第十四章 网络设备驱动

图14.1 Linux网络设备驱动程序的体系结构
《linux设备驱动开发详解》插图汇总_第80张图片

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

《linux设备驱动开发详解》插图汇总_第81张图片

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

《linux设备驱动开发详解》插图汇总_第82张图片

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

图15.1 Linux的I2C体系结构
《linux设备驱动开发详解》插图汇总_第83张图片

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

《linux设备驱动开发详解》插图汇总_第84张图片

 图15.3 master_xfer() 完成的时序

《linux设备驱动开发详解》插图汇总_第85张图片

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

 

 图15.5 RepStart模式

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

图16.1 Linux USB驱动总体结构
《linux设备驱动开发详解》插图汇总_第86张图片

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

 《linux设备驱动开发详解》插图汇总_第87张图片

 图16.4 URB处理流程

 《linux设备驱动开发详解》插图汇总_第88张图片

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

表17.1 I2C、 SPI、 USB驱动架构的类比
《linux设备驱动开发详解》插图汇总_第89张图片

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

《linux设备驱动开发详解》插图汇总_第90张图片

 第十八章  ARM Linux设备树

图18.1 设备树参考硬件结构图
《linux设备驱动开发详解》插图汇总_第91张图片

 图18.2 设备树的全景视图

《linux设备驱动开发详解》插图汇总_第92张图片

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

图19.1 Linux内核电源管理的整体架构
《linux设备驱动开发详解》插图汇总_第93张图片

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

《linux设备驱动开发详解》插图汇总_第94张图片

 

图19.3 LADDER与MENU的区别
《linux设备驱动开发详解》插图汇总_第95张图片

 

 

图19.4 Linux CPUIdle子系统的整体架构
《linux设备驱动开发详解》插图汇总_第96张图片

 图19.6 Regulator树形结构

《linux设备驱动开发详解》插图汇总_第97张图片

 图19.8 ARM的big.LITTLE架构

《linux设备驱动开发详解》插图汇总_第98张图片

 图19.9 Linux的待机模式

《linux设备驱动开发详解》插图汇总_第99张图片

 图19.10 Linux挂起到RAM流程

《linux设备驱动开发详解》插图汇总_第100张图片

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

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

 图20.2 NO_HZ的运行节拍

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

《linux设备驱动开发详解》插图汇总_第101张图片

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

《linux设备驱动开发详解》插图汇总_第102张图片

 图20.5 中断级联与映射

《linux设备驱动开发详解》插图汇总_第103张图片

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

《linux设备驱动开发详解》插图汇总_第104张图片

 图20.7 CPU0唤醒其他CPU过程

《linux设备驱动开发详解》插图汇总_第105张图片

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

《linux设备驱动开发详解》插图汇总_第106张图片

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

图21.2 DDD运行机理

《linux设备驱动开发详解》插图汇总_第107张图片

 

你可能感兴趣的:(Linux驱动编程,驱动开发,linux,网络协议)