工具与软件:
大家好!
PRU-ICSSG 可以向 A53发出中断吗?
执行此操作是否有某种示例、包括传入中断的内核端映射?
非常感谢 Advantage。
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.
工具与软件:
大家好!
PRU-ICSSG 可以向 A53发出中断吗?
执行此操作是否有某种示例、包括传入中断的内核端映射?
非常感谢 Advantage。
尊敬的 Federico Gobetti:
感谢您的提问。
您能否提供有关用例的更多信息? RTOS 或 Linux?
此致
Ashwani
Ashwani 您好!
我使用的是来自 SDK v10.00.07.04的 Linux。
我期望 remoteproc 会启动被配置为引发中断 (例如 pr0_pru_mst_intr[0]_intr_req)的 PRU 应用和一个用于处理传入中断的自定义内核驱动程序。 对吗?
我已经看了 SDK 中的 RPMsg 示例、我了解 PRU 如何生成中断、但我仍然不 了解 A53内核如何识别和处理中断。 器件树应如何映射中断? 是否 要使用 GICSS0_SPI_IN_120/PRU_ICSSG0_PR1_HOST_INTR_pend_0中断? 内核驱动程序如何注册该中断?
尊敬的 Federico Gobetti:
感谢您提供信息。
我将把您的问题转发给 Linux-IPC 专家。
此致
Ashwani
您好、Federico、
是的、你在 Linux 器件树中配置中断。
首先、设置 PRU 客户端驱动程序中断的文档在哪里?
请参阅 PRU 软件支持包(PSSP)示例中 intc_map_0.h 文件中的我的注释。 它们提供了有关您应该从 Linux 方面执行哪些操作的指导:
https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am64x/PRU_RPMsg_Echo_Interrupt 0/ intc_map_0.h
好的、那么我可以在哪里复制示例呢?
RPMsg 示例的配置被隐藏了一个位。 通常、我建议客户在顶级的电路板配置.dts 文件中进行更改(这样可以保证您的代码不会被包括您所更改的文件在内的任何其他.dts 文件覆盖)。 但是、对于 RPMsg 示例、我们直接在 PRU 内核定义中配置了 PRU 中断:
ti-linux-kernel-6.6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
icssg0: icssg@30000000 {
compatible = "ti,am642-icssg";
reg = <0x00 0x30000000 0x00 0x80000>;
...
// all PRU interrupts going to Linux are defined here
icssg0_intc: interrupt-controller@20000 {
compatible = "ti,icssg-intc";
reg = <0x20000 0x2000>;
interrupt-controller;
#interrupt-cells = <3>;
interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host_intr0", "host_intr1",
"host_intr2", "host_intr3",
"host_intr4", "host_intr5",
"host_intr6", "host_intr7";
};
...
// now we configure the interrupt mapping as documented in the intc map file.
pru0_0: pru@34000 {
...
interrupt-parent = <&icssg0_intc>;
interrupts = <16 2 2>;
interrupt-names = "vring";
};
rtu0_0: rtu@4000 {
...
interrupt-parent = <&icssg0_intc>;
interrupts = <20 4 4>;
interrupt-names = "vring";
};
此致、
Nick