2403258_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2403258_zh-CN

2403258_zh-CN

我能否对多核处理器使用同一个中断请求 (IRQ)?

你好,助手


我用的是S32K358多核。

使用 Eirq 进行 I/O 中断。


我有个问题:


我希望核心0使用eirq0,核心2使用eirq1。

但是这两个中断通道触发了同一个中断处理程序SIUL2_EXT_IRQ_0_7_ISR


问题就在这里。如果 eirq0 和 eirq1 都出现。双重核心触发

SIUL2_EXT_IRQ_0_7_ISR。两个核心操作同一个寄存器。
这将导致软件预期出现偏差。它将清除其他未初始化的通道。
 
我理解对吗?
 
请帮帮我。
BRS
 
Re: Can I use the same IRQ for multi core

你好@Licunhao

你的理解部分正确。

在 S32K3 设备上,SIUL2 外部中断输入被分组为中断向量。因此,EIRQ0 和 EIRQ1 属于同一中断组,并由同一组中断处理程序处理,例如SIUL2_EXT_IRQ_0_7_ISR。

因此,EIRQ0 和 EIRQ1 不能用作两个完全独立的中断向量。

如果同一个 SIUL2 中断组被路由或启用在多个内核上,则两个内核可能会进入同一个中断处理程序并访问同一个 SIUL2 寄存器。如果软件没有实现正确的多核同步和 SIUL2 中断组的所有权,则可能导致意外行为。

但是,每个单独的 EIRQ 通道仍然可以使用 SIUL2 中断标志。正确的中断处理程序应该检查哪个 EIRQ 标志处于挂起状态,并仅清除相应的标志位。状态标志不应全局清除或使用错误的掩码清除,否则可能会影响其他待处理的 EIRQ 标志。

对于多核应用程序,我建议采用以下方法之一:

  1. 将整个 SIUL2 中断组(例如 EIRQ0 到 EIRQ7)分配给一个核心。该核心应处理分组中断服务例程,并在需要时通过软件或核心间通信通知另一个核心。

  2. 如果您需要将独立的中断路由到不同的内核,请使用来自不同 SIUL2 中断组的 EIRQ 通道,例如,一个通道从 EIRQ0 到 EIRQ7,另一个通道从 EIRQ8 到 EIRQ15(如果您的引脚配置允许的话)。

  3. 如果两个核心必须访问相同的 SIUL2 寄存器,则必须通过适当的多核同步机制来保护访问。但总的来说,SIUL2 中断组的单一所有者模型更简洁、更安全。

顺祝商祺!

帕维尔

Tags (1)
No ratings
Version history
Last update:
a week ago
Updated by: