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.

[参考译文] LP-AM243:PRU 和 R5 之间的中断配置

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

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1567944/lp-am243-configuration-of-interrupts-between-pru-and-r5

器件型号:LP-AM243
主题:SysConfig 中讨论的其他器件

工具/软件:

您好!

我需要通过中断来同步 R5F 内核和 PRU 之间的活动。

我已使用 SysConfig 配置 INTC、如下所示:

R5 上运行的代码的相关部分:

{
...
gPruIcss0Handle = PRUICSS_open(CONFIG_PRU_ICSS0);

PRUICSS_registerIrqHandler(gPruIcss0Handle,
                      0,
                      16,
                      16,
                      0,
                      (void*) &finished);

PRUICSS_intcInit(gPruIcss0Handle, &icss0_intc_initdata);

status = PRUICSS_initMemory(gPruIcss0Handle, PRUICSS_DATARAM(PRUICSS_PRU0));
DebugP_assert(status != 0);

status = PRUICSS_initMemory(gPruIcss0Handle, PRUICSS_DATARAM(PRUICSS_PRU1));
DebugP_assert(status != 0);

status = PRUICSS_loadFirmware(gPruIcss0Handle, PRUICSS_PRU0, PRU0Firmware_0, sizeof(PRU0Firmware_0));
DebugP_assert(SystemP_SUCCESS == status);
status = PRUICSS_loadFirmware(gPruIcss0Handle, PRUICSS_PRU1, PRU1Firmware_0, sizeof(PRU1Firmware_0));
DebugP_assert(SystemP_SUCCESS == status);

PRUICSS_sendEvent(CONFIG_PRU_ICSS0, 0); // this is repeatedly called in application code
...
}

void finished(void)
{
    PRUICSS_clearEvent(CONFIG_PRU_ICSS0, 1);
    DebugP_log("ISR Fired \r\n");
    ...
}

在 PRU 上运行的代码的相关部分:

mainLoop:
    ...
    
    ldi r0.w0, 0x21
    mov r31, r0

l_wait_for_ARM:
    qbbs l_start, r31, 30
    jmp l_wait_for_ARM

l_start:
    ...
    qba mainLoop

我没有看到控制台上出现“ISR 已触发“、这意味着 ISR 未触发。

请帮助我解决此问题。

此外、是否有任何展示 INTC 配置的示例项目?

谢谢、

德鲁瓦