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.
大家好、
由于我们在应用中使用 I2C、因此我们有上拉电阻器连接到这些引脚。 根据我们在默认配置中看到的情况、这会导致器件进入 BSL、这在我们的项目中是不需要的。 因此、我们希望通过写入 BOOTCFG2位置、从 NONMAIN 段配置中禁用 BSL。 我们观察到给定数据没有写入闪存位置。
我当前的假设是、这是因为我们没有为 BCR 区域写入正确的 CRC、并且这触发了错误的 NONMAIN BCR 恢复过程(即重新擦除 BCR)。
您可以:
Jens、您好!
由于我们在应用中使用 I2C、因此我们有上拉电阻器连接到这些引脚。 根据我们在默认配置中看到的情况、这会导致器件进入 BSL、这在我们的项目中是不需要的。 因此、我们希望通过写入 BOOTCFG2位置、从 NONMAIN 段配置中禁用 BSL。 我们观察到给定数据没有写入闪存位置。
[/报价]在早期样品器件中、不建议触摸非主内存、因为将自己锁定在器件之外非常容易。 我还认为、在尝试写入非主闪存之前、必须擦除和取消保护非主闪存(如下所示)。 它们是如何尝试执行该写入操作的?
在量产器件中、在量产 SDK 禁用此功能的情况下是可能的、而没有那么多风险、实际上 可以通过 SysConfig 通过复选框完成。
此致、
布兰登·费舍尔
尊敬的 Brandon:
我是尝试禁用 BSL 访问的团队的一员:
我们未能写入 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 时通过软件复位进入、它是否适合您?
如果您使用的是我们的头文件、您应该能够通过以下工具实现此目的:
SYSCTL->SOCLOCK.RESETLEVEL = SYSCTL_RESETLEVEL_LEVEL_BOOTLOADERENTRY; SYSCTL->SOCLOCK.RESETCMD = SYSCTL_RESETCMD_KEY_VALUE | SYSCTL_RESETCMD_GO_TRUE;
此致、
布兰登·费舍尔