Home
little Joy Personal
Cancel

PCIe 高级错误机制AER

在已有的PCIe错误报告机制上(之前文章介绍的),AER还支持以下特性: 在登记实际发生的错误类型时,有更好的粒度(Granularity,可以理解为区分度或者精确度) 区分各种不可校正错误的严重程度 支持登记包头中的错误 为Root通过中断报告接收到的错误消息提供了标准化的控制机制 可以定位错误源在PCIe体系结构中的位置 能够独立地屏蔽某种(或者多种)错误类型的...

PCIe 错误机制

PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误。 其中PERR#主要对应的是普通数据奇偶校检错误(Parity Error),而SERR#主要对应的是系统错误(System Error)。具体如下: 普通的数据奇偶校检错误——通过PERR#报告 在多任务事务(Multi-task Transaction,又称为Special Cycles)时的奇偶校检错误—...

PCIe TLP包路由

当包(Packet)到达Switch的输入端口(Ingress Port)时,端口首先会检查包是否有错误, 然后根据包的路由(Routing)信息(路由信息在TLP包的Head中),来做出以下三种处理方式之一: 接受这个包,并自己(Switch)使用它(Internal Use); 将其通过响应的输出端口(Egress Port)转发到下一级Endpoint(或者下一级Swi...

PCIe Base & Limit寄存器详解

PCIe中的桥设备(Switch和Root中的P2P)又是如何判断某一请求(Request)是否属于自己或者自己的分支下的设备的呢? 这实际上是通过Type1型配置空间Header中的Base和Limit寄存器来实现的 Base和Limit寄存器分别确定了其所有分支下设备(The device that live beneath this bridge)的地址的起始和结束地址。 (Ty...

PCIe基地址寄存器(BAR)

基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示: 其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR。这就意味着,对于Endpoint来说, 最多可以拥有6个不同的地址空间。但是实际应用中基本上不会用到6个,通常1~3个BAR比较常见。 主要注意的是,如果某个设备的BAR没有被全部使用,则对应的BAR...

PCIe Memory and IO 地址空间

早期的PC中,所有的IO设备(除了存储设备之外的设备)的内部存储或者寄存器都只能通过IO地址空间进行访问。 但是这种方式局限性很大,而且效率低,于是乎,软件开发者和硬件厂商都不能忍了……然后一种新的东西就出来了——MMIO。 MMIO,即Memory Mapped IO,也就是说把这些IO设备中的内部存储和寄存器都映射到统一的存储地址空间(Memory Address Space)中。 但...

查看linux内核版本信息

记录几个查看linux内核版本信息的方式。 shell命令 uname -r # uname -a cat /proc/version 启动打印 启动日志最开始几行,linux内核版本号是最早打印的信息之一,启动后也可用过dmesg回看。 sudo dmesg | grep version ## 显示内容同 cat /proc/version 内核源码树 嵌入式环境,有...

PCIe 配置空间读写机制

需要特别注意的是,PCIe的Spec中明确规定只有Root有权限发起配置请求(Originate Configuration Requests), 也就是说PCIe系统里面的其他设备是不允许去配置其他设备的配置空间的,即peer-to-peer的配置请求是不允许的。 并且配置请求的路由(Routing)方式只能是采用BDF(Bus,Device,Function)。 处理器一般不能够直接发...

PCIe BDF和配置空间

每一个PCIe设备可以只有一个功能(Function),即Fun0。也可以拥有最多8个功能,即多功能设备(Multi-Fun)。 不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间(Configuration Space)与之对应。 一个例子,一个设备具有两个功能,一个作为显卡功能,一个作为网卡功能。 需要注意的是,每个设备必须要有功能0(Fun0),其他的7个功能(...

PCIe Memory Read Example

这里以MRd包为例: 如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息: 32位(或者64位)的Memory地址, 事务类型(Transaction Type)(Mrd,Mwr,IORd,IOWr,Cfg,Message等), 数据量(以DW为单位)(这里是MRd,所以有数据量), TC(Traffic Class,即优先级), 字节使能(Byte Enable)和...