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-AM64B:AM64x PRU

Guru**** 2468610 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1457788/sk-am64b-am64x-pru

器件型号:SK-AM64B
主题中讨论的其他器件:SysConfig

工具与软件:

大家好、我想将 R5内核的 PRU 硬件 UART 与 DMA 结合使用。  

当前 UART 可以很好地处理轮询、但关于如何使其使用 DMA 的信息很少。 我该怎么做?  

谢谢你

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

    尊敬的 Murat:

    您如何配置 PRU UART? 您能不能就此提供一些见解吗?

    您在使用哪种 SDK?

    此致、

    Vaibhav

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

    您好、Vaibhav。 我正在从 R5-0-0内核 FIFO 模式配置 PRU UART。 但我想让它可以使用 R5-0-0内核的 DMA。 PDMA 中没有提到 PRU UART 支持、因此我不明白应该怎么做。  

    但在 PRU UART 中、提到有两个 DMA 事件。 我不知道该怎么说。" (接收事件(URXEVT)和发送事件(UTXEVT))  


    我使用 SDK 10.0.0.20

    谢谢你

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

    尊敬的 Murat:

    感谢您确认 SDK 版本。 请允许我有时检查您的问题、并在此处输入我的答案。

    此致、

    Vaibhav

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

    尊敬的 Murat:

    我已将该线程重新分配给正确的专家。 您可以期待收到他们的反馈。

    此致、

    Vaibhav

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

    谢谢你、Vaibhav。 我要回答。

    Murat

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

    尊敬的 Murat:

    根据我的理解、您已经实现了从 R5F0_0内核控制 PRU 硬件 UART 的方案。 接下来、您必须配置为通过 PRU UART DMA/Tx 事件触发 Rx。 如果我的理解有误、请纠正我。

    我们的 DMA 专家将于本周离开办公室。 请预计响应时间会延迟。

    此致、

    Nitika

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

    你好、Ntika

    是的、我的情况就是这样。  

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

    您好、Nitika/Murat、

    客户可以使用 PRU DMA、而不能使用来自 R5F 内核的主域 DMA。

    因为主域 DMA 通道不分配给 PRU UART、而 主域 DMA 通道只分配给 MAIN UART。

    此致、

    Anil。

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

    您好 Anil

    我理解。 是否有使用 PRU DMA 的示例?

    谢谢你

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

    这里提到了哪种 DMA?

    6.4.8.3.6 PRU_ICSSG UART DMA 事件支持在 FIFO 模式下、PRU_ICSSG UART0生成以下两个 DMA 事件:•接收事件(URXEVT):使用 FIFO 控制 UART_INT_FIFO[7-6] IIR_FIFOEN 位字段设置接收器 FIFO 的触发电平(1、4、8或14个字符)。 每次达到触发电平或发生接收器超时时、PRU_ICSSG UART0都会向 DMA 控制器发送一个接收事件。 作为响应、DMA 控制器通过接收器缓冲寄存器 UART_RBR_TBR[7-0] RBR_DATA 从接收器 FIFO 读取数据。 请注意、如果接收器 FIFO 顶部的数据是错误的、即使已达到触发电平、接收事件也不会有效。 •发送事件(UTXEVT):当发送器 FIFO 为空时(此时发送器 FIFO 中的最后一个字节已复制到发送器移位寄存器中)、PRU_ICSSG UART0会向 DMA 控制器发送 UTXEVT 信号。 作为响应、DMA 控制器通过发送器保持寄存器(THR) UART_RBR_TBR[7-0] RBR_DATA 来重新填充发送器 FIFO。 当使用电源和仿真管理寄存器(UART_PWR)中的[14]UTRST 位使 PRU_ICSSG UART0退出复位时、UTXEVT 信号也会发送到 DMA 控制器。 DMA 通道中的活动可以与这些事件同步。 在非 FIFO 模式下、PRU_ICSSG UART0不会生成 DMA 事件。 任何与其中任一事件同步的 DMA 通道都必须在生成 PRU_ICSSG UART0事件时启用。 否则、DMA 通道将错过事件、除非 PRU_ICSSG UART0生成新事件、否则不会进行数据传输。

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


    此外、在 PRU UART 中有一个字"EDMA"、在整个10000页 TRM 中仅使用3次。 其中一次称为嵌入式 DMA、而在 AM335中、EDMA 表示增强型 DMA。

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

    您好、我提出这个问题已经17天了、我的问题尚未解决。 我觉得《技术参考手册》不是很详细 请告诉我一种将 PRU DMA 用于 PRU UART 的方法。

    谢谢你

    Murat

    PRU UART 的 ın açıklaması PRU UART 的说明。
    检测到的语言:英语
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Murat:

    对延迟响应深表歉意。 我将介绍到目前为止我们与开发团队进行的讨论:

    1.  TRM 的6.4.8.3.6节提到的 DMA 与 SoC DMA 类似。  我们目前还没有此实现的参考代码、但如果事件 是 映射 SoC DMA 控制器的、那么您可能可以使用此方法。 但是、目前我们没有任何支持这一点的示例。

    2. 另一种方法是 XFR2DMA。 此 DMA 使用 PSIL 线程通过 SoC PSI 开关/PSI 总线进行数据交换。
    我们在 SDK 中没有示例、但 PRU ICSSG 以太网团队目前在其固件中使用此 DMA 来进行以太网数据包交换。

    我将会获得有关该实施的更多信息并与您联系。

    此致、

    Nitika

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

    你好、妮蒂卡

    如果您的 PRU ICSSG 以太网团队可以解释一下创建卓越的 XFR2DMA 的过程。

    谢谢你

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

    您好、我 ping 此线程是因为我的问题尚未解决。

    此致

    Murat

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

    尊敬的 Murat:

    谢谢您的 Ping。  我误解了以太网团队的实施、我们使用基于 XFR2VBUS 硬件加速器的存储器复制、而不是 xfr2dma。

    请查找有关 XFR2VBUS 使用的以下步骤:

    您必须 将下面的 PRU 内部中断信号映射到主机0或1。 利用这一配置、您将能够轮询 R31寄存器第30/31位以获取 UART UART/Tx Rx 中断。

    在 SysConfig 中、在 PRU (ICSS)> INTC Internal signals Mapping 下添加2个实例 事件信号4和5 到主机0/1。 这将添加  PRUICSS_IntcInitData 将结构更改为 ti_drivers_config.c

    2.在代码中调用  PRUICSS_intcInit 以初始化中断控制器。 请参阅 此处

    3.接下来、您必须为具有以下实施方式的 PRU 内核编写固件:

    -轮询 R31寄存器的第30/31位以等待中断。

    -如果发生中断,则跳转至事件处理程序并清除中断状态(请参阅 此处的第187-188行)

    -使用 XFR2VBUS 硬件加速器根据中断从 FIFO 读取到内存位置,反之亦然。 您可以参阅 TRM - 6.4.6.3.1.6 XFR2VBUS 编程模型和 此 E2E 中的编程指南部分。

    此致、

    Nitika