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:尝试使用 R31寄存器从 PRU 触发中断不起作用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1247614/am2434-trying-to-trigger-an-interrupt-from-the-pru-using-the-r31-register-doesn-t-always-work

器件型号:AM2434
主题中讨论的其他器件:TMDS243EVM

您好!

我正在使用 TMDS243EVM 电路板、并想使用 PRU 的 Σ-Δ 转换器来控制我的系统。 程序流如下:

  1. 每秒 R5内核触发一个中断并将当前值从共享存储器打印到控制台
  2. PRU:
    1. 等待 、直到 R5内核的中断被触发
    2. 启动 Σ-Δ 转换
    3. 将结果写入共享存储器
    4. 触发 R5内核的中断

根据技术参考手册(AM64x/AM243x 处理器器件版本2.0德州仪器(TI)产品系列)第3132页、可以通过写入 PRU 的_R31寄存器来触发中断。 在我的测试中、我发现这样做只会偶尔触发中断(请参阅附加的 PRU main.c、函数 TRIGGER_INTERRUPT )。

但是、如果我使用 ICSS_INTC_STATUS_SET_INDEX_REG 寄存器直接设置中断状态、从 PRU 到 R5的中断生成从不会出现问题。

在我的系统中、我看到在写入_R31寄存器后 INTC 的 RAW_STATUS 寄存器未 正确设置、ENABLE_REG 和 GLOBAL_ENABLE_HINT_REG 寄存器是正确的。

"我怎么了? 这里错了?  据我所知、不存在已知问题、根据文档、对_R31寄存器进行写入应该会始终触发中断。

我附加了所有文件以重现问题:

e2e.ti.com/.../TriggerInterruptFromPRUSporadicError.zip

此致

安德烈

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

    您好、Andre、

    对于延迟的响应很抱歉、您是否使用了 syscfg 来配置 PRU INTC 模块、如果是、您可以与我们分享一下?

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

    Nilabh 早上好、

    我的确这么做了、您在 src 文件夹的 zip 文件中找到了相关的 syscfg 文件。

    此致

    安德烈

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

    我已经检查了它、我在您共享的 zip 文件中没有看到任何 example.syscfg。 此外、您所使用的构建基础架构似乎也是 cmake 对吗?

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

    您好!

    不调用该文件 example.syscfg 但是 pru_Blink_led.syscfg 我使用 CMake。 我也可以仅使用 CCS 工程来构建二进制文件、这会产生相同的结果。

    此致

    安德烈

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

    尊敬的 Andrea:

    您能否尝试更改 syscfg PRU INTC 设置、如以下示例所示:

    /cfs-file/__key/communityserver-discussions-components-files/908/PRU_5F00_R5F_5F00_intrrupt_5F00_sample_5F00_example.zip

    浏览 empty.c 文件中的 PRU INTC 配置、并参阅 asm 文件中的 R31寄存器写入内容。

    如果仍有问题、请告诉我。