【驱动】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子系统

硬件原理

详见【硬件相关-接口协议】

应用编程

内核驱动

驱动框架

alt

和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%内容,订阅专栏后可继续查看/也可单篇购买

【嵌入式八股】嵌入式Linux 文章被收录于专栏

查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务