0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

访问PCI/PCIe设备的流程

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-30 09:44 次阅读

访问 PCI/PCIe 设备的流程

PCI/PCIe 设备的配置信息

PCI/PCIe 设备上有配置空间(配置寄存器),用来表明自己"需要多大的地址空间"。

注意,这是 PCI/PCIe 地址空间。

主机读取设备配置信息、分配空间

主机上的程序访问 PCI/PCIe 设备,读出配置信息。

分配地址空间:注意,分配的是 PCI/PCIe 地址空间。

把地址空间首地址写入设备。

CPU 地址空间和 PCI/PCIe 地址空间怎么转换?

假设 CPU 发出的 addr_cpu,是用来访问 PCI 设备的,转换关系为:

addr_pci  = addr_cpu + offset

在 PCI/PCIe 控制器中,有某个寄存器,有来保存 offset 值。

主机像读写内存一样访问设备

示例代码如下:

volatile unsigned int *p = addr_cpu;
unsigned int val;
*p = val;  /* 写, 硬件会把addr_cpu转换为addr_pci去写PCI/PCIe设备 */
val = *p;  /* 读, 硬件会把addr_cpu转换为addr_pci去读PCI/PCIe设备 */

| 本文参考 百问网-韦东山驱动大全 |

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCI
    PCI
    +关注

    关注

    4

    文章

    608

    浏览量

    129590
  • 设备
    +关注

    关注

    2

    文章

    4172

    浏览量

    69265
  • PCIe
    +关注

    关注

    13

    文章

    1083

    浏览量

    80846
收藏 人收藏

    评论

    相关推荐

    windows xp无法正常扫描和安装驱动PCIE设备

    (version 10.20)扫描设备,发现设备地址0x4(对应PCI control register)为0x0,意味着总线访问未使能。无法正常访
    发表于 12-13 11:30

    关于dm8168的PRCM使能pcie寄存器区域,需要PRCM配置打开pcie,为什么配置之后还是不能访问pcie的寄存器?

    的配置方式如下:1、RM_DEFAULT_RSTCTRL:0x7f2、CM_DEFAULT_PCI_CLKSTCTRL: 0x23、CM_DEFAULT_PCI_CLKCTRL: 0x2按照以上配置之后还是不能访问
    发表于 05-25 08:39

    能分享PCIPCIe的PCB原理图吗

    有大佬能分享一下PCI总线转PCIePCIePCI)的PCB原理图吗?
    发表于 01-25 11:38

    怎么实现PC机的软件对PCI设备访问

    在设计和使用PCI设备时,经常要在PC机的软件中访问和控制硬件设备,但Windows操作系统(包括Windows 95/98、Windows NT、Windows 2000)为了保证系
    发表于 09-17 08:12

    深入PCIPCIe之一:硬件篇 精选资料推荐

    硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PC...
    发表于 07-29 07:25

    无法访问s32v234板中的PCIe是怎么回事?

    尝试访问两块 s32v234 板上的 PCIe 设备,但未成功。在 U-Boot 中,pci 命令(例如枚举)会收到“pci_bus_to_
    发表于 03-31 06:40

    LX2160A访问64位PCIe BAR时出现异步SError怎么解决?

    我在访问 PCIe BAR 空间时遇到 Async Serror。很奇怪。能帮忙看看是什么原因吗?谢谢。 〜#dmesg | grep pcie [0.000000] 内核命令行:console
    发表于 04-03 06:06

    Arm PCI配置空间访问固件接口1.0BET1平台设计文档

    本文档为调用方(如操作系统或系统管理程序)定义了访问PCI配置空间的标准固件接口。 该接口可用作增强配置访问机制(ECAM)硬件机制的替代方案,该机制在PCIe规范[1]中进行了定义。
    发表于 08-11 07:55

    简谈PCIe的软件配置方式

    的软件配置方式可以沿用PCI的配置方式。当然,由于特殊性,也有自身独特的配置方式。所以PCIe模块的访问方式有如下两种:       1、  PCI 兼容的配置方式。       2、
    的头像 发表于 07-27 19:16 3408次阅读
    简谈<b class='flag-5'>PCIe</b>的软件配置方式

    PCIe设备在一个系统中是如何发现与访问

    只能访问一次。我们一般称这个过程为PCIe设备枚举。枚举过程中host通过配置读事物包来获取下游设备的信息,通过配置写事物包对下游设备进行设
    的头像 发表于 03-11 15:28 1.8w次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>设备</b>在一个系统中是如何发现与<b class='flag-5'>访问</b>的

    PCIePCI之间的区别

    PCIe(Peripheral Component Interconnect Express)是继ISA和PCI总线之后的第三代I/O总线。一般翻译为周边设备高速连接标准。
    的头像 发表于 07-03 16:20 1.6w次阅读

    聊聊PCIe设备在系统如何发现与访问

    硬盘是大家都很熟悉的设备,一路走来,从HDD到SSD,从SATA到NVMe,作为NVMe SSD的前端接口,PCIe再次进入我们的视野。作为x86体系关键的一环,PCIe标准历经PCI
    的头像 发表于 12-09 10:04 3408次阅读

    PCI/PCIe最容易访问设备是什么

    最容易访问设备是什么 是内存! 要读写内存,知道它的地址就可以: volatile unsigned int *p = 某个地址; unsigned int val;*p = val
    的头像 发表于 07-30 09:35 397次阅读
    <b class='flag-5'>PCI</b>/<b class='flag-5'>PCIe</b>最容易<b class='flag-5'>访问</b>的<b class='flag-5'>设备</b>是什么

    理解PCIPCIE的关键

    理解 PCIPCIE 的关键 地址空间转换 PCI 接口速览 PCI 是并行口,引脚多。其中 Address 和 Data 复用 PIN 脚,因此引脚命名为 AD。 随着速率的提
    的头像 发表于 07-30 09:44 757次阅读
    理解<b class='flag-5'>PCI</b>和<b class='flag-5'>PCIE</b>的关键

    PCIe相关问题解答

    CPU 发起的,访问PCIe设备配置空间的数据流。这种数据流主要是BIOS/Linux PCIe driver 对设备进行初始化、资源分配时
    的头像 发表于 09-15 09:39 974次阅读
    <b class='flag-5'>PCIe</b>相关问题解答