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.

[参考译文] AM3359:BeagleBone Black 中断服务例程

Guru**** 2553260 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1553487/am3359-beaglebone-black-interrupt-service-routine

器件型号:AM3359


工具/软件:

我使用的 beagle bone black 和我试图做一个中断服务例程的手臂侧。 我使用位于 /usr/lib/ti/pru-software-support-package/examples/am335x/PRU_RP1 的 PRU 示例工程 (PRU_RPMsg_echo_interrupt1) 在 Msg_Echo_Interrupt 端生成中断、但我无法在 ARM 端找到 ISR 的示例代码。 有人能给我指一下 ARM 上的 ISR 的代码 C++示例吗?

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

    您好、Eric、

    请为我确认您在 ARM 内核上运行的操作系统。

    如果您使用 TI-RTOS 进行编程、请注意、根据、我们无法再为 AM335x 上的 RTOS 提供软件设计支持
    关于 AM335x、AM437x、OMAP-L13x、C674x、K2G、 AMIC110、AMIC120 器件

    此致、

    Nick

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

    使用 cat /etc/dogtag

    BeagleBoard.org Debian Buster 物联网映像 2020年04月06日

    使用 uname -A

    Linux BeagleBone 4.19.94-ti-R42 #1buster SMP Preempt Tue Mar 31 19:38:29 UTC 2020 armv7l GNU/Linux

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

    您好、Eric、

    明白。 我可以帮您解决 Linux 问题。

    在接下来的几个月中、我想再创建一些关于在 Linux 和 PRU 内核之间进行不同类型处理器间通信 (IPC) 的示例代码和文档。 如果您在处理代码时愿意分享您的一些代码、也许我们可以就此共同努力。

    我们来收集更多信息。 明天我将再次作出回应。

    问题  

    1) Linux 4.19 是相当老的。 您是否计划为您的产品使用最新的内核?

    2) 您是否刚刚编写一个在 PRU 内核的 RPMsg 上挂起的用户空间应用? 还是尝试执行其他操作、例如编写 Linux 内核驱动程序?

    3) 您的 IPC 是否有特定要求? (例如,平均或最大延迟,数据吞吐量等)

    更多信息  

    请记住、Linux 实际上并不会将中断暴露给用户空间。 因此、如果您想要真正的中断服务例程 (ISR)、需要将其编写在自定义内核驱动程序中。 然后、您可以编写将在内核 ISR 完成执行后安排运行的用户空间代码。

    如果这只是一个没有超严格时序要求的 Linux 用户空间应用、那么不要使用自定义 Linux 驱动程序使事情变得过于复杂。 如需了解更多相关信息、请访问: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1248401/processor-sdk-am62x-question-of-ti-rpmsg-char-scripts-specifically-the-recv_msg-method/4731803#4731803 

    此致、

    Nick

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

    1.没有

    2.尝试编写一个在 ARM 中具有 ISR 的用户空间应用程序、该 ISR 从 PRU 内核的 RPMsg 触发。

     3.不适用

    我使用了  PRU_RP Msg_Echo_Interrupt 1 中的示例代码。  轮询 对于该应用程序不起作用。 讨论结束后、我们将尝试针对此应用使用不同的方法。  

    感谢您提供的信息。 非常感谢。

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

    您好、Eric、

    明白。 如果您对此 PRU 有其他问题、请随时联系我们(如果您对此主题有疑问)、或者如果您在新主题上有其他问题、请随时联系我们。

    此致、

    Nick

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

    我能否对您的注释“您可以编写用户空间代码、在内核 ISR 完成执行后计划运行“得到澄清? 假设 PRU 是否每 150us 就向 ARM 生成一次 RPMessage/中断、并且生成了一个客户内核驱动程序、那么客户内核驱动程序一进来就能为 ISR 提供服务吗?