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.

[参考译文] MSPM0G1519:从 APP 进入 BSL

Guru**** 2796425 points

Other Parts Discussed in Thread: MSPM0G1519, LP-MSPM0G3519, MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1622209/mspm0g1519-bsl-entry-from-app

器件型号: MSPM0G1519
主题中讨论的其他器件: LP-MSPM0G3519MSPM0G3519

尊敬的团队:

代表我们的客户发帖。

我将与客户分享此 E2E 帖子、以便他们可以在需要时回复。

我想从固件应用程序中调用 MSPM0G1519 的 BSL。  

`为 LP-MSPM0G3519 提供的` bsl_software_invoke_app_demo_can `示例、应通过运行以下 invokeBSLAsm`函数来实现这一点。 不过、在我的器件上、器件会立即复位到应用中、而不是进入 BSL。 调试时、看起来它在复位之前立即进入硬故障处理程序。

_static_inline void invokeBSLAsm (void)
  /*在跳转到 BSL 之前完全擦除 SRAM */
  _asm (
#if defined (__GNUC__)
    “.syntax unified\n“/*加载 SRAMFLASH 寄存器*/
#endif
    “LDR  R4、= 0x41C40018\n“/*加载 SRAMFLASH 寄存器*/
    “LDR  R4、[R4]\n“
    “LDR  R1、= 0x03FF0000\n“/* SRAMFLASH.SRAM_SZ MASK */
    “和  R4、r1\n“      /*获取 SRAMFLASH.SRAM_SZ */
    “LSR  R4、R4、#6\n“/*   SRAMFLASH.SRAM_SZ 至 KB *
    “LDR  R1、= 0x20300000\n“/* ECC 代码的起始*/
    “添加  R2、R4、r1\n“/*   ECC 代码结尾*/
    “MOV  r3、#0\n“
    “init_ecc_loop:\n“/*循环以清除 ECC 代码*/
    “STR  R3、[R1]\n“
    “添加  R1、R1、#4\n“
    “CMP  R1、R2\n“
    “Blo  init_ecc_loop\n“
    “LDR  R1、= 0x20200000\n“/*非 ECC-DATA 的开始*/
    “添加  R2、R4、r1\n“/*   非 ECC-data 的末尾*/
    “MOV  r3、#0\n“
    “init_data_loop:\n“/*循环清除 ECC-data */
    “STR  R3、[R1]\n“
    “添加  R1、R1、#4\n“
    “CMP  R1、R2\n“
    “Blo  init_data_loop\n“
    /*在清除 SRAM 后强制调用 BSL */
    “str  %[resetLvl]、[%[resetLvlAddr]、#0x00]\n“
    “STR  %[resetCmdVal]、[%[resetCmdAddr]、#0x00]“
    :/*无输出*/
    :[ resetLvlAddr ]“r"(&Sysctl->SOCLOCK.RESETLEVEL),“,</s>、
    [ resetLval ]“r"(“(DL_SYSCTL_RESET_Bootloader_entry)、
    [ resetCmdAddr ]“r"(“(&SysCtl->SOCLOCK.RESETCMD)、
    [ resetCmdVal ]“r"(</s>“
      SYSCTL_RESETCMD_KEY_VALUE | SYSCTL_RESETCMD_GO_TRUE)
    :“R1",“,"R2"、"R2",“,"R3"“"R3",、,"R4"“"R4")“);、;</s>“ “
}

我在做什么?

此致、

Danilo

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

    尊敬的 Danilo:
    您能否确认客户是否使用我们在 SDK 中的相同示例进行此调用?  根据我在示例代码中看到的内容、客户需要使用 CAN 在软件中调用 BSL。  

    此致、

    Diego Abad

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

    尊敬的 Danilo:

    我已经测试了 SDK 示例、对此器件有一些注释:

    1.该演示适用于 Launchpad、因此它使用带 40MHz 的 HFXT 可能不会拖累客户硬件。

    2. GPIO 触发方式设置对电路板不正确,它不使用 PB3 作为 S2 按钮,也不设置上拉电阻。

    ->这需要修复、我将提交一个内部 TT。

    我建议客户可以尝试使用 UART 演示(或参阅 UART 演示来修改 CAN 演示)来实现软件调用功能。

    bsl_software_invoke_app_demo_uart_LP_MSPM0G3519_nortos_ticlang

    B.R.

    Sal

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

    此外、 使用调用 keBSLAsm (void) 函数来修复 BSL_ERR_01。

    对于 M0Gx51x 器件、此 BSL_ERR_01 不会产生影响、用户可以使用以下 API 来直接触发 BSL 我相信:

    DL_SYSCTL_resetDevice(DL_SYSCTL_RESET_BOOTLOADER_ENTRY);

    您也可以将其作为替代方法进行尝试。  

    B.R.

    Sal

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

    尊敬的 Diego 和 Sal:

    我已将此主题分享给我们的客户、请他在此处回复。

    感谢您的支持!

    此致、

    Danilo