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.

[参考译文] MSPM0G3507:MSPM0G3507引导加载程序闪存写入问题

Guru**** 2390935 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1437739/mspm0g3507-mspm0g3507-bootloader-problem-of-flash-write

器件型号:MSPM0G3507

工具与软件:

"我正在开发一个引导加载程序、它通过 UART 从主机 PC 接收数据。 这个数据是一个二进制文件、我要将其写入微控制器的闪存存储器中、从地址0xD00开始。 写入操作完成后、引导加载程序应跳转到该地址以执行程序。

不过、我遇到了一个问题、即在写入整个二进制文件后、微控制器进入默认处理程序、但异常10。 在检查地址0xD00处的存储器时、我注意到一些位损坏。

有趣的是、当我使用 CCS 对相同的二进制文件进行编程并指示它仅擦除0xD00地址时、程序执行正确。

我正在寻求帮助、以确定和解决此快速损坏问题的根本原因。"

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

    您好!

    我不清楚您的问题。 您的启动代码从0xD00开始、还是应用代码从0xD00开始。 并且该闪存损坏问题发生在启动代码或应用程序代码上?

    SDK 中有 BSL 演示代码。 您是否首先遵循了该示例?

    此致、

    Cash Hao

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

    我的启动代码从0x000开始、另一个应用程序代码从0xD00开始。 我参考了 BSL 代码、但在硬件中、我们只公开 UART。 之前我们使用了 tm4C129板、并且与尝试从0xD00地址刷写 bin 文件的方式相同、我们使用以下方法进行刷写。

    DL_FlashCTL_unprotectSector (
    FLASHCTL、write_start_addr、DL_FLASHCTL_region_select_main);

    DL_FlashCTL_programMemoryFromRAM (FLASHCTL、write_start_addr、(uint32_t *) src、2、DL_FLASHCTL_REGION_SELECT_MAIN);

    建议放入 BSL bsl_host_mcu_to_mspm0g1x0x_g3x0x_target_uart 代码。

    我们的要求是引导加载程序代码、该代码会轮询 UART 30秒、如果它在 UART 上接收数据、然后从0xD00刷写 BIN 文件、在30秒后读取地址0x00D、如果0x00D 上的数据有效、则再次从该位置引导。  

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

    您好!

    我指的是 secondary_BSL_uart、这是此示例代码。 MSPM0器件用作 BSL 从器件。  

    [报价 userid="554880" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1437739/mspm0g3507-mspm0g3507-bootloader-problem-of-flash-write/5513099 #5513099"]DL_FlashCTL_programMemoryFromRAM[/QUOT]

    您需要调用生成了 ECC 的 API。  

    此致、

    Cash Hao

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

    已解决使用 DL_FlashCTL_programMemoryFromRAM64WithECCGenerated 时的问题。

    我应该也禁用缓存还是不需要缓存?

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

    您好!

    我认为这里没有禁用的必要。  

    此致、

    Cash Hao