遇到的问题 PCIE link不稳定 配置空间读写正常,Memory mapping空间读写异常 缘由 之对PCIE的认识直停留在概念的阶段,只知道是个高速通讯协议,主要用于板内、板间的高速BUS。正好公司近在调试个PowerPC平台的PCIE BUS的BSP。需要些PCIE的硬件、软件知识。下面通过解决实际问题过程的方法来进步理解PCIE总线协议。但也仅于工程应用(实际产品中调试、应用)层面。 具体解决过程 PCIE 物理层link 不稳定 启动u-boot后,可以看到PCIE link status信息log u-boot下的pcie link status 从log上分析:系统启动了3个PCIE controller,PCIE 号为:0.0.0 2.0.0 4.0.0。 三个数字的具体含义为:0.0.0 :Bus Number Device Number Function Number。 这三个Host Bridge 下面分别挂了个EP设备,PCIE 号为:1.0.0 、3.0.0 、5.0.0。 正常看到这些PCIE bridge 和EP说明PCIE 读PCIE的配置空间是正确的,PCIE在physical 的link状态是OK的。 可以使用pci header + PCIE号的方式查看Bridge和EP的Config 信息。 pci config space 若出现读取配置信息不稳定的情况,则说明PCIE link 不稳定。需要进步排查硬件,软件辅助查看link status的方法是查看PCIE Host Bridge的link status的寄存器值。PCIE 规范里有个LTSSM(Link Training and Status State Machine),各种status的code规范里都有定义。 这个LTSSM在PCIE Extend Config Space里面。在P3041中的offset为0x404。 可以使用命令:pci display.b 0.0.0 404查看LTSSM状态。 正常情况下的输出: LTSSM PCIE 初始化完成后会进入L0状态。异常状态见PCIE link 异常log。 物理层link 不稳定,怀疑以下原因: - 高速串行信号质量问题 - Serdes电源问题 - 时钟问题 相关产品:PCIE2.0 /3.0 验证 调试和一致性测试解决方案 更新时间:2024/4/23 11:37:33 标签:PCIE2.0 验证调试 一致性测试解决方案 |