PCIe采用串行连接方式,并使用数据报文(TLP)的形式进行数据传输。
1.1 报文类型PCIe的传输事务按内容类型分可以分为Memory读写、IO读写、配置读写和消息,体现在TLP报文中则比较细节,有存储器读、写请求,配置读、写请求,完成报文,消息报文等等。
1.2 报文的构建数据报文发送时在核心层中产生,经过设备的事务层、数据链路层和物理层,最终发送出去;接收时则相反。
实际上一个完整的TLP包由多个字段组成,并且这些字段分别由三个层次各自构建,最后经过物理层形成最终的TLP。
TLP根据其类型不同,Data段的宽度是不一样的,但是Header段的低32bit字段都是一样的
2.1 Header的低32bitType和Fmt
TC
该字段表示当前TLP的传送类型。
PCIe定义了8种传送类型,分别是TC0~TC7,值越大优先级越高,默认为0(优先级最低),PCIe设备通过调整发出的TLP的TC字段,可以调整TLP使用的VC从而调整TLP的优先级。在初始化的时候,PCIe驱动程序会为每一种类型的包分配好合适的TC值(优先级)。
该字段可能与与PCIe的QoS有关,如果PCIe驱动程序没有找到PCIe Extended Capability Space,则认为该设备只有一个VC,即VC0。此时再为每一个TLP分配不同的TC值,显然是没有意义的。因此会默认采用TC0/VC0组合,即不支持QoS功能。
大多EP设备只含有一个VC0,某些实时性要求较高的EP中,含有可以设置TC字段的寄存器(存在于设备的扩展配置空间中);而通常处理器的系统的RC仅支持一个VC通路,此时EP使用不同TC传输的意义不大
- status
地址路由
根据报文的地址来决定方向,适用于Memory读写和IO读写ID路由
根据根据报文中的Target ID与自身的Device ID判断是否访问自己,适用于配置读写,完成报文



