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.

[参考译文] LP-MSP430FR2476:通过 UART (BSL)刷写后、固件程序不执行

Guru**** 1456440 points
Other Parts Discussed in Thread: MSP430FR2311, MSP430FR2476
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1344806/lp-msp430fr2476-firmware-program-doesn-t-execute-after-flashing-through-uart-bsl

器件型号:LP-MSP430FR2476
主题中讨论的其他器件:MSP430FR2311MSP430FR2476

大家好、

我正在使用 MSP430FR2311作为主机、进行 BSL 的 MSP430FR2476固件更新。 我使用了 MSP430 FRAM 器件引导加载程序(BSL)和 MSP430FRBoot–主存储器引导加载程序和
《针对 MSP430 FRAM 大型存储器型号器件  的无线更新》并创建了主机和目标设置。
 MSP430FR2311主机、MSP430FR2476目标和应用代码(LED 闪烁)生成了.txt 文件并转换了.c 文件、并与 MSP430fr2476启动代码进行了合并。 主机和目标正常工作、没有任何错误。
所有命令正确执行并且 TI_MSPBoot_APPGR_JUMPTOAPP ()执行(但是 LED 不会切换)。
下面是包含我用于程序执行的所有文件的 zip 文件。

e2e.ti.com/.../MSP_5F00_Boot.zip


此致

帕拉维

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

    您好 Pallavi:

    1)。 首先,检查您的应用地址和  TI_MSPBoot_APPMGR_JUMPTOAPP ()指向的地址是否相同;

    2)。 其次、读取闪存数据并将其与您想要更新的代码进行比较、检查更新到闪存中的代码是否正确;

    3)。 第三,我将在4月14日离职,如果你有任何其他问题,我会在我回到办公室后帮助你。 如果您的问题紧急、您可以设置新帖子、我们的美国同事将在24小时内为您提供帮助。

    此致、

    K·扬茨

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

    您好!
    感谢您的回复
    1. 下面是为应用程序生成的更新的.c 文件  

    #包含

    #define App1_size 210

    const uint32_t App1_Addr[4]={
    0xC402、
    0xF7DA、
    0xF7F8、
    0xF7FE、
    };

    const uint32_t App1_size[4]={
    204,
    2、
    2、
    2、
    };

    const uint8_t App1_0[]={
    0x31、0x40、0x00、0x30、0xB0、0x13、0x26、0xC4、0xB0、0x13、0xC2、0xC4、0xD2、0xE3、0x02、0x02、
    0x92、0xC3、0x82、0x03、0x00、0x13、0x3F、0x15、0xC2、0x43、0x1D、0x02、0xB、0x13、0xAA、0xC4、
    0x3C、0x17、0x00、0x13、0xB2、0x40、0x80、0x5A、0xCC、0x01、0xD2、0xD2、0x03、0x04、0x02、0xD3、
    0x02、0x02、0x92、0xC3、0x30、0x01、0x3F、0x40、0x46、0xE8、0x03、0x43、0x1E、0x43、0x3F、0x53、
    0x3E、0x63、0xFD、0x2F、0xD2、0xC3、0x02、0x02、0x3F、0x40、0x46、0xE8、0x03、0x43、0x1E、0x43、
    0x3F、0x53、0x3E、0x63、0xFD、0x2F、0xD2、0xD2、0x02、0x02、0x3F、0x40、0x46、0xE8、0x03、0x43、
    0x1E、0x43 0x3F、0x53、0x3E、0x63、0xFD、0x2F、0xD2、0xC3、0x02、0x02、0xF2、0xD0、0x80、0x00、
    0x03、0x02、0xF2、0xD0、0x80、0x00、0x07、0x02、0xF2、0xD0、0x80、0x00、0x19、0x02、0xF2、0xD0、
    0x80、0x00、0x1B、0x02、0xF2、0xC0、0x80、0x00、0x1D、0x02、0xB2、0x40、0x10、0x00、0x82、0x03、
    0xB2、0x40、0xE7、0x03、0x92、0x03、0xB2、0x40、0x10、0x01、0x80、0x03、0x43、0x32、0xD0、
    0xD8、0x00、0x03、0x43、0x0C、0x43、0x10、0x01、0xB2、0x40、0xDE、0xC0、0x00、0x20、0xD2、0xD3、
    0x02、0x20、0x32、0xC20x03、0x43、0xB2、0x40、0x04、0xA5、0x20、0x01、0xFF、0x3F、0x03、0x43、
    0x80、0x00、0xCA、0xC4、0xFF、0x3F、0x03、0x43、0x80、0x00、0xC6、0xC4、};

    const uint8_t App1_1[]={
    0x18、0xC4、};

    const uint8_t App1_2[]={
    0x0E、0xC4、};

    const uint8_t App1_3[]={
    0x02、0xC4};

    const uint8_t * app1_ptr[4]={
    App1_0、
    App1_1、
    App1_2、
    App1_3、
    };


    应用程序代码开始从位置0x00C402写入。
    这是在以下程序中定义的宏:#define TI_MSPBoot_APPMGR_JUMPTOAPP (){Appl_Reset_Vector (void (*)())_UMPTOAPP)();}
    来自 lnk_cmd 文件的应用复位矢量是  

    /*引导加载程序区域的保留闪存位置*/
    __ Boot_Start = 0xf800;/*引导闪存*/
    __FFFE = Boot_Reset;/*引导复位向量*/
    __SCR= Boot_Vector 0xFFA2;/*引导矢量表*/
    __MSP430_Len = 0x10;/*共享回调的长度(2次调用=4B (Boot_Shared)或8B (msp43)*/
    __ Boot_Shared backs = 0xFF70;/*共享回调的开始*/
    Appl_Vector_Start = 0xf7a2;/*中断表*/
    /*为应用领域保留的闪存位置*/
    _CRC16 Appl_Checksum =(_CRC16);/*应用程序的 Appl_Start */
    _CRC8 Appl_Checksum_=(_CRC8+2);/*应用程序的 Appl_Start */
    Appl_Start_Memory =(_LVDS+3 Appl_Start);/*应用程序区域*/
    _appl_crc_Size1 =(_crc -_crc Appl_Start_Memory +1);/*为 Appl_End 计算的低存储器中的字节数*/
    _appl_crc_Size2 =(_crc -_crc Flex_Start + 1);/*为 Flex_End 计算的上部存储器中的字节数*/

    Appl_Reset_Vector =(__ Boot_Start - 2);

    地址 由工具生成。  我是否需要更改  TI_MSPBoot_APPMGR_JUMPTOAPP ()的地址

    2.下面是从.c 文件生成并发送到目标的数据,我已经检查了存储器位置。 数据被写入  
      


    此致、
    Pallavi Y

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

    您好 Pallavi:

    1)。 您应该确保  TI_MSPBoot_APPMGR_JUMPTOAPP ()能让指针跳转到应用程序代码的地址;

    2)。 我的意思是、应该在您完成更新后读取闪存数据、将闪存中的数据与您要写入闪存的数据进行比较、并检查它们是否相同。

    3)。 你可以总结你的问题和测试结果,并设置一个新的帖子,我的美国同事将在24小时内回复你,因为我很快要赶上飞机,不能回复你在未来几天。

    最好的面包

    K·扬茨

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

    好的谢谢我会设置一个新的帖子

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

    好的,Pallavi 我将关闭此主题、希望您能够尽快解决您的问题并获得满意的答案。

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

    谢谢!

    我能够解决此问题。 问题是  TI_MSPBoot_APPMGR_JUMPTOAPP ()未指向应用程序代码。
    _disable_interrupt ();
    (void (*)()) 0xC402)();
    添加此行将帮助我指向应用程序地址