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.

[参考译文] AM3358:中断优先级问题

Guru**** 2609955 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651105/am3358-interrupt-priority-question

器件型号:AM3358

您好!

在 Beagle Bone Black 上使用 BareMetal CPSW 以太网驱动程序时、我提到了一些奇怪的行为。

所述的情形通过 ping 泛洪和小数据包大小重现、从而产生大量的 CPSW 中断

实际上、该模式 如下所示:

1、一些代码将 OMAP INTC 中的 INTC_IRQ_THRESHOLD 设置为24

2. CPSW RX 中断正在到达(IRQ #41)

3.在 CPSW IRQ 处理程序中,我转储中断控制器寄存器,请参阅以下内容:

INTC_SIR_IRQ:                  0x29
INTC_IRQ_PRIORITY:      0x2C
INTC_IRQ_THRESHOLD:0x18
INTC_ILR 40:                       0x0
INTC_ILR 41:                       0xb0
INTC_ILR 42:                       0xb0
INTC_ILR 43:                       0x0

这意味着 IRQ 41已到达(0x29)、它在优先级为44 (0x2C)时具有优先级

阈值为24 (0x18)。 根据参考手册6.1.1.4 0x0是最高优先级、

而0x7F 是最低的。 如果是、我无法清楚地理解:我们怎么能得到

IRQ 优先级为44、而阈值设置为24? 对此有任何建议吗?

我是否错过了什么?

谢谢你。

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

    您好!

    来自 TRM:

    6.1.2.2优先权屏蔽

    为了更快地处理高优先级中断、提供了可编程优先级屏蔽阈值(MPU_INTC.INTC_TC_THRESHOLD 域)。 该优先级阈值允许优先级更高的中断抢占优先级;屏蔽所有优先级低于或等于阈值的中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我没能回答问题。 我知道所有优先级低于阈值的中断都将被屏蔽。 这就是我提出这个问题的原因。 IRQ 的优先级低于阈值(24)。 为什么会断言 IRQ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alex、您好、很抱歉我迟到了。 我相信只有当一个较高优先级的中断(高于设定的阈值)被挂起或激活时、较低优先级的中断才会被屏蔽。 如果没有优先级高于服务阈值的中断、那么优先级低于或等于阈值的 INT 将被服务。 优先级阈值寄存器旨在用作抢占机制、以减少重要中断的延迟。

    James