【驱动】12.PCIe子系统
【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM
【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym
【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM
【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0
PCIE子系统
硬件原理
详见【硬件相关-接口协议】
应用编程
内核驱动
驱动框架
和USB一样,事先不知道什么设备,得读出来,有HOST驱动,和设备驱动
设备树中放HOST相关,HOST扫描出设备后,将设备放入虚拟总线,与有的驱动匹配
HOST驱动分析-地址映射
所谓Host
,就是PCIe控制器,它的驱动做什么?
- 解析设备树,根据设备树确定:寄存器地址、CPU空间地址、PCI空间地址、中断信息
- 记录资源:CPU空间地址、PCI空间地址
- 初始化PCIe控制器本身,建立CPU地址和PCI地址的映射
- 扫描识别当前PCIe控制器下面的PCIe设备
HOST驱动分析-设备枚举
HOST驱动分析-INTx中断
HOST驱动分析-MSI-X中断
总体框架
访问PCI/PCIe设备的流程
- PCI/PCIe设备的配置信息
- 主机读取设备配置信息、分配空间
- CPU地址空间和PCI/PCIe地址空间怎么转换?
- 主机像读写内存一样访问设备
面试介绍
从硬件原理、应用开发和内核驱动3个方面介绍Linux PCIe
-
首先是硬件原理
PCIe通过端点(Endpoint)和根端点(Root Complex)之间的通信,实现计算机与外部设备的连接。PCIe总线分为x1、x2、x4、x8、x16、x32等不同带宽的版本,同时支持多通道(多Lane)传输。
PCI设备可以简单地分为PCI Bridge和PCI Agent:
- PCI Bridge:桥,用来扩展PCI设备,必定有一个Root Bridge,下面还可以有其他Bridg
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)