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:BSL 解锁在发送错误的密码后第二次没有响应

Guru**** 2525040 points
Other Parts Discussed in Thread: MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1556915/mspm0g3507-bsl-unlock-doesn-t-response-for-the-2nd-time-after-incorrect-password-is-sent

器件型号:MSPM0G3507


工具/软件:

您好、

对于大规模生产、我设计了我自己的 BSL 编程器。 为了防止固件遭到黑客攻击、我还更改了 NONMAIN BSL 配置中的密码。 我的 BSL 编程器可以恢复出厂设置并对 NONMAIN 进行编程。 为确保正确对 NONMAIN 数据进行编程、我还启用回读。

  更新 NOMAIN 后、我会重新启动 BSL 调用过程。  使用正确的密码、可以通过 BSL 再次连接该器件。 BCR 和 BSL 配置存储器可以读回、内容正确。

 发送默认密码时、BSL 会报告密码错误消息。 因为我更改了密码、所以没关系。 我 再次尝试发送正确的密码。 但 BSL 这次似乎没电了。 发送解锁命令后、BSL 返回 4 个字节、全部为 0x00、否则不会返回任何数据。    如果发送了错误的密码、唯一的方法是再次执行整个调用序列。  

这似乎是 BSL ROM 代码中的错误、但勘误表中未提及。 请确认根本原因。

Robert。

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

    您好 Robert:

     发送默认密码后、BSL 会报告密码错误消息。 因为我更改了密码、所以没关系。 我 再次尝试发送正确的密码。 但 BSL 这次似乎没电了。 发送解锁命令后、BSL 返回 4 个字节、全部为 0x00、否则不会返回任何数据。    如果发送了错误的密码、唯一的方法是再次执行整个调用序列。  [/报价]

    总之、如果出现 BSL 密码验证错误(错误的密码)、则需要再次重新调用 BSL 以输入密码。

    我的理解是否正确?

    BTW、您的警报功能配置是什么:

    B.R.

    Sal

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

    尊敬的 Sal:

    是的。

    我的配置中有“忽略安全警报“。

    Robert。

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

    您好 Robert:

    请参阅 BSL 协议说明:

    2 秒后尝试下一个密码。

    B.R.

    Sal

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

    尊敬的 Sal:

    是的、编程器将在重试之前等待 2s。 但这不奏效。 所以、我认为可能需要多一点时间、比如 2.1 秒。 运气差。 我还测试了 3 秒和 5 秒。 没有任何变化。

    Robert。

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

    您好 Robert:

    由于最后一个密码发送时出错、因此它将最后触发帧错误、从而导致 RXDATA 中存在一个额外的数据。

    然后需要主机处理这种数据,否则所有后续的 MSG 检查将被移动。

    以下是我使用 UART 协议进行的测试、在发送错误的密码后需要手动丢弃 1 个数据帧:

        /* Load wrong password */
        bsl_err = Host_BSL_loadPassword((uint8_t*) BSL_PW_RESET_W);
        delay_cycles(32000000*3);
    
        /* Clear the RXDATA as last frame is broken, there will exist one more data in UARTDATA */
        bsl_err = DL_UART_receiveDataBlocking(UART_0_INST);
    
        /* Load correct password */
        bsl_err = Host_BSL_loadPassword((uint8_t*) BSL_PW_RESET);

    那么它就可以正确地从 BSL 数据包获得正确的响应。

    B.R.

    Sal

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

    尊敬的 Sal:

    有趣!

    在我的测试中、主机将接收 4 个字节、全部是 0x00。 我使用 115200bps 的波特率。 您的测试程序中的波特率是多少?

    Robert。

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

    您好 Robert:

    我们仅支持 9600bps 的默认波特率、要支持其他波特率、请使用 9600bps 发送命令并更改波特率。

    测试工程直接从 SDK 导入:

    TI\mspm0_sdk_2_05_00_05\examples\nortos\LP_MSPM0G3507\bsl\bsl_host_mcu_to_mspm0g1x0x_g3x0x_target_uart

    B.R.

    Sal

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

    尊敬的 Sal:

    是、发送“更改波特率“命令。 以下是过程:

    1.将波特率设置为 9600。

    2. BSL 进入序列。

    3.获取设备信息。

    4.将波特率更改为 115200。

    5.解锁引导加载程序。

    Robert。

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

    您好、Roberer、

    看起来不错。

    请您尝试使用默认的 9600 波特率、我们可以看到与我的测试结果是否有任何差异。

    本周晚些时候、我将根据您在此处列出的条件进行一些测试。

    B.R.

    Sal

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

    尊敬的 Sal:

    我测试了 9600 波特率并且可以正常工作。

    显然、BSL 首次能够接受 115200 波特率的密码。 但是、当 BSL 由于密码错误而从低功耗模式恢复后、它只能接受 9600 波特率。

    Robert。

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

    您好 Robert:

    我与我的同事确认、当 MCU 存在低功耗模式时、它会复位 UART 并使用默认参数初始化它。

    波特率回到 9600。

    B.R.

    Sal