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.

[参考译文] RM57L843:什么可以导致 VIM 调用虚假矢量中断(在0xFFF82000上)?

Guru**** 2535150 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1282294/rm57l843-what-can-cause-vim-to-call-the-phantom-vector-interrupt-at-0xfff82000

器件型号:RM57L843
主题中讨论的其他器件:HALCOGEN

您好!

我在 LaunchPad 板上用仿真器运行一个程序、中断启用后、启动后将立即调用虚假矢量中断服务例程(位于0xFFF82000)。

 虚假矢量 中断服务例程内、IRQINDEX 寄存器的值为3、如果我没有错、则为通道2 Clock1 - RTI 比较0中断、该中断已启用并具有一个处理程序。

如果虚假矢量 例程刚刚返回、则 ESM 高中断服务例程(通道0 ESM 高电平)被调用、其值为(IOFFHR - 1 - 32)= 3、ESM_Grp2_CH03_Cortex_R5F_BUS_ERROR

如果 ESM High 中断服务例程刚刚返回、此程序继续正常运行。

什么可以导致 VIM 调用虚假矢量中断?

您能帮助我调试这个问题吗?

此致、
Marcio。

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

    尊敬的 Marcio:

    不知道为什么!

    您能否完成以下主题、这可能很有用:

    (+) phantomInterrupt 被调用、未知原因-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    如果在参考上述主题后问题仍未得到解决、请尽可能共享您的代码、以便我可以调试问题。

    --

    谢谢。此致、
    Jagadish。

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

    您好 Jagadish:  

    您建议的主题不适用于我们的案例。

    但我怀疑我的程序未正确初始化 VIM、特别是因为它正在运行自检(来自 Safe TI 诊断库)、并且使 MPU 复位了几次。   

    您能确认这个由 Halcolgen 生成的例程做什么吗? 它是否 向 HIVECS (0xFFFF0000-0xFFFF001C)配置异常向量基址? 如果是、我认为我的计划不应该将其称为"是"。

    ;-------------------------------------------------------------------------------
    ; Enable Offset via Vic controller
    ; SourceId : CORE_SourceId_012
    ; DesignId : CORE_DesignId_005
    ; Requirements: HL_CONQ_CORE_SR5
    
        .def     _coreEnableIrqVicOffset_
        .asmfunc
    
    _coreEnableIrqVicOffset_
    
            mrc   p15, #0, r0,         c1, c0,  #0
            orr   r0,  r0,    #0x01000000
            mcr   p15, #0, r0,         c1, c0,  #0
            bx    lr
    
        .endasmfunc
    

    谢谢。此致、

    Marcio。

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

    尊敬的 Marcio:

    很抱歉在响应中出现了延误,在印度我们有几个假期。

    您能否确认 Halcolgen 生成的此例程有什么作用? 它是否 向 HIVECS (0xFFFF0000-0xFFFF001C)配置异常向量基址? 如果是,我认为我的程序不应该称之为。

    是的、它是由 HALCoGen 生成的。

    在验证我的示例代码之后、我可以看到在 systemInit 之后的初始化过程中调用此函数。

    另外、还请参阅以下可能对您有所帮助的主题:

    (+) CCS/RM46L852:应该先发生什么? _coreEnableIrqVicOffset_或 systemInit -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    您好!

    我认为我的程序使用"寄存器矢量中断"行为来处理中断、因为 CPU 执行放置在0x18或0x1C 处的指令。 这似乎是默认行为。

    TRM 指出、 必须通过设置 CP15 R1寄存器中的矢量使能(VE)位来明确启用硬件矢量中断行为。 因此、我认为我的程序不应该调用_coreEnableIrqVicOffset_。 我是对吗?

    此外、"硬件矢量中断"不处理 IFQ、ESM 高电平中断是一个 IFQ (通道0)。

    我已删除_coreEnableIrqVicOffset_、所有 IFQ 和 IRQ 似乎都继续工作。

    此致、
    Marcio。

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

    尊敬的 Marcio:

    很抱歉我的答复出现延误。

    TRM 指出, 硬件矢量中断行为必须通过设置 CP15 R1寄存器中的矢量使能(VE)位来显式启用。 因此、我认为我的程序不应该调用_coreEnableIrqVicOffset_。 我是否正确?

    是的、回答正确。 如果您的程序使用"寄存器向量中断"、则不应调用 _coreEnableIrqVicOffset_。 因为此函数将启用"硬件矢量中断"。

    --
    谢谢。此致、
    Jagadish。