工具/软件:
您好、
在最近的测试中、我发现当 PCIe 未成功安装时、未调用 MVL 驱动程序中的探头功能。 因此,我们怀疑可能有与 MVL 芯片的连接,我们目前正在
与 MVL 制造商的通信。
如果您有任何新的建议、请告诉我。
此致、
Yang
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好、
在最近的测试中、我发现当 PCIe 未成功安装时、未调用 MVL 驱动程序中的探头功能。 因此,我们怀疑可能有与 MVL 芯片的连接,我们目前正在
与 MVL 制造商的通信。
如果您有任何新的建议、请告诉我。
此致、
Yang
尊敬的 Yang:
感谢您创建新的 E2E 主题。 最后一个线程、我已分配给我们的硬件团队、看看他们是否可以做出响应、但看起来他们没有看过。 我会尝试向他们发送消息、看看他们是否也可以响应这个新主题。
在软件方面、任何 PCIe 设备驱动程序都将使用从 通用 标准 PCIe 空间获得的供应商 ID (VID) 和设备 ID (DID) 来确定要使用哪个设备驱动程序。 如果在启动设备时有时出现 PCIe 问题、但并非始终出现、则可能是 硬件问题(不过,这种情况非常少见)。
但是、与制造商进行检查是一个很好的步骤。
此致、
Takuma
您好、
添加补丁后、我们确保在不识别 PCIe 器件的情况下它不会进入 init 函数、以避免内核错误问题。 不过、
链路接通后、问题仍然出现。 您能帮我们看一下吗? 在禁止核查过程中似乎出现了冻结。
e2e.ti.com/.../PCIE_2D00_Kernel-Panic.txt
e2e.ti.com/.../PCIE_5F00_normal.txt
下面是补丁:
此致、
Yang
尊敬的 Yang:
调用栈中的最后一个重要函数是 pci_generic_config_read。 由于它是在 BAR 初始化期间发生的、我猜它正在尝试读取 BAR 寄存器。 如果读取 PCIe 器件发生在不应访问的某个位置(例如,PCIe 器件未就绪、读取到 PCIe 器件的内存,或某些无效的内存位置)、则总线错误可能会触发您看到的 SError 响应。 由于在上一个线程中您看到链路断开日志、我认为 PCIe 器件在条形码初始化期间突然被禁用。 这是因为,我不确定。
在一个稍微不同的主题中、您 提到的问题出现了 1/20 次、但是否所有板上都出现了此速率? 还是仅 1 块板显示了该问题?
此致、
Takuma
您好、
在一个稍微不同的主题上、您 提到的问题是看到了 1/20 次的、但是否所有板上都看到了这一速率? 还是只有一个显示此问题的板?
在多个电路板上进行测试时会出现相同的问题、且概率非常接近。
我在论坛上发现了一个类似的问题。 我使用了修改后的文章,但仍然未能解决的问题。
此致、
Yang
尊敬的 Yang:
PCIe 中的内核严重问题应已修复或掩蔽。 目前、我的测试不会重现问题。
解决方法是什么?
至于 安装失败的原因、我不确定。 我曾尝试联系我们的硬件团队、看看他们是否可以从硬件的角度发表一些评论、但到目前为止、没有评论。
为了给您一些尝试的想法、下面是 PCI-SIG 规范的屏幕截图、其中显示了初始上电的时序:
您 可以 尝试:
通常、100ms 应该足以让 PERST 置为无效时间。 我们在驱动器中的时序很少出现问题。 但是,如果你是出于想法,你可以尝试上面的实验。
此致、
Takuma
您好、
一般来说、100ms 应该足以让 PERST 置为无效时间。 我们在驱动器中的时序很少出现问题。 但是,如果你是出于想法,你可以尝试上面的实验。 [/报价]谢谢你。 我将尝试看看在这些天是否有不同的现象。
修复方法是什么?我找到了关于内核恐慌问题的前一篇文章:
添加了以下两个补丁:
此致、
Yang
[/quote]
尊敬的 Yang:
好的、明白。 这些补丁适用于勘误表 i2086、其中 SoC 假定从 PCIe 器件收到 UR(不支持的请求)响应时存在不可恢复的总线错误。 UR 响应始终是为 PCIe 交换机(可以连接多个 PCIe 设备的交换机,不要与网络交换机混淆)或具有多个但少于 6 个功能的多功能设备创建的。 对于普通网卡、通常不会出现此问题。
但是、如果权变措施有效并且 PCIe 设备得到了正确枚举、则很可能是您的设备出现了勘误表 i2086。
此致、
Takuma
尊敬的 Yang:
是的、可以扫描 PCIe 总线。 不过、它是否工作取决于所连接的 PCIe 设备是否支持热插拔。
如果需要移除 PCIe 设备、 在总线 0、设备 0、函数 0 上移除 PCIe 设备的示例将是 echo 1 >/sys/bus/pci/devices/0000 \:00\:00.0/remove
此致、
Takuma
尊敬的 Yang:
在您的电路板上可能很难做到、但是否可以捕获一些眼图?
由于问题很少出现、而忽略总线错误的补丁会改善观察到的行为、而设置到 Gen1 速度会使无法安装 PCIe 的问题消失、这些都是可能与信号完整性相关的行为。 具体来说、总线错误可能是由因信号完整性问题而导致的格式错误的数据包引起 的 、这可能会产生 UR 响应、而 Gen1 速度会放宽一些信号要求。 获得眼图后、您 可以参考 PCI-SIG 的“PCI Express 卡机电规范修订版 3.0“、该规范 包含 PCIe 标准的定义、指明了每个不同 PCIe Gen 速度的眼图应该是什么样的。
此致、
Takuma