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.

[参考译文] MSP430F5659:使用 USB BSL 进行批量擦除

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/766004/msp430f5659-mass-erase-using-the-usb-bsl

器件型号:MSP430F5659
主题中讨论的其他器件:MSP430USBDEVPACK

您好!

我想通过 USB 使用 MSP430F5659上的 TI USB BSL 执行批量擦除。 是否存在 GUI? 我已下载 MSP430USBDEVPACK、MSP430_USB_Firmware_Upgrade_example 和 BSL 脚本程序、但无法轻松执行批量擦除。 我认为 BSL 脚本编写器可以完成这项工作、但看起来我需要编写一个脚本。 是否有示例或存在的内容? 此外、在 BSL_USB_GUI 的源代码中、存在对 Mass 擦除的引用、但 GUI 不能选择仅执行此操作。

谢谢、

Fred

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我记得对、RX_PASSWORD 命令将触发批量擦除、因此脚本应该是...
    模式5xx USB
    RX_PASSWORD
    延迟1000
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、但我认为它不起作用。

    我想执行批量擦除、因为我的 JTAG 已锁定、数据表中说过执行一次解锁 JTAG 的批量擦除。 现在、它仍处于锁定状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     您好、Fred、

    我在这里看到了2个问题、请让我逐一回答。

    使用 USB BSL 进行整体擦除

    通过 USB BSL 触发批量擦除的最简单方法是使用带有错误密码的"RX_PASSWORD"命令、这将根据 《MSP430Tm闪存器件引导加载程序(BSL)用户指南》触发"密码错误时的批量擦除"。

    更具体地说、为了做到这一点、请首先在 此处下载最新的 BSL Scripter。 然后,在软件包中,您可以在路径.\ScriptExampleWindows\5xx_USB 中找到示例,并且只需三行即可完成该作业。

    模式5xx USB
    //在
    存储器
    RX_PASSWORD pass32_wrong.txt
    RX_PASSWORD pass32_default.txt 中提供错误的密码来执行//批量擦除 

    请注意、正如下面文档中突出显示的那样、这里提到的"密码"是位于地址0xFFE0和0xFFFF 之间的 BSL 密码、并且"批量擦除"只在主代码闪存上执行。

    2.通过 USB BSL 解锁 JTAG 调试接口

    JTAG 锁定密钥位于地址 0x17FC 至0x17FF 之间、它实际上 位于 BSL 存储器地址范围内、因此在对保护密钥进行编程之前、必须采取适当的措施来解除对存储器区域的保护。 这可以通过定期存储器写入访问来完成、方法是直接写入 SYSBSLC 寄存器地址(0x0182)并将 SYSBSLPE 设置为0。 之后、BSL 存储器的行为类似于常规闪存存储器、可以对 JTAG 锁定密钥进行编程。

    这个操作不能由 BSL 批量擦除来完成、这是因为它实际上一点也不接触 JTAG 锁定密钥。

    不过、仍然可以通过 USB BSL 解锁 JTAG 调试接口。 请参阅以下脚本。

    模式5xx USB
    //在
    存储器中提供错误的密码
    来执行//批量擦除 RX_password pass32_wrong.txt
    RX_password pass32_default.txt
    RX_DATA_BLOCK_FAST RAM_BSL_USB.txt
    SET_PC 0x2504
    延迟3000
    ////////////////////////////////////////
    //启动 RAM USB BSL 应用
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    模式5xx USB
    RX_PASSWORD .\pass32_default.txt
    RX_DATA_BLOCK .\Clear_SYSBSLPE.txt
    RX_DATA_BLOCK .\JTAG_UNLOCK.txt 

     Clear_SYSBSLPE.txt 的内容是

    @0182
    03 00
    q 

     JTAG_UNLOCK.txt 的内容是

    @17FC
    00 00 00 00
    q 

    最后但同样重要 的是、请阅读此帖子、了解有关此操作结果和可能解决方案的更多重要信息。

    请在执行这些操作时仔细考虑!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一如既往、感谢您的回复和对社区的贡献!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!

    但是、我在某种程度上欺骗了我的器件、因此在获得新 MSP 来替换旧 MSP 之前无法进行测试。 测试后、我将更新该线程。

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

    只需让您知道它的工作非常完美、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Philo、

    我想知道、这些线路的用途是什么?
    RX_DATA_BLOCK_FAST RAM_BSL_USB.txt
    SET_PC 0x2504

    USB BSL 区域位于0x1000、那么我们在0x2500写入什么内容呢?

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

    您好、Fred、

    通过"RX_DATA_BLOCK_FAST RAM_BSL_USB.txt"、USB BSL 固件被编程为从地址0x2500开始的 RAM。

    通过"SET_PC 0x2504"、程序计数器(PC)被定向至 RAM 中的 USB BSL。 此命令:1)结束从 BSL 闪存(地址范围0x1000 - 0x17FF)启动的 USB BSL 会话;2)从 RAM 启动新的 USB BSL 会话。

    根据 MSP430Tm闪存器件引导加载程序(BSL) 用户指南,必须将 USB BSL 加载到器件 RAM 中,然后从此处启动。

    请记住、默认情况下、USB BSL 从其 BSL 闪存中启动、JTAG 锁定密钥也位于 BSL 闪存中。 为了避免同时 读取/读取/擦除/写入同一 BSL 闪存存储 器、有必要从 RAM 执行 USB BSL。

    顺便说一下、有关闪存操作的更多信息、请参阅  《MSP430x5xx 和 MSP430x6xx 系列的第7章闪存控制器用户指南》。

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

    您好、Philo、

    这是因为0x17FC 在 BSL 段中、所以在写入0x17FC 之前需要先擦除 BSL 段吗?

    我在 USB BSL 代码中看到一些#ifdef RAM_based_BSL 区域。 仅闪存编译的代码是否会在 RAM BSL 中工作?

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

     您好、Fred、

    关于您的问题、

    [引用 user="user4725373"]

    这是因为0x17FC 在 BSL 段中、所以在写入0x17FC 之前需要先擦除 BSL 段吗?

    [/报价]

    不完全正确。 它只写入闪存存储器(通过 RX_DATA_BLOCK)、但它会与同时代码提取(从 BSL 闪存执行 USB BSL)相冲突。 此处了解闪存操作可能会非常有帮助、因此    如果您有其他问题、请阅读《MSP430x5xx 和 MSP430x6xx 系列的第7章闪存控制器用户指南》。

    实际上、我刚刚找到 了更多 信息、这些信息进一步确认 了将 USB BSL 加载到 RAM 并从 RAM 执行的必要性。 请检查以上更新的帖子。

    [引用 user="user4725373"]

    我在 USB BSL 代码中看到一些#ifdef RAM_based_BSL 区域。 仅闪存编译的代码是否会在 RAM BSL 中工作?

    [/报价]

    不确定我是否理解您的问题、但让我尝试用下面的内容来回答。

    您可以 在此处获取最新的 TI 官方 BSL 源代码和编译的映像。 在您的器件系列文件夹中、您可以找到  具有各种#define 宏的 BSL_Device_File.h 文件。 通常、默认情况下"RAM_WRITE_ONLY BSL"有效、但会注释掉"FULL_FLASH_BSL"和"RAM_Based BSL"(无效)。 如果您使用此配置构建项目、则可以获得 TI 默认出厂 USB BSL、该 BSL 最初编程到 BSL 闪存中、并且仅支持三个命令(RX_DATA_BLOCK_FAST、RX_PASSWORD 和 SET_PC)。 当然、您可以   自行自定义 BSL_Device_File.h 文件、从而根据您自己的要求构建您自己的自定义 BSL。

    顺便说一下、已经有编译的 USB BSL 映像可供您使用。 更具体地说、要将 USB BSL 映像加载到您的 MSP430F5659、请转到 \Released_BSL_Images\MSP430F665x_Family\USB BSL、您可以找到要编程到 BSL 闪存(BSL_version.txt)的 USB BSL 映像以及基于 RAM 的 USB BSL 映像(RAM_BSL_version.txt)。

    TI 已经正式明确区分了 BSL 版本、请相应地使用正确的版本。

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

    非常明确的答案、谢谢!