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.

[参考译文] MSPM0C1104:如何在 MSPM0C1104的工程中实现 FAH_BSL 功能。

Guru**** 2393025 points
Other Parts Discussed in Thread: MSPM0C1104, SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1507212/mspm0c1104-how-should-i-implement-flah_bsl-function-on-project-of-mspm0c1104

器件型号:MSPM0C1104
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

工具/软件:

各位专家、您好:

我想在 MSPM0C1104上的工程中实现 BSL 功能、我有一些问题、如下所示。

1.我是否可以通过更改 MAIN_APP_START_ADDR 的值来修改应用程序代码的起始地址、该值在 flashBSL_defines.h 中定义、如下图所示。

2.在 SDK 的 flash_bsl 工程参考中、我找不到任何用于定义 I2C 的 syscfg 文件。 是否需要添加 syscfg 来定义 I2C?

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

    我在 I2C 总线上找不到器件、似乎 BSL 无法正常工作。

    执行调试运行、我收到一条错误消息:"Trouble Writing Memory Block at 0x41c00100位于长度0x40的第0页:闪存下载失败! ...
    文件加载器:验证失败:目标写入0x41C00100失败
    GEL:文件:C:\Users\834076\AppData\Local\Temp\ti_cloud_storage\flash_bsl_LP_MSPM0C1104_nortos_ticlang.out:加载失败。"

    这是 BSL 函数无法正常工作以跳转到应用程序代码的原因吗?

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

    您好、金冠林、

    Unknown 说:
    我能否通过更改 MAIN_APP_START_ADDR 的值来修改应用程序代码的起始地址、该值在 flashBSL_defines.h 中定义、如下图所示

    是的、在 BSL 工程中、修改 MAIN_APP_START_ADDR、以匹配应用程序将在闪存主存储器中放置的存储器位置。

    在 SDK 的 flash_bsl 工程引用中、我找不到任何用于定义 I2C 的 syscfg 文件。 是否需要添加 syscfg 来定义 I2C?

     没有用于 BSL 工程的 SysConfig 文件。  BSL 的 I2C 和 UART 驱动程序配置在 flashbsl.h 中进行配置  设置-> #define I2C_INTERFACE ENABLE。  请记住、POR 后有10秒超时、这意味着您有10秒的时间连接到 BSL、否则器件将进入低功耗模式。  这也可能是您等待太长时间后无法连接到 BSL 的原因。

    我收到一条错误消息"Trouble Writing Memory Block at 0x41c00100 on page Length 0x40的第0页:闪存下载失败

    此处的问题很可能是调试器配置执行 MAIN 和 NONMAIN 存储器段擦除。 请参阅MSPM0引导加载程序(BSL)实现第2.2节步骤3。

    *重要*- BSL 引导配置通过设置静态写保护来修改 NONMAIN 段、从而防止修改或擦除 BSL 代码存储器。 在 NONMAIN 首次编程后、无论之后是否尝试擦除 NONMAIN 或 MAIN 闪存并对其重新编程、编程器都会擦除 NONMAIN、但由于写保护而无法擦除 MAIN 存储器。  这将导致编程错误、将 NONMAIN 留空并在下一次器件复位时使器件砖化 (因为 NONMAIN 为空)、因此、为了防止器件发生故障、请确保在擦除和对 FlashBSL 程序代码进行编程之前每次都对器件执行出厂复位。  请 参阅 MSPM0 MCU 开发人员指南 的第7.1.2节。

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

    我禁用"执行 CRC 验证"以加载映像、然后 无法再连接器件。

    我尝试通过 uniflash 恢复出厂设置、但仍会失败、消息如下所示。

    [2025/5/2下午5:15:58] [info] CS_DAP_0:GEL 输出:启动设备出厂复位
    [2025/5/2下午5:15:58] [info] CS_DAP_0:GEL 输出:尝试 CS_DAP 连接
    [2025/5/2下午5:15:59][info]  CS_DAP_0:GEL 输出:尝试 SEC_AP 连接
    [2025/5/2下午5:15:59][info]  CS_DAP_0:GEL Output:命令已发送
    [2025/5/2下午5 μ s:16:00][info]  CS_DAP_0:GEL 输出:使用 NRST 启动硬件复位
    [2025/5/2下午5:16:00][info]  CS_DAP_0:GEL 输出:启动 BOOTRST 板复位
    [2025/5/2下午5:16:00][info]  CS_DAP_0:GEL 输出:RESET 线路置为有效
    [2025/5/2下午5:16:01][info]  CS_DAP_0:GEL 输出:复位线置为无效
    [2025/5/2下午5:16:01][info]  CS_DAP_0:GEL 输出:板复位完成
    [2025/5/2下午5:16:01][info]  CS_DAP_0:GEL 输出:复位完成
    [2025/5/2下午5:16:01][info]  CS_DAP_0:GEL 输出:sec_AP 断开
    [2025/5/2下午5:16:01][info]  CS_DAP_0:GEL 输出:sec_AP 重新连接
    [2025/5/2下午5:16:29][ERROR]  CS_DAP_0:读取寄存器 SECAP_RCR 时出现问题:(ERROR -2131 @ 0x2020C)无法访问器件寄存器。 重置器件、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电、和/或尝试更可靠的 JTAG 设置(例如下 TCLK)。 (仿真包20.0.0.3298)
    [2025/5/2下午5:16:29][error]  CS_DAP_0:GEL:执行 GEL_DAPInit_SECAPCommand ():目标未能读取寄存器 SECAP_RCR、位于(REG':SECAP_RCR&0xFFFFU)[mspm0_cs_DAP_init.gel:247]、位于 GEL_DAP:Init_Wait Init (GEL _)[mspm07_cs_fap_fordapResponse

    是否有办法取消阻止低功耗模式?

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

    这是我使用的开发板。

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

    您好、金冠林、

    好的、让我与开发工具工程师核实一下。

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

    您好、金冠林、

    我想与您跟进、看看您的问题是否已解决?