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.

[参考译文] PROCESSOR-SDK-AM62X:有什么可以参考的有关 SPI0的信息吗?

Guru**** 2455360 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1486588/processor-sdk-am62x-is-there-any-information-about-spi0-that-i-can-refer-to

器件型号:PROCESSOR-SDK-AM62X

工具与软件:

尊敬的 Expert:

客户将控制内核/驱动程序层的 SPI0以与 FPGA 通信。

这种通信需要非常实时。 写入 SPI 后、必须等待接收到的结果。

它需要每125us 执行一次读取和写入操作。

SPI0的设置将在哪里? 至于如何调用和使用它、是否有任何类似的相关示例可供参考?

谢谢

Daniel

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

    Daniel、您好!

    您尝试传输多少数据? 您能更详细地描述一下吗(可能是一个典型示例)
    如果延迟要求很严格、在 Linux 中进行 SPI 传输会比较困难。

    此致、Andreas

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

    您好、Andreas

    通信协议非常复杂。 客户在图表中展示了控制顺序、希望它更易于理解。

    客户知道它很难在 Linux 中实现。 在其现有产品中、它们也在 Linux 驱动程序中实现。

    为了实现这一目的、客户直接控制 CPU 中与 SPI 相关的寄存器。 程序代码的以下部分

    这在 Cavium CN7020 1GHz 中实现:

    您能看到我通过消息发送给您的图文件中的控制顺序吗?

    谢谢

    Daniel

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

    Daniel、您好!

    您能在我通过消息发送给您的图文件中看到控制顺序吗?

    我得到了文件、它非常详细且易于理解、谢谢。

    我需要花一些时间消化所有内容、但最简单的方法可能是创建概念验证、以真正尝试其工作效果。 从屏幕截图上可以看出、您可能已经有 Linux 代码/驱动程序?

    从较高层次看、存在两个潜在的挑战:

    有效 SPI 吞吐量

    您说 CPU <-> FPGA 之间的 SPI 速度限制为12MHz、但如果需要、似乎应该可以提高速度、因为客户控制通信的两端、不是吗?

    该文档还说明了无法使用 DMA 模式。 如果您在我们无 DMA 模式的当前 SDK 中使用 AM62'x SPI 模块、则传输期间会存在"字节间隙"、从而降低您的有效吞吐量。 通常、客户可以提高 SPI 速度来解决此问题、或使用 DMA。 请注意、这些间隙的长度取决于您配置的 SPI 时钟频率(较高频率->较短间隙)。

    下面是有关 DMA 如何帮助减少这些"字节间隙"的一些信息和示例: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1356551/faq-am6x-optimizing-spi-transfer-inter-byte-gaps-using-the-dma-in-linux

    实时行为

    似乎每125us 一次的循环传输就有许多硬实时要求、包括多字节发送/处理/接收活动。 一般来说、对于常规 Linux 而言、严格的硬标题很难满足、因为在这种情况下、中断和任务切换延迟可能有数百种。 两个可能的选择...

    1. 使用 Linux RT (我们也为 AM62提供)可以最大程度地减少系统导致的延迟到我们几十个方面、从而显著改善这   一领域、请参阅 software-dl.ti.com/.../RT_Linux_Performance_Guide。html 这一项可能已经足够、也可能还不足以满足您的需求。

    2. 另一种选择是使用基于 RTOS 的方法并使用专用通信任务来驱动该 SPI 通信。 这可以通过使用管理程序方法(Jailhouse、我们也为 AM62提供此方法)在 A53内核上分离开来以执行 SPI 通信工作来实现。 也可以使用器件上的一个专用实时内核("PRU")或 M4 MCU 内核。

    此致、Andreas