linux查看pcie版本及速率_pcie pci

linux查看pcie版本及速率_pcie pciLinux内核PCIE原标题:Linux内核PCIE作者:小田BSP本文主要是整理PCIE的基础知识。一、PCI总线在PC时代,为了解决CPU主频和外部设备访问速度的问题,发展了几代I/O总线:1、第一代总线:ISA、EISA等2、第二代总线:PCI、PCI-

Linux内核PCIE   原标题:Linux内核PCIE   作者:小田BSP   本文主要是整理PCIE的基础知识。   
linux查看pcie版本及速率_pcie pci   一、PCI总线   在PC时代,为了解决CPU主频和外部设备访问速度的问题,发展了几代I/O总线:   1、第一代总线:ISA、EISA等   2、第二代总线:PCI、PCI-X等   3、第三代总线:PCIE、mPCIE、m.2等   PCI(Peripheral Component Interconnect),外部设备互联,Intel公司提出,主要功能是连接外部设备。PCI引脚如下:   
linux查看pcie版本及速率_pcie pci   PCI引脚   PCI总线特点如下:   1、PCI总线是并行总线,有32/64根地址线,地址和数据都是通过这32/64根地址线进行传输,分时复用   2、PCI总线上可同时挂载多个设备,设备分为主设备和从设备。主设备一般是主控芯片PCI控制器,需要负责PCI总线上的仲裁   3、PCI设备共享总线,通过片选引脚、地址范围、总线号、设备号、功能号等机制来确定当前和哪个设备通信。   4、PCI总线通信大致分为:配置阶段和地址访问阶段。   5、配置阶段:PCI总线控制器依次扫描连接在PCI总线上的所有设备,访问设备的配置空间,知道设备的类型、要申请的资源,然后给设备分配总线号、设备号、功能号、地址空间,并写进设备的配置空间。   6、地址访问阶段:在配置阶段,给每个PCI设备分配PCI地址范围,并写进设备寄存器,以后设备会监听地址线,当监听到地址线上传输的地址是自己的地址范围,就会处理。   7、PCI采用同步时序协议,信号线里有clk时钟线。   8、PCI有三个相互独立的物理地址空间:内存地址空间、I/O地址空间和配置空间。配置空间是PCI特有的一个物理空间,PCI设备支持即插即用。   9、PCI总线规范定义的配置空间总长度为256字节,前64字节的配置空间称为配置头,对于所有的设备都一样。配置头的主要功能是用来识别设备、定义主机访问PCI卡的访问方式(I/O访问或者存储器访问,还有中断信息),其余192字节称为本地配置空间(设备有关区),主要定义卡上局部总线的特性、本地空间基地址和范围等。   
linux查看pcie版本及速率_pcie pci   其中:   1)Vendor ID:厂商ID,FFFFh是一个非法厂商ID,根据它判断PCI设备是否存在。   2)Device ID:设备ID,某厂商生产设备的ID,驱动根据Vendor ID和Device ID找对应驱动程序。   3)Base Address0 ~ 5:简称BAR寄存器,保存PCI设备使用的PCI总线域的基地址。PCI设备复位后,BAR寄存器存放的是设备需要使用的地址空间大小、类型(I/O或MEM),如果是MEM则是否可预取(Prefectchable是否为1)   
linux查看pcie版本及速率_pcie pci   4)IRQ Line:IRQ 编号,支持管理24个中断。   5)IRQ Pin:中断引脚,PCI有4个中断引脚,该寄存器表示该设备连接的是哪个引脚。   PCI枚举过程:尝试所有的BUS/DEV/FUNC组合,判断厂商ID是否为FFFFh。   访问配置空间方法:   通过访问0xCF8h/0xCFCh端口实现。   1)0xCF8h:CONFIG_ADDRESS,PCI配置空间地址端口。CONFIG_ADDRESS寄存器格式:   31: Enable位   23~16:总线号   15~11:设备号   10~8:功能号   7~2:配置空间寄存器编号   1~0:0   2)0xCFCh:CONFIG_DATA,PCI配置空间数据端口。   二、PCIE介绍   PCIE(PCI Express)是在PCI的基础上发展而来,是目前PC和嵌入式系统中最常用的高速总线,PCIE与PCI是软件向后兼容,PCI的系统软件可以用在PCIe系统中。   PCIE采用的是树形拓扑结构,体系架构包括:root complex,switch、bridge和endpoint等类型的PCIE设备组成。PCIE总线拓扑结构如下:   
linux查看pcie版本及速率_pcie pci   Root Complex:根复合体,简称RC,CPU和PCIE之间的接口。RC位于PCIE倒立拓扑的根,并代表CPU与系统的其余部分进行通信。PCIE端口在配置空间中被标记为根端口。   Bridge:桥提供了与其他总线(如:PCI或PCI-X)的接口,允许旧的PCI或PCI-X卡插入新系统。反向桥接允许一个新的PCIE卡插入一个旧的PCI系统。   Switch:提供扩展或聚合能力,允许更多的设备连接到一个PCIE端口。充当包路由器,根据地址或其他路由信息识别给定包需要走哪条路径。是一种PCIE转PCIE的桥。   Endpoint:PCIE总线系统拓扑结构中的最末端,一般作为总线操作的发起者(initiator)或终结者(Completes)。Endpoint只能接受来自上级拓扑的数据包或向上级拓扑发送数据包。   PCIe插槽集中在PCIex1/x4/x8/x16四种上。   1)PCIex1插槽的长度是最短的,数据针脚14个。主要用途:独立网卡、独立声卡和USB3.0/3.1扩展卡。   2)PCIex4和x8插槽一样,现在多数做成PCIex16插槽,或扩展为M.2接口,用于安装M.2 SSD、M.2无线网卡。   3)PCIex8,为了兼容性PCIex8插槽通常做成PCIex16插槽的形式,但数据针脚只有一半是有效的。   4)PCIex16插槽主要用于显卡以及RAID阵列卡,向下兼容x1/x4/x8级别的设备。   在PCI总线中,所有需要提交中断请求的设备,必须能通过INTx引脚提交中断请求,MSI机制是一个可选机制。而PCIE总线中,PCIE设备必须支持MSI或MSI-X中断请求机制,而可以不支持INTx中断消息。   在PCIE总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提交中断请求。   三、PCIE地址空间   PCIE有三种主要的地址空间:memory-space,IO space和configuration space。   1)Memory space:数据存储内存空间(refetchable 和 Non-Prefetchable Memory Space)   2)IO Space:用于访问IO设备的内部寄存器/存储,已被MMIO机制代替,访问方式和Memory相同,且也分(refetchable 和 Non- Prefetchable Memory range)   3)Configuration Space:配置空间,通过bar寄存器控制Memory space映射   
linux查看pcie版本及速率_pcie pci   四、PCI和PCIE差异   1) 颜色   PCI接口通常是白色,PCIE接口一般用其他颜色。   2) 长度   PCIE接口要比PCI接口长。   3) 兼容性   PCIE在软件层面上兼容目前的PCI技术和设备。   4) 速度   PCI的工作频率:33MHZ和66MHZ,最大吞吐率264MB/s(66MHZ*32BIT/8)。   PCI-X的工作频率:66MHZ/100MHZ和133MHZ,最大吞吐率1064MB/s(133MHZ*64BIT/8)。   5) 传输方式   PCI是并行数据传输,一次传输4/8字节,半双工。   PCIE是串行数据传输,全双工。   6) 硬件   PCI信号是普通电平。   PCIE信号是差分电平。   7) 链路   PCI是总线的连接方式。   PCIE是点对点的连接方式。   8) 编码方式   PCIE gen1和gen2采用8bit/10bit编码方式,gen3以后采用128b/130b的编码方式。   9) Inbound和outbound   PCIE设备和系统内存相互访问时,outbound是指CPU到设备方向;inbound是指device到RC(CPU端)方向。CPU读写RC端的寄存器时,属于偏上系统的范围,不属于inbound或outbound。   10)PCI配置空间   PCI设备拥有256B的配置空间,PCIE还提供了另外4KB的扩展。256B的配置空间中前64B是规范的,其他是各厂商自己定义的。   PCI设备地址:   10.1)总线号:厂家ID   10.2)设备号:设备ID   10.3)功能号:设备类   11) PCIE配置空间   PCIE一共支持256条bus,32个dev和8个fun,和PCI相同。   PCIE设备发展向前兼容PCI,每个设备的配置空间前256B是PCI空间,后(4K-256)B的空间是PCIE控制空间。   Linux用同一套驱动代码处理PCI和PCIE驱动,只需要在配置、传输等底层操作去区分两种总线协议。   五、PCIE驱动   以RK3568 PCIE RC驱动为例。   
linux查看pcie版本及速率_pcie pci   1)compatible = “rockchip,rk3568-pcie”, “snps,dw-pcie”   PCIE接口使用的是RC模式;EP模式   2)bus-range = <0x10 0x1f>   PCI bus地址范围从0x10到0x1f。   3)interrupts   中断号和中断名称。对应RK3568 中断号如下(-32):   
linux查看pcie版本及速率_pcie pci   4)interrupt-map-mask 和 interrupt-map   interrupt-map-mask 和 interrupt-map:标准PCI属性值,对应INTA ~ INTD(legacy 中断)   5)num-lanes = <1>   PCIE设备所使用的lane数量,默认不需要调整,软件自动探测并关闭不需要的lane以节省功耗。   6)max-link-speed = <3>   PCIE带宽版本,1表示Gen1;2表示Gen2;3表示Gen3,无需配置。   7)reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>   PCIE接口的perst#复位信号,插槽和焊贴设备,都需要。必须配置。   8)msi-map = <0x1000 &its 0x1000 0x1000>   PCIE设备映射到MSI控制器,格式和介绍如下:   9)phys = <&pcie30phy>   使用的PCIE PHY。   10)power-domains = <&power RK3568_PD_PIPE>   PCIE电源域   11)reg 和 reg-names   PCIE-dbi(映射总线上设备的配置空间地址)和PCIE-apb(PCIE控制器地址)寄存器地址和范围   12)rangs   功能:设备将CPU域地址映射到PCIE域地址   格式:   <映射类型(第1个字段) PCIe基地址(第2~3字段)CPU域基地址(第4~5字段)映射区域大小(第6~7字段)>   0x:表示IO空间   0x:表示MEM空间 (non-prefetchable)   13)vpcie3v3-supply = <&pcie30_3v3>   PCIE外设的3V3供电。PCIE phy使用1.8V或0.9V供电。   Linux系统查看PCI设备的命令:lspci,PCI逻辑地址:XX:YY:Z分别表示总线号:设备号:功能号。一个PCI域能容纳256个总线,每个总线可支持32个PCI设备,每个PCI设备可容纳8个PCI功能。   lspci -t:显示树状结构   lspci -x:显示配置空间前64字节的内容   lspci -s:指定PCI设备   标题可跳转   1、图解 IPSec   2、为什么魂斗罗只有128KB却可以实现那么长的剧情?   3、eMMC之分区管理、总线协议和工作模式(太硬了)返回搜狐,查看更多   责任编辑:

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/55934.html

(0)
上一篇 2024年 8月 31日 下午9:56
下一篇 2024年 8月 31日 下午10:04

相关推荐

关注微信