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.

[参考译文] MSP430G2955:ISR矢量的默认位置是否可以更改?

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/580843/msp430g2955-can-the-default-location-of-isr-vectors-be-changed

部件号:MSP430G2955

大家好,

我正在创建一个包含两个软件的系统。 它从程序A开始。执行后,它跳到程序B

是否可以更改默认ISR向量位置(0xFFE0-FFFD)?

因此,对于程序A,它将是(0x8FE0 - 0x8FFD) ,对于B - (0xFCE0 - 0xFCFD)。

我尝试更改    .cmd文件中的INT00 - INT14地址。

这会将引导程序放置在新的位置。但是,当中断被触发时,它仍然尝试使用默认位置的引导程序(0xFFE0-FFFD)。

因此,在软件中,当prog A启动时,我必须将prog a ISR向量 (0x8FE0 - 0x8FFD)复制到默认位置 (0xFFE0-FFFD)。

当prog B启动时,我必须将prog B ISR向量(0xFCE0 - 0xFCFD)复制  到默认位置 (0xFFE0-FFFD)。

但是,要执行此操作,我需要擦除整个屏区,这将擦除重置向量。

如果擦除和程序之间的电源中断,这会导致重置矢量丢失。

是否可以移动ISR引导程序的默认位置?

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

    简短的回答是否,您不能移动默认的ISR矢量位置。 您必须使用代理表和共享接口来重定向第二个程序的矢量,并获取第一个软件实现所使用的中断。 这方面的一个例子可以在MSPBoot资源(SLAA600)中找到。

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

    感谢您的快速响应。 我确实开始实施您的建议。 只是希望有一种更简单的方法。
    将检查引用的示例。

    此致,
    Ugnius