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.

[参考译文] MSP432P4111:BSL 启动失败

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/916377/msp432p4111-bsl-startup-failure

器件型号:MSP432P4111

有详尽的文档说明了如何通过分支到0x20200来利用和/或更改器件上的驻留引导加载程序(BSL)(例如 、请参阅 https://www.ti.com/tool/MSPBSL)。

然而,如果这种呼吁未能产生预期的反应,会怎样?
BSL 进行其自身的完整系统设置、包括时钟系统和中断向量。
但经过许多审判和错误之后,我发现了两个问题,这些问题在调用 BSL 方面是绝对致命的。

    1. 如果之前在 EUSCI_A0中有未完成的输出等待处理(加载 TXREG、而不等待输出完全串行化到 TXLINE)、即使过早地禁用模块、也会将某些内容保持在易失性状态、与 BSL 启动不兼容
    2. 最初在不禁用模块和相关中断的情况下使用 SysTick 服务对于 BSL 启动也是不可接受的。

在引入强制延迟以允许任何字符离开 TX 移位寄存器并禁用 SysTick 模块后、BSL 将启动正常。

;-)

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

    尊敬的 Chris:

    感谢您的分享。 您的发现是正确的、非常有用。

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

    更新:

    完成一些工作后、这里是 Dos 和 donts:

    通过器件的编码硬复位来进入 BSL、即使用唯一代码的特性进行硬复位、并且在引导例程中、如果您在进入时立即识别代码、则跳转至 BSL。 这将处理所有外设复位。

    不要使用任何端口映射。 您可以使用任何可用的端口、但是中断重定向(通过"读/写中断")和时钟速率的降低会在大多数 UART 波特率下导致不可接受的延迟。

    观察这些来之不易的关联、BSL 运行顺畅。