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.

[参考译文] SK-AM62:需要 QoS 帮助来解决 A53 和 DMA 之间的 GPMC 争用

Guru**** 2416110 points
Other Parts Discussed in Thread: AM4376

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1511425/sk-am62-need-qos-help-with-gpmc-contention-between-a53s-and-dma

器件型号:SK-AM62
主题中讨论的其他器件:AM4376

工具/软件:

您好:

我同时使用四核 A53 CPU 和 BCDMA 通过 GPMC 总线读取/写入 ASIC。 我目前在 DMA 运行时看到 CPU 被延缓。  CPU 需要具有 ASIC 的最高优先级、而 DMA 可以在后台运行。   我认为需要设置 QoS 寄存器以提高 CPU 相对于 BCDMA 的优先级。  有人能告诉我要写入哪些寄存器以及要写入什么吗?

谢谢、

Victor

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

    你好、Victor、

    您能否确认您正在 A53 内核上运行哪种操作系统?

    A53 内核和 DMA 使用两个 GPMC。

    如果两个内核同时访问、您是如何处理这种情况的? 您是否在它们之间使用任何同步?

    此致、

    Anil.

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

    我在 A53 上运行 Linux。

    我期望 AM62 上的互连处理从 A53 和 DMA 发送到 GPMC 的流量。 我认为、相应地设置 QoS 会使 A53 具有比 DMA 更高的优先级

    当 CPU0 启动 DMA 传输时、不知道何时完成数据吸吮。  此外、CPU 1 至 CPU3 不知道是否正在进行 DMA 传输。  互斥锁 GPMC 相当困难。

    我们在 AM4376 中具有相同的功能。  但是、由于 ASIC 容量更高、AM62 上 GPMC 总线上的流量会显著增加。

    谢谢、

    Victor

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

    您好、Victor、

    如果内核和 DMA 访问同一 GPMC 总线、我们应该使用同步技术、无论是旋转锁定还是互斥技术。

    在 SOC 级别、AM62X 器件中的 GPMC 没有仲裁。

    如果不使用这些同步、建议在 SOC 级别不要使用具有 DMA 和内核的同一总线。

    无论如何、我会将您的问题发送给 Linux 专家、让我们看看他们可以提供什么反馈。

    此致、

    Anil.

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

    您好、Victor、

    请参阅 AM62x TRM(修订版 B)表 14-5“QoS、QoS 寄存器“。 A53 读取 QoS 寄存器的地址为 0x45d20500、其写入 QoS 寄存器为 0x45d20900。

    默认情况下在复位后、寄存器值为 0x7000、它将优先级设置为 7 — 最低。

    您能否尝试将两个寄存器设置为值 0x6000 以查看是否解决了 A53 访问 GPMC 不足的问题?

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

    您好:

    最后、我进行了足够的测试、以了解设置 QoS 寄存器不起作用。  我尝试了 0x6000、0x4000 和 0x0000。  我认为问题是、一旦 DMA 开始从 GPMC 总线读取数据、即使具有更高 QoS 读数的 CPU 正在等待、它也不会放弃它、直到它完成读取。

    我们正在尝试通过将 DMA 传输分解为较小的块来解决这个问题、这样便可以让 CPU 在 DMA 完成后进入并收回 GPMC 总线。

    感谢您的帮助、

    Victor

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

    您好、Victor、

    感谢您进行这些实验。 在接下来的两周我处于下班状态、当我回到办公室后、我将与我们的 SoC 设计人员交谈、看看您观察到的结果是否符合预期。  

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

    您好、Victor、

    当 CPU 和 DMA 同时访问 GPMC 时、您是否可以看到 DMA 访问阻止 CPU 的时间有多长?

    我谈到了我们的 SoC 设计、即使应用程序对 DMA 进行编程以传输更多数据、QoS 调度之间 DMA 传输的最大数据大小也可能为 320 字节。

    以下是 CPU 延迟估算的粗略数学计算:

    假设 FPGA 以 100MHz 运行、即每个周期 0.01us。 还假设 FPGA 数据总线宽度为 16 位。 320 字节将为 320*8/16 = 160 个周期、即 1.6us。 因此、如果 CPU 被几 usec 阻止、这是正常现象。 但如果您看到更长的延迟、则似乎有错误配置... 如果您看到我的数学计算完全关闭、请告诉我。

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

    另一个想法 — 内核中断上下文是否可能阻止 CPU 访问? 必须尝试使用中断亲和性来将 DMA 中断处理移动到 CPU0 以外的其他 CPU、以查看它是否改善 CPU 访问 GPMC?

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

    尊敬的 Bin:

    我有好消息和坏消息。

    好消息是、如果 CPU 只需要使用 GPMC 总线、我通过确定在下一次中断发生之前还剩多少时间来修复了这个问题。 根据时间、DMA 配置为限制要读取的 U16 数、以便 DMA 将在下一次中断之前完成。  

    坏消息是、如果我们向系统添加安全启动、DMA 将不起作用。  因此、如果我们使用 CPU 通过 GPMC 接口从 ASIC 读取数据、安全启动将运行良好。  但是、在启用安全启动的情况下使用 DMA 执行相同的功能行不通。  DMA 似乎无法通过 GPMC 访问我们的 ASIC 以读取数据。 希望需要设置一个位或一个寄存器来解决这个问题、然后您就能知道该位或寄存器是什么。

    谢谢、

    Victor

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

    您好、Victor、

    我不涉及安全启动、但通过安全启动、您是指现在您以不同方式签署启动映像还是将 FS 器件转换为 HS-SE?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bin:
    是的、我们签名了启动映像并转换为 HS-SE。  安全启动工作正常。  只是通过这种安全启动、DMA 无法通过 GPMC 访问我们的 ASIC。  不过、DMA 访问 SPI 控制器没有问题。
    您希望我针对此问题发布新帖子吗?
    谢谢、
    Victor。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想也许防火墙会阻止它。 请开始新的帖子、我将与我们的安全专家合作来解决这个问题。