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.

[参考译文] AM2434:AM2434 PRG1_PRU1可通过 R5_0_0重新启动、但无法运行到 PRG1_PRU1的 main 中。

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1441419/am2434-am2434-prg1_pru1-can-to-be-re-started-by-r5_0_0-but-fail-to-run-into-the-main-of-prg1_pru1

器件型号:AM2434

工具与软件:

各位专家、您好!

我能够启用/禁用 PRG1_PRU1内核。 但第二次激活的 PRG1_PRU1内核似乎无法运行到 PRG1_PRU1的 main:汇编程序中。  

以下屏幕截图是 R5_0_0中的 main ()、(它是 MCU+ SDK 10.0.0示例 GPIO_LED_BLINK 示例)。  

我输入启用 PRG1_PRU1启用命令、可以启动 PRG1_PRU1内核、并可以将捕获的 ADC 数据放入 PRG1共享存储器地址中(以红色显示已更新)。  

第二个屏幕截图是我在 PRG1_PRU1中输入的用于读取引脚(连接到 ADC 并行输出引脚)并将其放置到 PRG1共享存储器的测试汇编代码:

第三个截屏旨在显示使用 GPIO_LED_BLINK .c 内的命令 R5_0_0可停止 PRG1_PRU1:

以下屏幕截图显示 PRG1_PRU1内核由 R5_0_0内核重新启动。

问题是 PRG1共享内存未更新。  

重新启动的 PRG1_PRU1内核似乎无法在 main 中运行汇编代码来读取 I/O 引脚上的 ADC 结果、以更新 PRG1共享存储器。

我想我可能在导致这个问题时遗漏了一些控制命令。

您能帮助检查此问题吗?

非常感谢。

此致、   邱俊杰。

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

    尊敬的 Jason:

    关于您的方法、我有几个问题:

    1.重新启动 PRU 内核时、您是希望它再次从启动的主函数运行、还是从暂停的位置继续运行?

    2.您希望暂停 PRU 内核、您能提供有关您用例的更多信息吗?

    此致、

    Nitika  

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

    嗨、Nitika、

    非常感谢您的答复。 我似乎这不是一个简单的问题。

    我的应用案例是飞行时间测量系统。

    我不知道在涉及启用/禁用/软复位操作时、PRU 无法用作"状态机"(无法在软复位后从"main"启动、无延时时间规格)。

    此外、在我从 R5F 内核发出"enable PRU"命令后、PRU 真正从"main"运行的延迟时间还不知道吗? 我也不知道是否可以软复位然后使 PRU 直接从"main:"运行?  

    为解决上述2个问题、我将设计更改为"不禁用第一个 PRU 内核"、方法是更改汇编代码、让第一个 PRU 内核在输入引脚上等待(类似于禁用第一个 PRU)。 我可以使用第二个 PRU 通过第一个 PRU 的输入引脚将信号发送到第一个 PRU、以执行类似的工作来激活第一个 PRU、从而读取 ADC 并行数据。 两个 PRU 可以处于连续运行状态。 系统发送信号到第二个 PRU 以控制第一个 PRU 中的输入引脚。  

    问题迎刃而解。

    非常感谢。

    此致、  邱俊杰。