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:禁用 BSL 调用引脚检查时、MSPM0L1306 上软件触发的 BSL 进入失败

Guru**** 2773145 points

Other Parts Discussed in Thread: MSPM0L1306

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1618899/mspm0l1306-software-triggered-bsl-entry-failing-on-mspm0l1306-when-bsl-invoke-pin-check-is-disabled

器件型号: MSPM0L1306

尊敬的 TI 团队:

我们正在与配合使用 MSPM0L1306 尝试通过软件触发的复位进入 BSL。

观察到的行为

  • 何时 “BSL 调用引脚检查“已启用 在 NONMAIN 配置中、软件触发的 BSL 条目按预期工作。

  • 何时 “BSL 调用引脚检查“被禁用 、完全相同的软件序列无法进入 BSL。

  • 在这种失败的情况下、器件会复位、但不会进入 BSL。

软件实现

以下是用于通过 I2C 触发 BSL 进入的代码:

void I2C_setRegisterValue (uint8_t addr、uint8_t value){
用例 0x70:// BSL 触发寄存器  
  if (value == 0xAB){  
   Log_STR(“软件 BSL 条目:正在刷新和重置...\r\n“);

   // 1。 等待 UART 清除
   while (DL_UART_isBusy (UART_0_INST))
    ;

   // 2. 禁用中断以确保原子复位序列
   __disable_irq();

   // 3. 准备 SRAM
   //我们清除 SRAM 以防止 ECC/99 错误、但我们必须这样做
   //将 BSL 票证 (0xBE) 放在最开头 (0x20000000)。
   uint32_t *SRAM_ptr =(uint32_t *) 0x20000000;

   //将前 256 个字的其余部分清零以满足 ECC 要求
   对于 (uint32_t i = 1;i < 256;i++){
    SRAM_PTR[i]= 0;
   }

   //现在将 TT 写在索引 0
   SRAM_PTR[0]= 0xBE;

   // 4. 稳定延迟
   //使 I2C 主器件在从器件消失之前接收 ACK 至关重要
   delay_cycles (100);

   // 5. 触发引导加载程序进入复位
   DL_SYSCTL_resetDevice (DL_SYSCTL_RESET_Bootloader_entry);
  }
  休息;
}

其他注意事项

  • 用于支付单的 SRAM 位置: 0x20000000

  • 已写入 TT 值: 0xBE

  • 复位方法: DL_SYSCTL_RESET_BOOTLOADER_ENTRY

  • NONMAIN 配置否则不变

  • 器件不受密码保护

  • 应用程序在所有情况下都正常运行

问题

  1. 禁用“BSL 调用引脚检查“时、软件触发的 BSL 条目应该是否正常工作?

  2. 禁用引脚检查是否会改变 ROM 如何评估 SRAM 票证?

  3. 是否有任何其他 NONMAIN 设置会影响软件触发的 BSL 进入?

如果需要其他日志、引导诊断程序或配置屏幕截图、请告知我们。

感谢您的支持。

此致、
Nagaraju

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

    忽略我之前关于 BSL 引脚检查配置的询问。 我已确定故障的根本原因