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.

[参考译文] MSP432P401R:BSL Scripter:通过发送错误的 RX_PASSWORD_32存储器区域(以前受保护)进行整体擦除

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/588362/msp432p401r-bsl-scripter-mass-erase-by-sending-an-incorrect-rx_password_32-of-memory-regions-that-were-previously-protected

器件型号:MSP432P401R

我使用 BSL Scripter 允许通过 UART0下载固件。 在调用器件中的 BSL 之前、我保护闪存中用于应用参数的两个扇区、这些参数在下载新代码后我希望保留。

//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//在可能进入引导加载程序之前,
//保护为非易失性参数保留的内存区域
if (!map_FlashCtl_protectSector (flash_main_memory_space_BANK0、flash_SECTOR31))

DEVICE_ERROR (ERROR_INITIALIZATION、SUB_ID_FLASHPROTECT、(Int32) FLASH_SECTOR30);

if (!map_FlashCtl_protectSector (flash_main_memory_space_Bank1、flash_SECTOR31))

DEVICE_ERROR (ERROR_INITIALIZATION、SUB_ID_FLASHPROTECT、(Int32) FLASH_SECTOR31);

//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

如果(!(GetBootPinStatus()))

BOOT_LED_ON ();
暂停(1000);
//使用指定的 UART0端口调用 BSL
BSL_Invoke (BSL_UART_interface);

BSL Scripter 示例全部使用

RX_PASSWORD_32 .\pass256_wrong.txt  

这会导致大量擦除以进行  

RX_PASSWORD_32 .\pass256_default.txt  

来通过和解锁 BSL。

为什么该批量擦除会影响先前受保护的扇区?

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

    保护闪存是指设置该闪存组的保护位。  这样就不会发生意外的闪存删除/写入。

    使用错误密码批量擦除的目的是保护您的代码不被未经授权的人读取。  因此、如果检测到错误的密码、它将擦除闪存以实现此目的。  

    您不必输入错误的密码、您可以将.txt 文件与代码的前256个字节一起使用、以便在没有此批量擦除的情况下进入 BSL。  他们只是在示例中这样做、因为他们知道器件将重置为什么、然后默认密码将进入 BSL 模式。

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

    我理解这一推理、如果 TI 允许客户的应用程序保护 扇区不受 引导加载程序擦除、这将是非常有意义的。 错误的密码会擦除应用程序认为需要保护的所有内容。 使用引导加载程序可以更轻松地进行固件升级、而不会带来安全风险。

    由于 TI 主要出于 自身目的使用 MSP432的所有信息存储器(未被引导加载程序擦除的闪存区域)、因此需要 通过固件升级保留关键参数的应用必须完成 以下 繁重而耗时 的任务之一:

    (1) 为 现场的每个潜在版本维护 PASSword_version.txt 文件。

    (2)为主机器件编写应用程序、以首先读取所有非易失性参数、升级固件(不知道密码、强制执行批量擦除)、然后在新固件运行后重新对非易失性参数进行编程。

    (3)编写自定义 固件 并购买更大的闪存部件、以便升级闪存映像可以存储在未使用的存储器中、复制并运行。

    (4)我已经研究了 IP 保护规定、但到目前为止、我看不到它们对需要通过引导加载程序进行保护、但具有应用程序[RW]访问权限的闪存区域有所帮助。

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

    Scott、

    我理解您对这些事情的感受、很遗憾、我不能确定您所有顾虑的正确答案。  

    因此,我复制了我的同事,他 应该能够很快回来,比我能提供的更多的见解。

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

    另一个选项是创建定制 BSL、您可以使用默认 BSL 作为基准、并在提供错误密码时删除批量擦除。

    但 IP 保护应该做到这一点。 从技术参考手册(www.ti.com/.../spnu489c.pdf 第8.2.5节)"注意:如果启用了 IP 保护、闪存控制器将忽略闪存中 IP 保护扇区的 PROT 位配置"

    如果您需要有关如何执行此操作的示例、请告诉我。

    此致、

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

    我不确定您是否打算参考:TMS570LS20x/10x 安全 MCU。

    我正在使用 MSP432P401R。

    是的、

    (1)我希望能够在我的用户应用程序中保护扇区(最好是在 Bank 0或 Bank 1中)

    (2)调用引导加载程序

    (3)调用 BSL Scripter、而无需知道当前安装的特定版本的256字节密码。

    (4)发出错误密码、导致擦除所有先前未受保护的扇区

    (5)发出默认密码、允许进入引导加载程序

    (6)加载新的程序闪存

    (7)运行新应用程序、该应用程序具有先前受保护的扇区、与之前版本的闪存保持不变

    如果您可以提供有关如何使用 MSP432执行此操作的示例、我非常欢迎您的建议。

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

    您好、Scott、

     此项目的目的是在地址0x8000加载一个切换 LED 例程、然后使用 IP 保护模式、从地址0x8000到0x9000进行保护。 (请确保在项目中设置 enableSecureZone 标志、以便可以进行此操作)

    e2e.ti.com/.../ip_5F00_protection_5F00_MSP_5F00_EXP432P401R_5F00_nortos_5F00_ccs.zip

    使用 CCS、您可以确认该段是安全的。如果您在地址0x8000打开存储器视图、您应该会看到如下所示的内容:

    现在使用 BSL 脚本程序(确保 MSP432 运行 BSL)、运行以下脚本:

    e2e.ti.com/.../script_5F00_P4xx_5F00_uart_5F00_secure_5F00_zone_5F00_xds110.txt

    此脚本将擦除闪存存储器、因为提供了错误的密码、然后将 PC 设置为受保护的 LED 切换例程。 您应该看到如下所示的内容:

    运行此脚本后 、您应该会看到 Launchpad 上的绿色 LED 闪烁。

    希望这对您有所帮助。

     David

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

    我将查看示例项目、看看它是否有助于我实现目标。