linux - 如何向 ARM64 (GIC V3) Linux 添加新的 IPI(处理器间中断)(例如:IPI15)?
问题描述
我正在研究 ARM A53 GIC V3 Soc。我一直在尝试在 smp.c 中为 rpmsg 添加两个新的 IPI(IPI 15 和 IPI 14)。系统有3核RTOS(Secure EL1)和1核Linux(Non-Secure EL1)。
LINUX 将触发 IPI 14,RTOS 触发 IPI 15。Linux 使用 gic_raise_softirq() 函数触发 IPI 14。
实施 IPI 的步骤。在枚举 ipi_message_type 中添加了新的 IPI。增加了 smp.h 中的 NR_IPI。在 ipi_types[NR_IPI] 中添加了 S(new ipi)。在 handle_IPI 函数中添加了 IPI 的案例。
这是在 Linux 中配置新 IPI 的方法吗?我可以在 /proc/interrupts/ 中看到新的中断,但它没有显示在 /proc/irq 中。为什么它没有显示在 /proc/irq 中?
我面临的问题是 RTOS 无法获得此中断,但由于某种原因,这在 Linux 本身中回显。所以我无法检查从 Threadx 到 Linux 的中断。使 Secure EL1 和 Non-Secure EL1 获得所有 IPI (0~15) 所需的寄存器设置是什么?我们需要在 GIC V3 中做任何特定的 IRQ 路由吗?
解决方案
推荐阅读
- java - 如何在java中设置正确的图像路径?
- html - 社交媒体图标方向水平定位的问题
- javascript - 如何获取复选框的最新选中值?
- javascript - 为什么在左上角和左下角的可拖动同时应用时可调整大小给我一个不需要的行为
- angular - 如何在角度指令测试中模拟 removeChild 或 appendChild 函数调用?
- javascript - Angular Unit Test:如何在方法中模拟属性?
- selenium - selenium.common.exceptions.InvalidSelectorException 在 python 3.7 中使用 Selenium
- arrays - 如何显示从多个 API 页面获取的嵌套数组数据
- javascript - 如何为选定的控件创建尾随函数?
- python - 如何通过 python 与 NodeMCU 模块通信?