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:启用VIC端口时,为什么中断不起作用?

Guru**** 2589275 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1091497/tms570ls3137-why-interrupts-don-t-work-when-vic-port-is-enable

部件号:TMS570LS3137

你(们)好
我正在处理微控制器的初始配置序列;我正在使用SPNA106D作为指南。 有一个步骤指示在CPU寄存器中启用DE VIC端口, 但我仍然对该端口的功能存有疑问,而且在启用VIC端口时也有问题,启用时中断不起作用,禁用时中断起作用(顺便说一句,我使用的是管理中断处理程序安装的操作系统)。


因此,我的问题是,启用或禁用VIC端口之间的延迟是什么?
为什么启用时中断不起作用?

谢谢。

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

    您好,我们的专家在4月7日之前不在办公室。 请期待回复延迟。
    此外,请参阅此常见问题解答: software-dl.ti.com/.../index.html

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

    您好,

    当CPU接收到IRQ时,CPU直接从与VIM (VIC端口)的接口读取ISR的地址,而不是分支到0x18。 CPU将直接分支到ISR。

    有三种不同的方式对中断作出反应:

    1. 传统ARM7模式:在此模式下,软件设计人员必须为FIQ和IRQ编写软件调度程序。
    2. 矢量中断:在此模式下,VIM模块为IRQ和FIQ分配剂量,并且具有一个寄存器,该寄存器显示了暂挂中断例程的地址。 CPU必须通过LDR指令将矢量地址加载到PC。
    3. 硬件矢量中断:此模式 仅适用于IRQ。 在此模式下,VIM通过VIC端口向Cortex-R4F CPU分配和提供矢量地址。 此模式类似于#2,但它将装载指令保存在地址0x18上,因此只需几个周期。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,谢谢您的回答,我有疑问,如果我使用VIM选项,是否没有必要修改CPU寄存器中VE位的状态以启用VIC端口功能?  

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

    您好,Juan,

    矢量INT和HW矢量INT都需要VIM (VIC已启用)。 不必启用VIC端口。  

    当外围设备内发生事件时,外围设备会向VIM发出中断请求。 然后,VIM会确定来自外围设备的请求的优先级,并生成与最高活动IRQ对应的矢量,然后根据 中断类别更新FIQINDEX或IRQINDEX寄存器。 然后,它使用 向量值访问中断向量表,以获取相应ISR的地址。 如果请求是FIQ类中断,则从中断向量表读取的地址将写入FIQVECREG寄存器。 如果 请求是IRQ类中断,该地址将被写入IRQVECREG寄存器,并放置在 CPU的VIC端口上(如果启用了硬件矢量中断)。 当新的高优先级中断线路处于活动状态时,所有中断寄存器都会更新。

    如果操作系统支持矢量中断模式,则也应支持HW矢量中断。