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.

[参考译文] MSPM0L1306:NONMAIN - BCR 和 BSL 的配置

Guru**** 2005515 points
Other Parts Discussed in Thread: SYSCONFIG, CODECOMPOSER, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1226671/mspm0l1306-configuration-of-nonmain---bcr-and-bsl

器件型号:MSPM0L1306
Thread 中讨论的其他器件:SysConfigCODECOMPOSERUNIFLASH

大家好、

由于我们在应用中使用 I2C、因此我们有上拉电阻器连接到这些引脚。 根据我们在默认配置中看到的情况、这会导致器件进入 BSL、这在我们的项目中是不需要的。 因此、我们希望通过写入 BOOTCFG2位置、从 NONMAIN 段配置中禁用 BSL。 我们观察到给定数据没有写入闪存位置。

 我当前的假设是、这是因为我们没有为 BCR 区域写入正确的 CRC、并且这触发了错误的 NONMAIN BCR 恢复过程(即重新擦除 BCR)。

 

您可以:

  • 提供用于 CRC 验证的详细信息(多项式、初始值、最终 XOR)、以便我们可以生成正确的 CRC 签名
  • 确认我们确切地可以禁用 BSL。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jens、您好!

    由于我们在应用中使用 I2C、因此我们有上拉电阻器连接到这些引脚。 根据我们在默认配置中看到的情况、这会导致器件进入 BSL、这在我们的项目中是不需要的。 因此、我们希望通过写入 BOOTCFG2位置、从 NONMAIN 段配置中禁用 BSL。 我们观察到给定数据没有写入闪存位置。

    [/报价]

    在早期样品器件中、不建议触摸非主内存、因为将自己锁定在器件之外非常容易。 我还认为、在尝试写入非主闪存之前、必须擦除和取消保护非主闪存(如下所示)。 它们是如何尝试执行该写入操作的?  

    在量产器件中、在量产 SDK 禁用此功能的情况下是可能的、而没有那么多风险、实际上 可以通过 SysConfig 通过复选框完成。

    此致、
    布兰登·费舍尔

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

    尊敬的 Brandon:

    我是尝试禁用 BSL 访问的团队的一员:

    • 我们使用的调试器工具是 Lauterbach、
    • 我们打算通过将 BOOTCFG2= 0x5566AABB 写入来完全禁用 BSL。
    • 为此、我们使用了整个 BCR 段的默认值(41C0.0000h 41C0.005Bh)和上面详述的新 BOOTCFG2值
    • 对于 BCR CRC、我们 根据 IEEE 将 CRC-32与公共多项式

    我们未能写入 BOOTCFG2值、我们需要了解原因:要么 CRC 错误、要么我们缺少步骤。 需要进行整体擦除。 在我们的内存转储中、BOOTCFG2是0xFFFFFFFF、这是否还需要之前进行擦除?

    我们还在 CodeComposer 环境中使用 XDS110调试器尝试了 MASSERASE 和 FACTORYRESET,但由于未知原因,它失败的原因如下:

    有什么想法要尝试我们的设置吗?

    谢谢。

    丹尼尔

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

    Daniel、您好!

    您正在使用哪个版本的器件? 我怀疑它们是早期样品、这个线程告诉你如何确定问题是否是这样的: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1204644/faq-mspm0-sdk-important-note-for-early-mspm0-customers

    我们还在 CodeComposer 环境中使用 XDS110调试器尝试了 MASSERASE 和 FACTORYRESET,但由于未知原因,它失败的原因如下:

    有什么想法要尝试我们的设置吗?

    [/报价]

    这些器件是否是您修改了 NONMAIN 存储器的器件? 如果出现这种情况、则可能无法恢复、这也是我们不建议修改早期样品器件中的非主器件的部分原因。  

    如果器件仅为空白、您也可能会看到此消息、因为器件将引导至 BSL 模式、然后在10秒后未尝试连接时超时进入低功耗模式。 在量产器件上、当 发生该超时时时、您仍可以连接、但在早期样品上、您将看到此消息。

    您是否正在使用 LaunchPad? 如果是、请尝试使用我们的基本示例之一启动调试会话、任何 GPIO 或空示例都是一个好主意。 您将再次看到该对话框。 按住 Launchpad 上的 S2/PA18、同时点击"强制重置"。  

    此致、
    布兰登·费舍尔

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

    尊敬的 Brandon:

    以下是更新后的项目结果。

    上述错误现已得到解决、它是 XDS110和我们的电路板之间的一条适配器电缆布线错误。  

    实际上、我们的微控制器是早期样品类型;我们将其中一个替换为生产类型、现在可以正确写入 BCR、BSL NONMAIN 区域(包括正确的 BOOTCRC 和 BSLCRC)。

    但还有一个问题:  

    BOOTCFG1 = 0x5566AABB 按预期工作(通过外部上拉来禁用 BSL 输入)

    但是、我们尝试通过以下方式完全禁用 BSL:

    BOOTCFG2 = 0x5566AABB、且在上电时仍会进入引导加载程序

    您能否检查 BOOTCFG2设置是否适用于您的设置?

    谢谢!

    丹尼尔

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

    Daniel、您好!

    我认为、当您禁用 BSL 时、SysConfig 中的 NONMAIN 工具会默认禁用 BSL 调用按钮、尽管从读取 TRM 来看、这并不是什么必要的。

    如何在不禁用 BSL_invoke 引脚的情况下禁用 BSL? 请记住、您还必须使用正确的 CRC 值。  

    此致、
    布兰登·费舍尔

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

    尊敬的 Brandon:

    我们的构建设置不基于 TI 的 SDK (无 CCS 环境)、并且我们针对每个 BCR/BSL 字使用软件定义的值。

    它们各自的值确实分别出现在可执行文件*。elf 和*。S19中。 当然、构建环境会计算合适的 BSL CRC 和 BCR CRC 并将其填充到* S19文件中。 得出的*。S19使用 UniFlash 写入微控制器(CRC 由工具进行验证)。

    因此、我们能够单独控制每个 BCR、BSL 条目。

    此致、

    丹尼尔

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

    感谢您澄清了 Daniel、

    我将在末端进行测试、看看我是否可以重新创建它。 我将必须对设置进行一些修改、但这是可能的。

    此致、
    布兰登·费舍尔

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

    Daniel、您好!

    很抱歉耽误你的时间。 我终于找到机会尝试这种方法。  

    当以任何方式禁用 BSL (软件调用或 PIN 调用)时、我似乎无法进入 BSL 模式。 引脚调用也会关闭。  

    我认为在大多数情况下、同时禁用 BSL 和引脚调用是合理的、但我对为什么您会看到这一点而我不是这样感到困惑。

    如果您尝试在禁用 BSL 时通过软件复位进入、它是否适合您?

    如果您使用的是我们的头文件、您应该能够通过以下工具实现此目的:

    Fullscreen
    1
    2
    3
    SYSCTL->SOCLOCK.RESETLEVEL = SYSCTL_RESETLEVEL_LEVEL_BOOTLOADERENTRY;
    SYSCTL->SOCLOCK.RESETCMD =
    SYSCTL_RESETCMD_KEY_VALUE | SYSCTL_RESETCMD_GO_TRUE;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致、
    布兰登·费舍尔