PCIe协议学习

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

PCIE 3.0中使用的动态均衡概念
PCIE training
芯片中的数学——均衡器EQ和它在高速外部总线中的应用
PCI/PCIe基础——配置空间
PCIE各种包结构及常用资料汇总
开发者分享 | 使用 lspci 和 setpci 调试 PCIe 问题
PCI桥与PCI设备的配置空间

物理层

传输层

TLP

TLP报文,通常情况下Type[4:0]与Fmt[2:0]合起来定义具体的TLP事务类型,TC[2:0] Trafic Class 3bits, Byte1 Bit6:4, 总共定义了 8 个等级 Trafic Class,Traffic Class顾名思义可以理解为交通等级,控制报文传输优先级。
317
为了区分Requester与Completer之间的事务类型, PCIe Spec定义了一个事务描述块(Transaction Descriptor Fields)。下图红色区域合起来就称为一个事务描述块。Transaction ID包含了Request ID和Tag,内容有Request Device具体的位置(Bus/Device/Function)。主要是用于Requester发出事务的完成TLP回报。
318

Visual Channel

在接收端有一个缓存空间叫作 VC buffer, 其中 VC 代表的是 Virtual Channel,翻译过来就是虚拟通道。VC buffer 可以存放从发送端传过来的TLPs。接受端的可用 VC buffer 是以信用机制的方式告知发送端,在这里,信用积分代表接收端 VC buffer 的可用空间。接收端会通过发送 DLLPs(Data Link Layer Packets)来告知发送端 VC buffer的信用积分(也就是告知 VC buffer 可用空间),当缓存空间快满的时候,发送端会停止发送 TLP,以防 VC buffer 容量不足而造成发送端传输的数据被丢弃,从而避免要求发送端重新发送刚才发送的数据,最终达到更加有效利用网络带宽。
319

应用层

配置空间

pcie agent cfg space
pcie bridge cfg space

PCIe能力寄存器

类型有下面几种,

//include/uapi/linux/pci_regs.h
/* Capability lists */
#define PCI_CAP_LIST_ID   0 /* Capability ID */
#define  PCI_CAP_ID_PM    0x01 /* Power Management */
#define  PCI_CAP_ID_AGP   0x02 /* Accelerated Graphics Port */
#define  PCI_CAP_ID_VPD   0x03 /* Vital Product Data */
#define  PCI_CAP_ID_SLOTID  0x04 /* Slot Identification */
#define  PCI_CAP_ID_MSI   0x05 /* Message Signalled Interrupts */
#define  PCI_CAP_ID_CHSWP 0x06  /* CompactPCI HotSwap */
#define  PCI_CAP_ID_PCIX  0x07 /* PCI-X */
#define  PCI_CAP_ID_HT    0x08 /* HyperTransport */
#define  PCI_CAP_ID_VNDR  0x09 /* Vendor specific */
#define  PCI_CAP_ID_DBG   0x0A /* Debug port */
#define  PCI_CAP_ID_CCRC  0x0B /* CompactPCI Central Resource Control */
#define  PCI_CAP_ID_SHPC  0x0C /* PCI Standard Hot-Plug Controller */
#define  PCI_CAP_ID_SSVID 0x0D  /* Bridge subsystem vendor/device ID */
#define  PCI_CAP_ID_AGP3  0x0E /* AGP Target PCI-PCI bridge */
#define  PCI_CAP_ID_EXP   0x10 /* PCI Express */
#define  PCI_CAP_ID_MSIX  0x11 /* MSI-X */
#define  PCI_CAP_ID_AF    0x13 /* PCI Advanced Features */
#define PCI_CAP_LIST_NEXT 1 /*Next capability in the list */
#define PCI_CAP_FLAGS   2 /* Capability defined flags (16 bits) */
#define PCI_CAP_SIZEOF    4

热插拔

PCIE热插拔技术
NVMe盘暴力热插拔 学习记录
认识和使用热插拔的正确姿势
Linux2.6.10内核下PCIExpressNative热插拔框架的实现机制
Linux内核笔记之PCIe hotplug介绍及代码分析
对NVMe SSD热插拔时,我需要注意什么?
PCIe SSD之SFF-8639和备受关注的热插拔功能
PCIe扫盲——热插拔简要介绍
PCIE Hot Plug 一般流程
[PCIe]NVMe 热插拔过程以及常见问题(一)
PCIe rescan from kernel device driver
Reset a PCI Device in Linux
PCIe Hot Reset on Linux

smbus

smbus总线单片机c语言程序,SMBus总线单片机硬件接口
PCIE 硬件接口那点屁事
Intel Z370 - PCIe上的SMBus
SMBus总线概述

Windows可使用使用read write utility工具读写smbus,比如内存spd(a1地址)和pcie。

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值