Other Parts Discussed in Thread: HALCOGEN
主题中讨论的其他器件:HALCOGEN
您好!
我们必须使用 VIM (矢量中断管理器)接口来实现中断优先级屏蔽。
中断优先级屏蔽应该阻止优先级较低的中断、即使在被触发时也是如此。
硬件中是否有任何寄存器或任何其他设置中断优先级屏蔽的方法。
谢谢。
此致、
丹尼
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.
Other Parts Discussed in Thread: HALCOGEN
您好!
我们必须使用 VIM (矢量中断管理器)接口来实现中断优先级屏蔽。
中断优先级屏蔽应该阻止优先级较低的中断、即使在被触发时也是如此。
硬件中是否有任何寄存器或任何其他设置中断优先级屏蔽的方法。
谢谢。
此致、
丹尼
您好!
有两个 VIM 寄存器来启用中断并选择优先级。 它们是 REQENASETx 和 FIRQPRx。
REQENASETx 寄存器的中断使能位用于控制事件的发生是否会引起对 VIM 的中断请求。 每个 FIQ 和 IRQ 中编号较小的通道具有较高的优先级。 例如、VIM 通道2上的 RTI 比较0具有比 VIM 通道3上的 RTI 比较1更高的优先级。
VIM 可同时向 CPU 发送两个中断请求-一个 IRQ 和一个 FIQ。 如果在 CPU 级别启用了两种中断类型、则 FIQ 具有更高的优先级、并首先进行处理。 除 通道0和1之外的每个中断通道都可以分配给 CPU 发送 FIQ 或 IRQ 请求。 这是通过 FIRQPRx 寄存器完成的。
这些操作(启用或禁用、FIQ/IRQ 选择)由硬件完成。
您可以使用 REQENACLRx 来屏蔽通道号大于 x 的所有中断
例如、如果 x < 32、以下配置将屏蔽所有较低优先级的 IRQ (不屏蔽 FIQ)。
vimREG->REQMASKCLR0 =((0xFFFFFFU << x) &(~vimREG->FIRQPR0));
vimREG->REQMASKCLR1 =(0xFFFFU &(~vimREG->FIRQPR1));
vimREG->REQMASKCLR2 =(0xFFFFU &(~vimREG->FIRQPR2));
vimREG->REQMASKCLR3 =(0xFFFFU &(~vimREG->FIRQPR3));
经过分析、我们似乎需要实施一个权变措施来正确解决 TMS570中已实现 VIM 中断控制器中优先级掩码的失效问题。
如何使用 TMS570中的 VIM 来实现 CAT1、CAT2、CAT0 AUTOSAR OS 中断级别?
此外、对于每个 CAT2中断、应禁用所有优先级较低的中断、同时跟踪不同的应用。 这意味着几乎每个上下文切换都会打开和关闭中断通道。 中断服务也需要类似的权变措施。
TI 是否提供经过测试的变通方法(或应用手册)、这对于 AUTOSAR 堆栈没有任何问题、可满足所有 AUTOSAR 要求? TI 能提供这些吗?