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.

[参考译文] MSP430FR2355:中断矢量重定向(MSP430FRBoot)

Guru**** 2510095 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1173396/msp430fr2355-interrupt-vectors-redirection-msp430frboot

器件型号:MSP430FR2355

您好!

我正在开发基于"slaa721 MSP430FRBoot -主存储器引导加载程序"的引导加载程序。

该文档在 第2.2.3章中指出、在  FRAM 器件中、所有中断都可以被重新编程、并且提供的脚本为我生成了以下.cmd 代码:

/* MEMORY definition, adjust based on definitions above */
MEMORY
{
    SFR                     : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
    // RAM from _NonReserved_RAM_Start - __RAM_End
    RAM                     : origin = 0x2008, length = 0xff8
    // Flash from _App_Start -> (APP_VECTORS-1)
    FLASH                   : origin = 0x8003, length = 0x739f
     
    // Interrupt table from  _App_Vector_Start->(RESET-1)
    INT00            : origin = 0xf3a2, length = 0x0002
    INT01            : origin = 0xf3a4, length = 0x0002
    INT02            : origin = 0xf3a6, length = 0x0002
    INT03            : origin = 0xf3a8, length = 0x0002
    INT04            : origin = 0xf3aa, length = 0x0002
    INT05            : origin = 0xf3ac, length = 0x0002
    INT06            : origin = 0xf3ae, length = 0x0002
    INT07            : origin = 0xf3b0, length = 0x0002
    INT08            : origin = 0xf3b2, length = 0x0002
    INT09            : origin = 0xf3b4, length = 0x0002
    INT10            : origin = 0xf3b6, length = 0x0002
    INT11            : origin = 0xf3b8, length = 0x0002
    INT12            : origin = 0xf3ba, length = 0x0002
    INT13            : origin = 0xf3bc, length = 0x0002
    INT14            : origin = 0xf3be, length = 0x0002
    INT15            : origin = 0xf3c0, length = 0x0002
    INT16            : origin = 0xf3c2, length = 0x0002
    INT17            : origin = 0xf3c4, length = 0x0002
    INT18            : origin = 0xf3c6, length = 0x0002
    INT19            : origin = 0xf3c8, length = 0x0002
    INT20            : origin = 0xf3ca, length = 0x0002
    INT21            : origin = 0xf3cc, length = 0x0002
    INT22            : origin = 0xf3ce, length = 0x0002
    INT23            : origin = 0xf3d0, length = 0x0002
    INT24            : origin = 0xf3d2, length = 0x0002
    INT25            : origin = 0xf3d4, length = 0x0002
    INT26            : origin = 0xf3d6, length = 0x0002
    INT27            : origin = 0xf3d8, length = 0x0002
    INT28            : origin = 0xf3da, length = 0x0002
    INT29            : origin = 0xf3dc, length = 0x0002
    INT30            : origin = 0xf3de, length = 0x0002
    INT31            : origin = 0xf3e0, length = 0x0002
    INT32            : origin = 0xf3e2, length = 0x0002
    INT33            : origin = 0xf3e4, length = 0x0002
    INT34            : origin = 0xf3e6, length = 0x0002
    INT35            : origin = 0xf3e8, length = 0x0002
    INT36            : origin = 0xf3ea, length = 0x0002
    INT37            : origin = 0xf3ec, length = 0x0002
    INT38            : origin = 0xf3ee, length = 0x0002
    INT39            : origin = 0xf3f0, length = 0x0002
    INT40            : origin = 0xf3f2, length = 0x0002
    INT41            : origin = 0xf3f4, length = 0x0002
    INT42            : origin = 0xf3f6, length = 0x0002
    INT43            : origin = 0xf3f8, length = 0x0002
    INT44            : origin = 0xf3fa, length = 0x0002
    INT45            : origin = 0xf3fc, length = 0x0002
    
    // App reset from _App_Reset_Vector
    RESET                   : origin = 0xf3fe, length = 0x0002
}

但是、我的应用程序似乎无法调用任何 ISR。

一旦我将位置更改为默认值 :0xFFA2 - 0xFFFE、一切都可以再次正常工作。

MSP430FR23x_Datasheet 文档、第6.3章还规定 IV 必须在0xFF80 - 0xFFFF 范围内。

我缺少什么吗?

--

最棒的

Dzmitry

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

    2.2.3中的意思是、在 FRAM 器件中、您可以写入存储矢量的位置。 当然、您可以对闪存器件执行此操作、但存在这样的危险:擦除段后、您在写入新的矢量之前没有复位矢量。

    您可以使用 SYSRIVECT 将向量重新定位到 RAM 中。 但不会到达 FRAM 中的任何任意位置。

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

    谢谢!

    在 MSP430FRBoot 中、它们似乎 只是替换"TI_MSPBoot_MI_WriteByteDirect"函数中的 IV 表。