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-AM335X:PRU 使用问题

Guru**** 2587365 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630504/processor-sdk-am335x-pru-usage-questions

器件型号:PROCESSOR-SDK-AM335X

您好!

我正在学习 AM335x 技术 参考手册 、我特别想使用 Linux 中的 PRU 单元、因为我需要根据不同的实时事件(GPIO 状态变化和 UART 或 SPI)执行不同的任务。

例如:

GPIOxx 输入状态变化→处理中断并从 Linux 执行任务。

UART0 Rx 缓冲器已满→处理中断并从 Linux 执行任务。

从第225页我读出 PRU-ICSS 可以处理各种中断(如果我不是错的话、可以处理 GPIO、UART 和 SPI) 、在以下链接 中、PRU Linux API 指南示例代码 我们有一个简短的演示、展示了如何使用 Linux 中的 PRU。 代码将二进制文件 PRU_example.bin 加载到 PRU 中、因此等待中断。

我有几个问题:

1)假设我需要单独处理 GPIO 和 UART (或 SPI)中断。  我是否需要一个程序和一个二进制 PRU 文件(例如,PRU_example.bin)来处理每个中断?

2)如何使用 PRU 的 SPI? 我不明白 AM335x 技术参考的第4章中需要重点关注的正确部分是什么。

提前感谢您。

Simon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是否有关于此请求的更新信息?

    谢谢你。

    Simon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的时间。 此人因公出差、将于下周中旬回到办公室。 我会向他们发送一条提醒、提醒他们在回来时查看这一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Biser、

    有没有关于我的请求的新闻?

    提前感谢您。

    此致、

    Simon

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

    您引用的 API 基于旧版 Linux 驱动程序、TI 不再支持该 API。

    当前支持的用于将固件加载到 PRU 的 Linux 驱动程序是 RemoteProc 驱动程序。 以下是该驱动程序的说明: processors.wiki.ti.com/.../PRU-ICSS_Remoteproc_and_RPMsg
    下面是快速入门指南、其中介绍了如何使用 RemoteProc 驱动程序运行 RPMsg 示例: processors.wiki.ti.com/.../RPMsg_Quick_Start_Guide

    该快速入门指南中的 RPMsg 示例举例说明了如何使用 PRU 固件的资源表头文件、以便 RemoteProc 驱动程序为您配置 PRU 中断。 在示例(也可在此处找到 :git.ti.com/.../PRU_RPMsg_Echo_Interrupt0)中、系统事件16映射到通道2、通道2映射到主机中断2、该中断2将发送到 ARM 内核。 系统事件17映射到通道0、通道0映射到主机中断0、该中断将发送到 PRU 内核。 映射在 resource_table_0.h 文件中配置、而 PRU 中断映射在 AM335x TRM 的第4.4.2节中进行了介绍。

    TRM 的表4-22列出了可以触发 PRU 中断的事件列表。

    要回答您的问题:
    1) 1)否、您可以处理单个 PRU 固件中的多个中断。 您将需要使用资源表头文件配置中断、然后在中断发生后(寄存器 R31的位30或位31按照 TRM 中的说明进行设置) 然后、您可以使用 PRU INTC SRSR0和 SRSR1寄存器检查发生的中断、然后对其进行处理。

    2) 2) PRU 可以访问器件的完整存储器映射。 这意味着您可以编写一个 PRU 固件、该固件将直接读取和写入 SPI 外设的寄存器以对其进行控制。 但是、如果您在 ARM 内核上运行 Linux、则需要禁用器件树中的 SPI 节点、以阻止 Linux 也尝试控制 SPI。 由于我们希望 ARM 内核和 Linux 能够控制 SPI 外设、因此我们不提供 PRU 示例来实现这一目的。

    Jason Reeder