网站建设服装项目设计书,大型网站如何优化,著名软件开发公司,深圳小程序网站开发公司1 PCIE配置空间
1.1 软件如何知道PCIE设备是Swith#xff0c;RC还是EP#xff1f;
–软件通过读取寄存器信息。
PCIE配置空间• PCIE寄存器#xff1b;--PCIE配置协议规定必须实现的空间。--PCIE存在两种配置空间Type0/Type1;--Type0配置空间EP设备必须实现#xff1b;-…1 PCIE配置空间
1.1 软件如何知道PCIE设备是SwithRC还是EP
–软件通过读取寄存器信息。
PCIE配置空间• PCIE寄存器--PCIE配置协议规定必须实现的空间。--PCIE存在两种配置空间Type0/Type1;--Type0配置空间EP设备必须实现--Type1配置空间RC/Switch设备必须实现• PCIE配置空间具体大小 --1DW 4Byte 图– • PCIE每个设备都有4KB的配置空间• 4KB配置空间前64DW(即256Byte)与PCI兼容保持一致• 960DW为PCIE扩展寄存器空间PCIE兼容配置空间 1.PCIE兼容配置空间包含PCI Header--64Byte空间和Capability--192Byte空间2.Header空间分为Type0和Type1两种Type0配置空间EP设备必须实现Type1配置空间RC/Switch设备必须实现3.Capalitiy空间--以链表形式组织的扩展功能寄存器能力寄存器空间实现可选择实现的寄存器但如下寄存器必须实现PCIE Capality; Power Management; MSI/MSIX4.能力寄存器采用链表结构c//这是从0到大进行排列Offset 0x40: | Cap ID (8b) | Next Ptr (8b) | Cap Data (16b) | → 4字节对齐Offset 0x80: | Cap ID (8b) | Next Ptr (8b) | Cap Data (16b) | → 下一个对齐项ID:表示能力A寄存器的类型什么寄存器;Pointer表示下一个能力寄存器地址B_addr;其图如下所示例如PCIE能力寄存器中的PM/MSI寄存器软件如何进行获取呢 Steps:1.系统软件发起addr0x34的读请求访问PCI header Capalibity point寄存器(起始是固定的)2.系统软件读取addr0x34 pointer0x40返回结果表示PCIE下一组寄存器的地址为0x403.系统软件发起addr0x40的读请求4.系统软件读取addr0x40 data{0x50,0x1}ID:0x1表示类型为PM寄存器Next Pointer: 0x50表示访问下一个能力寄存器的地址位0x50;5.系统软件再进一步读取0x50地址读取数据{0x70,0x05};ID:0x5表示位MS寄存器NextPointer: 0x70表示访问下一个能力寄存器的地址为0x706.通过查手册可知取addr:0x54,0x55,0x56分别配置MSI中断地址和数据0x54表示Message lower address; 0x58: Message upper address;0xC0表示Message data;步骤图如下 小结链表是单链表结构就是软件的数据结构只能进行便来访问不能通过index索引来访问