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.

[参考译文] MSP430F5438A-EP:用于对 MSP430闪存进行编程的命令行接口

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F5438A, UNIFLASH, MSP-GANG, MSP-FET

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1048151/msp430f5438a-ep-command-line-interface-for-programming-msp430-flash-memory

器件型号:MSP430F5438A-EP
主题中讨论的其他器件:MSP430F5438AUNIFLASHMSP-GANGMSP-FET

您好!

我很难获得 TI 为其 MSP430微控制器提供的任何命令行工具来写入或擦除 MSP430F5438A 上受保护的存储器。 如果有任何帮助,将不胜感激。

MSPFlasher (1.3.20.0)

我能够读取和写入主存储器和非保护信息存储器、但我无法擦除受保护的信息存储器(INFOA)或引导加载程序存储器(BSL)。

C:\ti\MSPFlasher_1.3.20>MSP430Flasher.exe -u -b -e ERASE_ALL
* -----/|-------------------------------------------------------------------- *
*     / |__                                                                   *
*    /_   /   MSP Flasher v1.3.20                                             *
*      | /                                                                    *
* -----|/-------------------------------------------------------------------- *
*
* Evaluating triggers...done
* Checking for available FET debuggers:
* Found USB FET @ COM6 <- Selected
* Initializing interface @ COM6...done
* Checking firmware compatibility:
* FET firmware is up to date.
* Reading FW version...done
* Setting VCC to 3000 mV...done
* Accessing device...done
* Reading device information...done
* Erasing device memory...done
*
* ----------------------------------------------------------------------------
* Arguments   : -u -b -e ERASE_ALL
* ----------------------------------------------------------------------------
* Driver      : loaded
* Dll Version : 31400000
* FwVersion   : 31200000
* Interface   : TIUSB
* HwVersion   : U 3.0
* JTAG Mode   : AUTO
* Device      : MSP430F5438A
* EEM         : Level 7, ClockCntrl 2
* Erase Mode  : ERASE_ALL
* VCC OFF
* ----------------------------------------------------------------------------
* Powering down...done
* Disconnecting from device...done
*
* ----------------------------------------------------------------------------
* Driver      : closed (No error)
* ----------------------------------------------------------------------------
*/

INFOA 和 BSL 存储器都保持不变。

UniFlash (6.2.0)

与 MSPFlasher 相同—能够读取和写入主存储器和非受保护的信息存储器、但仍然无法触摸 INFOA 或 BSL。 我首先尝试使用 GUI 执行此操作:

深入探究之后、我发现 UniFlash 也提供了命令行选项。 我使用 GUI 导出了"Standalone Command Line"软件包(以及上图所示的相同设置)、运行"one_time_setup.bat"文件、然后尝试执行以下命令:

C:\ti\uniflash_windows>dslite.bat --mode flash -c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/settings.ufsettings -s VerifyAfterProgramLoad="No verification" --before Erase
Executing the following command:
> "C:\ti\uniflash_windows\ccs_base\DebugServer\bin\DSLite" flash -c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/settings.ufsettings -s VerifyAfterProgramLoad="No verification" --before Erase

For more details and examples, please visit processors.wiki.ti.com/.../UniFlash_v4_Quick_Guide

info: MSP430: Performing Mass Erase...
info: MSP430: Finish Erasing

和以前一样、INFOA 和 BSL 存储器仍然存在。

Code Composer Studio

我完全能够使用具有以下项目设置的 CCS GUI 来写入和读取 INFOA 和 BSL:

然后使用 GUI 顶部的"Flash"工具栏图标。 CCS 清楚地知道 UniFlash/MSPFlaser 不是私有的东西。

--

我花了很多时间深入了解这些命令行工具及其文档、但无法找出这一个。 我本来会获取 MSPFlasher 源代码并亲自逐步执行/修补该工具、但不会编译包含该工具的 Visual Studio 项目(缺少库/未解析符号)。

我们非常感谢您对此提供的任何进一步见解/帮助。 我真的需要使用命令行界面来自动化此过程、因为使用 GUI 手动编程这些人员只是在您需要完成数十万任务时无法很好地进行扩展。

此致、
km

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

    BSL 和 INFOA 只是闪存段、就像主存储器中的任何其他闪存段一样。 可以通过向 RAM 寄存器写入正确的值来解锁它们。 因此、如果任何 TI 软件 PC 端能够写入目标器件 RAM、则可以通过这种方式解锁 BSL 和信息 A。

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

    您好、Zrno、

    感谢您的回复、感谢您的支持。 我想擦除 INFOA 和 BSL 闪存段并对其进行编程-这些命令是否看起来是他们应该执行的任务?

    MSPFlasher:

    C:\ti\MSPFlasher_1.3.20>MSP430Flasher.exe -u -b -e ERASE_ALL

    UniFlash:

    C:\ti\uniflash_windows>dslite.bat --mode flash -c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/settings.ufsettings -s VerifyAfterProgramLoad="No verification" --before Erase

    使用设置文件:

    {"TI MSP430 USB1/MSP430":{"MSP430UnlockBSLMode":true,"MSP430DownloadOptions":"Erase main, information and protected information memory"}}

    [引用 userid="141128" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1048151/msp430f5438a-ep-command-line-interface-for-programming-msp430-flash-memory/3878480 #3878480"]因此、如果任何 TI 软件 PC 端能够写入目标器件 RAM、则可以通过这种方式解锁 BSL 和信息 A。

    我知道对 INFOA 和 BSL 闪存存储器的访问应该是一项简单的任务、但是命令行工具(或者我对命令行工具的调用)似乎并不能完成这项工作。 您能否提供一个示例、说明如何使用 MSPFlasher 或 UniFlash 来实现此目的?

    此致、
    km

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

    您好!

    查看 MSPFlasher 函数'StdUseCase_Eras'源代码(StdUseCase.cpp、第843行):

    void StdUseCase_Erase( sDefOptions_t* sOpt )


    不调用:
    MSP430_Configure( LOCKED_FLASH_ACCESS, ENABLE );


    或:
    MSP430_Configure( UNLOCK_BSL_MODE, ENABLE );


    正如针对'M430_Eras'的函数声明所建议的那样、应该有:
      /**
      \fn    STATUS_T MSP430_Erase(int32_t type, int32_t address, int32_t length);
    
      ...
    
      \note    5. Some device families have a locked INFO memory segment (INFO A).
                  MSP430_Configure(LOCKED_FLASH_ACCESS,...) can be used to unlock/lock this segment.
                  Having parameter 'type' set to ERASE_ALL will erase the complete INFO memory in case
                  the INFO A segment was unlocked prior.
                  Otherwise only INFO segments B, C and D will be erased.
      \note    6. Some device families have a lockable BSL memory segment.
                  MSP430_Configure(UNLOCK_BSL_MODE,...) can be used to unlock/lock this segment.
                  Having parameter 'type' set to ERASE_ALL will erase the complete BSL memory in case
                  the BSL memory was unlocked prior.
    
      ...
    
      */
      DLL430_SYMBOL STATUS_T WINAPI MSP430_Erase( int32_t type, int32_t address, int32_t length );
    


    --

    查看 MSPFlasher 函数'StdUseCase_ReadWrite'的源代码(StdUseCase.cpp、第889行):
    void StdUseCase_ReadWrite( sDefOptions_t* sOpt, sRTE_t* RTE )


    激活'M 430_Configure'来解锁 BSL 和 INFOA (StdUseCase.cpp、线路923、944):
    Ret_Configure = MSP430_Configure( LOCKED_FLASH_ACCESS, ENABLE );
    
    ...
    
    Ret_Configure = MSP430_Configure( UNLOCK_BSL_MODE, 1 );


    我可以从命令行看到列印语句、确认"484M_Configure"正在成功返回:
    * -----/|-------------------------------------------------------------------- *
    *     / |__                                                                   *
    *    /_   /   MSP Flasher v1.3.20                                             *
    *      | /                                                                    *
    * -----|/-------------------------------------------------------------------- *
    *
    * Evaluating triggers...done
    
    ...
    
    * Unlocking BSL memory...done
    * Unlocking Info Memory A...done
    
    ...


    哦、在尝试使用已知良好的闪存映像对 INFOA 进行编程时、使用以下命令:
    C:\ti\MSPFlasher_1.3.20>MSP430Flasher.exe -u -b -n MSP430F5438A -w "C:\km\boardman3.hex"


    INFOA 存储器保持执行命令之前的状态。

    --

    这里似乎有两个问题:

    MSPFlaser 函数'tdUseCase_Eras'缺少对'430_Configure'的调用、以便根据需要解锁 INFOA 和/或 BSL 存储器。
    2.调用'M 430_Configure'(例如 MSP430_Configure (UNLOCK_BSL_MODE、ENALBE)或 MSP430_Configure (LOCK_FLASH_ACCESS、ENABLE))似乎成功,但在解锁 INFOA 和 BSL 存储器时仍然失败。

    也许 MSPFlaser v1.3.2中打包的'M 430.dll'库已经过时了? ('d4 m430.dll' v3.14.0在此软件包内。) 或者、也许在'MSP430F5438A 器件'定义内有一些阻止闪存解锁的东西? 很难在不查看源代码的情况下说。

    此致、
    km

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="435570" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1048151/msp430f5438a-ep-command-line-interface-for-programming-msp430-flash-memory ]\n 您对此有任何进一步的见解/帮助、我们不胜感激。 我真的需要使用命令行界面来自动执行此过程、因为使用 GUI 手动编程这些人员只是在您需要完成数十万任务时无法很好地进行扩展。

    这听起来像是生产。 我知道这是另一个工具、但也许 MSP-GANG 会对您有所帮助。 有多种操作模式(交互式、脚本)允许您同时对多个器件进行编程。

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

    好的、我正在尝试这个。

    我有 UniFlash 7.0、MSP430F5438A、MSP-FET (黑色)

    首先、我加载了一个 BSL、以便在该存储器中有一些内容。   

    完成此操作后、我看到以下内容:

    接下来、我确保存在以下设置:

    然后我闪存一个示例程序(闪烁)

    然后、我查看 BSL 存储器:

    对我来说、它似乎工作正常。  您能否尝试 UniFlash 7.0来了解这是否对您有所帮助?

    此致、

    John

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

    尊敬的 James:

    这是一个整洁的工具—感谢您的关注。 在不远的未来需要牢记的事情。

    此致、
    km

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

    尊敬的 John:

    好的、现在我们将讨论! 您似乎无意中发现了这一点-如果您在同一命令内执行程序操作、UniFlash 将仅允许受保护的闪存擦除操作正常工作。

    使用仅针对0x5C00 -> 0x45BFF 范围内闪存字节地址的测试十六进制映像、使用与您所使用的 UniFlash 设置相同的方法、然后单击"Load Image"按钮(而不是"Mach Erase"按钮)将成功擦除 INFOA 和 BSL 闪存区域。

    无论看起来是反直觉的、这都是一种解决方案、可以在 GUI 模式和 CLI 模式下使用 UniFlash。 感谢您的努力和所有回应。 但是、该工具为什么以这种方式运行有充分的理由吗?

    此致、
    km

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

    km、

    我今天无法使用该板。    我应该昨天已经尝试过批量擦除。  可能我可以在不同的设置上重现。

    我希望"批量擦除"擦除主存储器、信息存储器和 BSL 存储器。  该注释表明会这样做。  看起来确实像是一个错误。  我想您之前的一篇帖子中可能遇到了一些问题。  在擦除函数运行时、即使在 GUI 中设置了该标志、UniFlash 也不会设置该标志以允许访问 BSL 存储器。  即、该标志可能仅与下载操作(因为它是该组的一部分)关联、而不与擦除操作关联。

    让我看看我是否可以在不同的430上重现。

    John

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

    好的、我可以在 F5529 LaunchPad 上看到相同的情况。

    加载时擦除按预期进行。  执行批量擦除时、这些区域不会被触摸。

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

    我提交了一个错误来跟踪: https://sir.ext.ti.com/jira/browse/EXT_EP-10607

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

    感谢您的努力、非常感谢您的努力。 这是我名单上一个悬而未决的问题、我很高兴我们最终解决了。 我可以使用"程序"+"擦除"来完成、因此我们在这里都很好。

    此致、
    km

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="435570" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1048151/msp430f5438a-ep-command-line-interface-for-programming-msp430-flash-memory "]我本来会获取 MSPFlaser 源代码并亲自对该工具进行分步操作/修补、但包含该工具的 Visual Studio 项目不会生成(缺少库/未解析的符号)。

    我能够使用 Microsoft Visual Studio Community 2017 v15.9.39构建/调试/修改 MSP430FLASHER v1.3.2、而无需修改 Visual Studio 项目。

    除了安装 Visual Studio、还必须安装 Windows SDK 版本10.0.17134.0、该项目已设置为使用该版本。

    回顾我的浏览器历史记录、下载链接是:

    适用于 Windows SDK 的 download.microsoft.com/.../winsdksetup.exe

    https://download.visualstudio.microsoft.com/download/pr/653e10c9-d650-464b-a0b0-f211bb0c7c32/ced6ef5ff7cd647dd111c6104897480dea3ea29cf024fb7e3b0bc0043096ae0f/vs_Community.exe 以获取 Visual Studio 安装程序。

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

    切斯特、您好!

    您完全正确-首次打开 MSPFlasher MSVC 项目时、默认情况下、它以"x64"版本而不是"x86"版本为目标。 以'x86'构建为目标确实允许我从源代码编译 MSPFlasher、用于调试或发布。 对这种错误肯定表示歉意。

    此致、
    km