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.

[参考译文] TMS570LS3137:一个软件中断能否取代另一个软件中断?

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/723643/tms570ls3137-can-one-software-interrupt-preempt-another-software-interrupt

器件型号:TMS570LS3137

我的系统需要3个具有不同频率和优先级的中断。 我有一个20Khz ISR 绑定到 FIQ、并且一个5Khz ISR 是通过使用 IRQ 的软件中断生成的(并且可被 FIQ 抢先)。 我想创建一个以100Hz 频率运行的第三个中断、该中断可以被5Khz 或20Khz 中断抢先。 我认为这里的答案是否定的、但我需要确定、因为解决这个问题需要做很多工作。

谢谢、

Jim

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

    IRQ 和 FIQ 是 CPU 区分的两个中断级别、FIQ 能够挤占 IRQ。 因此、如果只需要两个中断、您的系统将能够完美地工作。 对于当前的问题、您可以从 RTI 配置多个比较中断(最多4个)(针对20kHz FIQ、5kHz IRQ 和100Hz IRQ)。 20kHz FIQ 将优先于5kHz 和100Hz IRQ 中断。 5kHz IRQ ISR 可以在 ISR 内多次检查更高优先级的中断(如果 ISR 执行时间大于 x us)。

    我不明白"通过软件中断生成"是什么意思。

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

    Sunil、

    我所指的软件中断是 SSIR1寄存器。  

    在上面描述的方案中、如果低优先级/100Hz 中断正在执行、并且是时候发生高优先级/5Khz 中断了、那么100Hz-ISR 中断是否必须首先完成(因为它们都在同一个 IRQ 上下文中)?

    谢谢、

    Jim

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

    是的、如果5kHz 中断请求(在 RTI 中断标志寄存器内)有一个标志已经被设置、那么100Hz 中断服务例程需要定期检查。 如果在 ISR 仍未完成的情况下获得此中断、则可以在不退出和重新进入其他 ISR 的情况下为同一 ISR 内的5kHz 和100Hz 中断提供服务。 因此、您基本上会对100Hz 中断进行基于软件的抢占。

    此致、
    Sunil