PCIe ECAM机制访问PCIE的配置空间

news/2025/1/15 22:39:44/

1.PCIe ECAM机制

PCI Express Enhanced Configuration Access Mechanism (ECAM)是访问PCIe配置空间的一种机制。是将PCIe的配置空间映射到MEM空间,使用MEM访问其配置空间的一种实现。可参考NCB-PCI_Express_Base_5.0r1.0-2019-05-22.pdf的第7.2.2小节。
其地址映射如下图所示:
在这里插入图片描述
根据上图,可以根据一个PCIe设备的BDF得到其配置空间偏移地址:

#define PCI_ECAM_ADDRESS(Bus,Device,Function,Offset) \(((Offset) & 0xfff) | (((Function) & 0x07) << 12) | (((Device) & 0x1f) << 15) | (((Bus) & 0xff) << 20))

2.PCIe ECAM基地址

查看一台主机是否支持PCIe ECAM机制,可通过以下命令查看:

  • 2.1.对于x86主机:
sudo cat /proc/iomem | grep MMCONFIG

若支持ECAM,则会出现类似以下字段:

f8000000 - fbffffff : PCI MMCONFIG 0000 [bus 00-3f]

其中0xf8000000就是该主机下PCIe ECAM的基地址。加上PCI_ECAM_ADDRESS(bus, device, func, reg),就得到了指定PCIe设备的物理地址,可以使用此地址直接访问其配置空间。

  • 2.2.对于ARM64主机:
sudo cat /proc/iomem | grep ECAM

若支持ECAM,则会出现以下字段:

40000000-4fffffff : PCI ECAM

其中0x40000000就是该主机下PCIe ECAM的基地址。加上PCI_ECAM_ADDRESS(bus, device, func, reg),就得到了指定PCIe设备的物理地址,可以使用此地址直接访问其配置空间。

3.linux下使用devmem2工具读取PCIe配置空间的寄存器。

  • 3.1 devmem2读数据用法

    devmem2 address [ type ]
    

    参数说明:
    address : 物理地址
    type :要访问的数据类型 : [b]yte, [h]alfword, [w]ord

  • 3.2.devmem2写数据用法

    devmem2 address type data
    

    参数说明:
    address : 物理地址
    type :要访问的数据类型 : [b]yte, [h]alfword, [w]ord
    data :想要写入的数据

  • 3.3.devmem2读写BDF=1:0:0的PCIe的配值空间,假设ECAM_BASE = 0x40000000
    3.3.1. 读取venderid和deviceid,reg =0x00:
    offset = PCI_ECAM_ADDRESS(1, 0, 0, 0) = 0x100000

    sudo devmem2 0x40100000 w
    

    3.3.2. 读取BAR0,reg =0x10:
    offset = PCI_ECAM_ADDRESS(1, 0, 0, 0x10) = 0x100010

    sudo devmem2 0x40100010 w
    

    3.3.3. Enable Expansion ROM,reg =0x30:
    offset = PCI_ECAM_ADDRESS(1, 0, 0, 0x30) = 0x100030
    获取Expansion ROM基地址:

    sudo devmem2 0x40100030 w 
    

    假设读出的值为0x60800000。
    以下命令使能Expansion ROM

    sudo devmem2 0x40100030 w 0x60800001
    

4.linux内核中对ECAM的实现

代码路径:drivers\pci\ecam.c


http://www.ppmy.cn/news/513000.html

相关文章

PCIe设备的配置过程

PCIe设备的配置过程 文章目录 PCIe设备的配置过程参考资料&#xff1a;一、 PCIe系统硬件结构二、 PCIe系统软件层次三、事务层TLP格式3.1 Posted和Non-Posted3.2 TLP通用格式3.3 TLP头部 四. 配置与RC直连的设备4.1 怎么访问直连的设备4.2 配置EendPoint 五、 配置示例5.1 必备…

无法识别ICA文件

问题&#xff1a;无法识别ICA文件怎么办&#xff1f; 场景&#xff1a;该问题常发生在Windows系统&#xff0c;由于软件关联异常&#xff0c;无法打开云桌面的ICA文件&#xff0c;导致无法调用云桌面客户端。 【方案1】导入注册表项 步骤一、点击下载 ICA文件打开方式修复 …

G-PCC配置文件的生成

TMC13的scripts文件夹中的gen-cfg.sh文件可以将cfg文件里面的yaml文件转为cfg文件&#xff0c;这样在测试各个例子的时候就可以方便地进行配置了 步骤&#xff1a; 1. 下载git 和strawberryperl&#xff1a; git下载地址&#xff1a;https://git-scm.com/downloads strawbe…

ICC 安装说明

1、加载iso 2、install.sh 选择zwt.lic 3设置环境变量 source /opt/intel/composer_xe_2015.0.090/bin/compilervars.sh intel64 4、测试 icc -v

icc色彩配置文件_什么是色彩配置文件?

icc色彩配置文件 Color profiles define the colors we capture with our cameras and see on our displays. They control what colors are used and help provide consistency between devices. 颜色配置文件定义了我们用相机捕获的颜色并在显示屏上看到。 它们控制使用什么颜…

计算机主机光盘盒在哪,怎么在电脑上看碟,详细教您电脑怎么放光盘

随着科技的进步&#xff0c;VCD、DVD几乎被淘汰&#xff0c;现在人们都喜欢用电脑放光盘&#xff0c;当然体积小&#xff0c;携带方便的笔记本电脑更是方光盘的首选&#xff0c;那么怎么用笔记本电脑播放光盘呢&#xff1f;下面&#xff0c;小编就来跟大家分享电脑上看碟的操作…

1 计算机主机里面都有些什么东西,电脑主机内部硬件组成详解,一台完整主机内部大解密(高清图文)...

我们平常都会怎么使用电脑,但知道一台完整电脑的内部硬件组成的人不多, 电脑内部硬组成其实不神秘,下面我们解剖电脑内部各配件看看就会知道了。 1. 主机的整体框架主机箱是电脑主机的整体框架,里面有CPU及散热风扇、主板、内存、电源、硬盘、显卡、网卡和光驱等组成主要配…

计算机主机箱外部介绍图,电脑的主机结构是怎样的 电脑主机结构图【图文】...

在电脑已经普及的今天&#xff0c;基本上每家每户都有电脑了&#xff0c;大家用它来看电影&#xff0c;搜索资料啊&#xff0c;上网啊等等。在我们日常的娱乐方式中&#xff0c;电脑也是我们的娱乐项目之一&#xff0c;至少还是好多人用它看电影和追剧的。但是机器会有故障的时…