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.

[参考译文] TMS320C6655:FPGA 通过 PCIe 错误将数据推送到 C6655本地 L2 SRAM。

Guru**** 2602875 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648548/tms320c6655-fpga-push-data-to-c6655-local-l2-sram-via-pcie-error

器件型号:TMS320C6655

大家好、

客户使用 FPGA 将数据推送到本地 L2 SRAM 地址0x800000~0x800FFFFF。  

当运行大约半小时时、可能会发生一些错误。  

FPGA 每50us 发送一次数据、DSP 每次都检查数据。 有时、DSP 会发现有少数数据未更新。 大多数数据已由 FPGA 进行更新。

但是、如果 FPGA 将数据推送到 MSMC 存储器、 则0xC000000~0xC1FFFFF。 一切似乎都好。

附加的是 PCIe 初始化代码。 请对此提供帮助。

谢谢!

BR、
丹尼

e2e.ti.com/.../1185.initdsp.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知 RTOS 团队。 他们的反馈将直接发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    丹尼

    该代码不是 TI Processor SDK RTOS PCIe 示例类型、许多函数实现缺失。 总的来说、它看起来是正确的、问题是 L2与 MSMC、这不是您设置 PCIe 的方式。

    一些问题:
    1) 1) FPGA 将数据推送到 DSP。 这是 FPGA 写入? 涉及到 EDMA 还是像 CPU 写入一样?
    2) 2) DSP 如何知道数据到达? 是否有任何中断机制? 例如、FPGA 在入栈后向 DSP 发送了传统或 MSI 中断?
    3) 3)您刚刚看到数据不完整但未损坏、对吧?
    4) 4)数据的大小是多少? 如果更长地更改 FPGA 推送间隔或使推送的数据更短、是否有帮助?
    5) 5)设置中是否启用或禁用了 PCIe 宽松顺序? '在 RC 模式下、用户可以通过将 DEV_STAT_CTRL 寄存器中的 RELAXD 字段清零来禁用宽松排序功能。 RC 也可以清除
    将 TLPCFG 寄存器中的 RELAXD 字段更改为0、以禁用所有传出 TLP 的重新排序请求"

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Lding、

    1、FPGA 通过 PCIe 总线将数据发送到 C6655 LL2存储器、C6655仅配置 PCIe 模块、无需额外的 EDMA。
    2、FPGA 将通过 PCIe 向 LL2发送数据后向 c6655发送 GPIO 中断。 C6655将检查中断功能中的数据。 这可以保持正确的顺序。
    3、错误数据保留旧数据。 可能只有128个字节。
    4,FPGA 每50us (640*4字节)发送一次数据,发送 LL2地址和长度为128字节对齐。
    5、无 DEV_STAT_CTRL 操作。
    谢谢!

    BR、
    丹尼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我最初以为客户使用 PCIe 中断来发出数据到达的信号。 PCIe 中断可能出现在 PCIe 写入之前、但由于它们使用 GPIO 中断、情况并非如此。

    问题仍然看起来像 PCIe 写入在 L2中的速度比在 MSMC 中的速度慢。 在 DSP 端、是否存在仅检测部分数据被写入的机制、以便再次停止 FPGA 写入? 我想了解一下、如果您稍后检查此 L2区域、您会看到正确的数据(在 GPIO 中断之前到达很晚)还是数据永远不会传入?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Eric:

    FPGA 向 L2发送数据序列由 GPIO 中断保持。  我们  不知道是否存在 “任何机制只检测部分数据被写入以便再次停止 FPGA 写入” 。 PCIe IP 可能可以做到这一点?

    回答您的问题。 发生错误数据时、正确的数据将永远不会出现。

    我让客户测试:

    1、代码在 MSMC 上运行、L2仅用于 PCIe 接收。 此问题仍在一小时内发生。

    2、他们将数据发送周期从50us 更改为200us、此问题仍然存在。  测试6小时后出现问题。 这似乎 可以降低发生问题的可能性。

    BR、
    丹尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    从未出现过的数据令人困惑。 在代码 L1D、L1P 中、L2高速缓存均被禁用、这不是高速缓存问题。 FPGA 将数据写入 DSP、DSP 的入站转换确定数据的到达位置。 在从 FPGA 发送的每个数据块之间、DSP 是否在运行时重新配置了 PCIe 入站转换? 如果 DSP 上的缓冲器是固定的?

    在 PCIe 用户指南2.16.2.2 PCI Express 基线错误处理和2.16.2.3 PCI Express 高级错误报告中、它们是否能够启用这些错误并检查是否报告了任何错误?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Eric:

    在从 FPGA 发送的每个数据块之间、DSP 是否在运行时重新配置了 PCIe 入站转换?

    如果 DSP 上的缓冲器是固定的?

    是的

    在 PCIe 用户指南2.16.2.2 PCI Express 基线错误处理和2.16.2.3 PCI Express 高级错误报告中、它们是否能够启用这些错误并检查是否报告了任何错误?

    请提供更详细的信息吗? 或者哪个寄存器对这个问题的调试有用? 我可以捕获它。 谢谢!

    BR、
    丹尼