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.

[参考译文] AM625:PRU (ICSS-M) 至 M4F 中断、不会触发 AM62x 上的 ISR

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1656036/am625-pru-icss-m-to-m4f-interrupt-not-triggering-isr-on-am62x

器件型号: AM625

您好:

我正在为 AM62x 开发固件、其中 PRU(ICSS-M、MCU 域)需要在将数据写入共享存储器后、通过硬件中断向 M4F 内核发送信号。 PRU 运行使用 ti-CGT-PRU 2.3.3 构建的裸机固件、M4F 端使用带有 DPL HwiP API 的 MCU+ SDK。

——

***设置摘要:**

PRU 侧 (PRU-software-support-package 6.4.0):
-系统事件 16 映射到通道 0、通道 0 映射到主机中断 6
-根据 AM62x TRM 表 10-11、主机中断 6 对应于 MCUSS NVIC 输入索引 51 (icssm0.pr1_host_intr_pend.6)
-通过以下方式触发中断:`__R31 =(uint32_t)(0x20 |(16 - 16));`

PRU INTC 初始化:
```c
CT_INTC.CH_MAP_REG4_BIT.CH_MAP_16 = 0;      //事件 16→通道 0
CT_INTC.HINT_MAP_REG0_bit.HINT_MAP_0 = 6;   //通道 0→主机 6
CT_INTC.STATUS_CLR_INDEX_REG_BIT.STATUS_CLR_INDEX = 16;
CT_INTC.ENABLE_SET_INDEX_REG_BIT.ENABLE_SET_INDEX = 16;
CT_INTC.HINT_ENABLE_SET_INDEX_REG_BIT.HINT_ENABLE_SET_INDEX = 6;
CT_INTC.GLOBAL_ENABLE_HINT_REG_BIT.ENABLE_HINT_ANYY = 1;
```μ s

M4F 端:
```c
//根据 SDK 文档:HwiP intNum = 16 + NVIC_IN_n = 16 + 51 = 67
#define PRU_TO_M4F_INT_NUM (16 + 51)

void PRU_IRQHandler(void *实参)

  易失性 uint32_t *INTC_SICR =
    (uint32_t *)(CSL_ICSSM0_PR1_ICSS_INTC_INTC_SLV_BASE + 0x24);
  *INTC_SICR=16; //清除系统事件 16
  //切换 GPIO 以进行调试
}

void setup_PRU_INTERRUPT (void)

  HwiP_Params_init (&pruHwiParams);
  pruHwiParams.intNum = PRU_TO_M4F_INT_NUM;
  pruHwiParams.callback = PRU_IRQHandler;
  pruHwiParams.priority = 4;
  HwiP_construct (&pruHwiObj、&pruHwiParams);
}
```μ s

——

**问题:**
M4F 从不会进入`PRU_IRQHandler`。 确认 PRU 固件正在运行(GPIO 切换和 SPI 读取工作)。 HwiP 已成功注册(没有从`HwiP_construct`返回错误)。

**问题:**
`` intNum = 16 + 51 = 67 `在 M4F 上传递到` HwiP_construct `的正确值是否为` icssm0.pr1_host_intr_pend.6 μ s?
`CSL_ICSSM0_PR1_ICSS_INTC_INTC_SLV_BASE`是否需要经过`AddrTranslateP_getLocalAddr ()`、M4F 才能写入它?
除了 PRUSS INTC 在内部处理之外、主/MCU 中断路由器上是否需要任何其他配置来将 ICSS-M 主机中断 6 路由到 M4F NVIC?
4. MCU+ SDK 中是否有一个有效的示例专门演示 AM62x 上的 PRU 至 M4F 中断信号?

谢谢你。

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

    您好!

    设定支持期望

    为了设置支持预期:在 AM62x 上、我们不支持从 M4F 内核加载 PRU、也不支持从 M4F 内核加载 PRU。

    从技术上讲、您应该能够从 A53 集群上运行的 Linux 初始化 PRU 和 M4F 内核、然后在 M4F 和 PRU 之间设置自定义 IPC。 但是、我们没有任何 M4F + PRU 示例 IPC 代码。

    我们提供了有关其他处理器的现有示例、这些示例可能对您有用、也可以进行定制。

    有用资源  

    首先、我们将缓慢地将 AM62x PRU 开发从 PRU 软件支持包 (PSSP) 迁移到新的 OpenPRU 存储库。 您会在那里找到一堆新示例: https://github.com/TexasInstruments/open-pru

    全新的 PRU Academy 基于 OpenPRU 存储库:
    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AB.mSUi9ihL.a5hIt1grfw__AM62-ACADEMY__uiYMDcq__LATEST

    以下示例展示了 AM26x(不同的器件)使用 R5F 内核通过 PRUICSS 驱动程序 API 执行中断(遗憾的是,这不会直接为您提供帮助)
    https://github.com/TexasInstruments/open-pru/blob/main/academy/intc/intc_mcu/intc_mcu.c 

    将您发送给其他团队成员进行评论  

    我会将您发送给另一位更熟悉 MCU+ SDK 的团队成员、以便讨论如何为特定的输入中断设置通用 IRQ 处理程序。 如果您在几个工作日内没有收到回复、请 ping 通该线程。

    此致、

    Nick

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

    您好、

    由于您使用 INTC_HOST_INTERRUP_6、应该将 M4F NVIC 中断 ID 设置为 64、请更改此地址并测试您的代码。

    有关 INTC 主机中断映射到器件级中断的详细信息、请查看下图。

    如果您需要任何进一步的帮助、请告诉我们。

    此致、
    Manoj。