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.

[参考译文] MSPM0G3507:尝试在已停用 BSL 的情况下刷写程序

Guru**** 2618835 points

Other Parts Discussed in Thread: MSPM0G3507, LP-MSPM0G3507, SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434737/mspm0g3507-trying-to-flash-program-with-deactivated-bsl

器件型号:MSPM0G3507
Thread 中讨论的其他器件:SysConfigUNIFLASH

工具与软件:

尊敬的 TI 专家:

我将 CCS Theia 与 LP-MSPM0G3507的板载 XDS110调试探针配合使用、使用 MSPM0G3507 (LQFP-48 (PT)(封装))刷写我的定制 PCB。

我的代码运行起来非常正常、只要我没有在 SysConfig 中停用 BSL 调用、就可以调试-配置 NVM:

在"Project Properties"中、 我激活了主函数和非主函数擦除:

现在我尝试调试/刷写时收到以下错误消息:

File Loader: Memory write failed: Flash Programmer: Error, Attempting NONMAIN write without erasing!
GEL: File: C:\Users\MATTHI~1.HEI\AppData\Local\Temp\ti_cloud_storage\wi*********ft.out: Load failed.

当我尝试验证*****时 在 UniFlash 中通过"Verify Image"按钮删除.out 文件我收到以下错误窗口弹出消息:

Error!
File: C:/Users/m*****n/Documents/GIT/Wi****ft/Sandbox.wi***ft.sw.LP-MSPM0G3507/wi****ft/Debug/wi***ft.out: a data verification error occurred, file load failed.

...而控制台输出说:

[6.11.2024, 13:34:21] [INFO] CORTEX_M0P: GEL Output: Memory Map Initialization Complete
[6.11.2024, 13:34:21] [ERROR] CORTEX_M0P: File Loader: Verification failed: Values at address 0x41C0000A do not match Please verify target memory and memory map.

但是、当我点击"Load Image"按钮时、它将固件加载/刷写到我的控制器、一切正常。

请告诉我,验证的问题是什么,为什么我不能通过 CCS Theia 刷写/调试;)

如果您遗漏了部分信息-请随时提问!

我希望我向您提供了您需要帮助的完整信息。

提前感谢!

此致

Matze

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

    尊敬的 Matze:

    您使用的是哪些版本的 SysConfig、CCS Theia 和 MSPM0 SDK? 此处显示的步骤是禁用 BSL 的正确步骤、我不希望这个简单的更改会导致这些错误。 "BSL Enable"复选框是您唯一更改的导致此错误的地方?

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

    CCS Theia 版本:1.4.1.1.

    默认与代码 API:1.85.1

    在哪里可以找到 SysConfig 和 MSPM0 SDK 的版本?

    是的、这个复选框是我唯一更改的内容。 (以及项目属性中的非主擦除。)

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

    如果您右键点击工程名称、导航到属性、然后查看"Dependencies"选项卡、即可找到这些版本。

    CCS Theia 版本看起来不错、感谢您提供的信息。

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

    感谢您发送编修。

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

    没问题。  

    到目前为止、我在这里看不到问题、您的 SDK、Theia 和 SysConfig 版本都是新版本。 我在最后用 LaunchPad 尝试了这种方法、效果很好、唯一的区别是我使用的是 CCS Theia 1.5.0、但您的版本应该不会遇到任何问题。

    在您没有指示调试器擦除 MAIN 和 NONMAIN 时、实际上还会出现错误消息、但您已指示您正在擦除 MAIN。 这听起来非常简单、但是-当您更改此设置时、您选择了"应用"和"关闭"、对吧?

    在 SysConfig 右上角的器件视图中、您是否已将器件更新为当前目标(48引脚 LQFP)?

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

    我刚刚更新到 CCS Theia 1.5.1.3并重试。

    还尝试使用 LP-MSPM03507板载 MSPM03507 64引脚控制器(通过 J101连接 )。

    得到相同的误差。 无论我是否激活了工程属性中的"ERASE MAIN 和 NONMAIN"复选框。

    您选择在更改此设置时应用并关闭、对吗?

    是的、在激活"ERASE MAIN 和 NONMAIN"复选框后、我在工程属性中选择"SAVE AND CLOSE"。

    [报价 userid="489120" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434737/mspm0g3507-trying-to-flash-program-with-deactivated-bsl/5500800 #5500800"]在 SysConfig 右上角的设备视图中、您是否已将设备更新为当前目标(48引脚 LQFP)?[/QUOT]

    是的、我选择的控制器与 PCB 上的控制器相同:

    这是我唯一需要选择控制器/封装的地方、对吧?

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

    嗯...  

    是的、这是您需要更改软件包的唯一位置。  

    您能试着从我们的 SDK 中举个例子、理想情况下是 GPIO 切换输出等简单的东西、对其进行刷写以确保其正常工作、然后通过添加配置 NVM 实例并禁用 BSL 来仅更新此设置、并查看是否出现相同的错误? 此时、我想知道应用程序代码中是否缺少可能导致此问题的内容。

    另一个问题是您目前到底在使用什么软件、它是我们的 driverlib 示例之一还是您已经对其进行了一些更改的自定义软件?

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

    driverlib 示例中的 GPIO 切换输出、将引脚更改为我的 PCB、添加了配置 NVM 实例并禁用 BSL 会完全正常工作、并且仍切换 LED。

    我的自定义代码是经过一些自定义修改的空白 ticlang 项目。

    我将尝试一步一步地添加相同的修改。

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

    但是、当我对源代码执行相同的步骤时、我在调试输出中会收到以下错误消息:

    File Loader: Memory write failed: Flash Programmer: Error, Attempting NONMAIN write without erasing!
    GEL: File: C:\Users\MATTHI~1.HEI\AppData\Local\Temp\ti_cloud_storage\wiproiii_facelift.out: Load failed.

    ...即使我在项目属性的调试选项中激活了非主擦除。

    但是...也许这有助于找到问题。

    我对.out 文件的调用感到惊讶  

    C:\Users\m****n\AppData\Local\Temp\ti_cloud_storage

    而不是从我的项目目录的 Debug-Folder 中进行。 这或许有帮助。

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

    还可以…… 现在它工作过一次。。。 我不知道为什么。。。 然后我尝试再次采取相同的步骤,它不会再起作用。

    我做了3个小步骤:

    1. 选中项目属性中的"ERASE MAIN 和 NONMAIN PRO用 Sectors Only"。
      1. 构建、调试、一切顺利
    2. 将"Configuration NVM"添加到 SysConfig 并选中"Accept config risks"
      1. 构建、调试、一切顺利
    3. 取消选中"Enable BSL"
      1. 构建、调试、一切顺利

    但是... 如上所述。 当我再次执行所有这些步骤时、我总是收到错误消息:

    File Loader: Memory write failed: Flash Programmer: Error, Attempting NONMAIN write without erasing!
    GEL: File: C:\Users\M****I\AppData\Local\Temp\ti_cloud_storage\wi****ft.out: Load failed.

    请帮助我!!!

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

    现在我正面临另一个问题!

    我导入了 GPIO_toggle_output_LP_MSPM0G3507_nortos_ticlang

    当我...

    1. 选中工程属性中的"erase main and non-main necessary sectors"、
    2. 保存并关闭项目属性
    3. 再次打开工程属性。

    再次检查"ERASE MAIN MEMORY ONLY"。

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

    尊敬的 Matze:

    关于您之前的屏幕截图中显示的.out 文件、显示的文件是否与您的项目具有相同的名称? 我想返回并确认 CCS 正在将不正确的.out 文件刷写到您的器件中、因为您执行的操作正确、所以它应该会将调试文件夹中的文件刷写到器件中。

    我需要查看如何强制使用 debug 文件夹中的配置文件、但感到惊讶的是它不会自动发生。 现在、您可以做的是启动无工程调试会话、然后手动将正确的.out 文件刷写到您的器件中、并查看这是否支持正确的行为。

    这仅在禁用 BSL 时才会发生这一事实也是奇怪的。 您能否启用 BSL 来检查这里使用的.out 文件、然后再次禁用以检查只有使用了错误的文件?

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

    尊敬的 Matze:

    次要跟进-我开始怀疑这是 IDE 级别的问题、而不是 MSP。 我不停地询问、而且被告知在某些最新版本的 CCS 中、更改设置后需要在更改后按 Enter 键。 请尝试执行此操作、然后保存。

    此外、我们应该在下一个 CCS 版本中修复此问题、一旦过期、就应停止不断点击 Enter。

    我还想执行另一项检查、您能否在项目属性中转到"ARM Hex utility"选项卡、然后为项目生成 TI-TXT 输出文件。 那么、您能否将存储器区域0x41C00000粘贴到此处、以便我进行检查? 此处重要说明:如果您使用 SWD 密码、则应在将存储器映射粘贴到此处之前对其进行更改、因为我不希望其意外曝光。

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

    你好、迪伦!

    非常感谢您的回答!

    关于先前屏幕截图中显示的.out 文件、所示文件是否与项目名称相同? 我想返回并确认 CCS 正在将不正确的.out 文件刷写到您的器件中、因为您执行的操作正确、那么它应该会将调试文件夹中的.out 文件刷写到器件中。[/QUOT]

    它确实具有相同的名称、当我将它与调试文件夹中的文件一起放入"WinMerge"之类的 diff 工具时、两个文件都是相同的。

    启动无项目调试会话、然后手动将正确的.out 文件刷写到您的设备中

    当我尝试无项目调试并"run"-"load"-"load program"-"correct .out file"时、我收到以下错误消息:

    GEL: Target must be connected before calling the function
    Target must be connected before calling the function

    当我执行无项目调试时、"旧程序"是否仍在 MSP 上运行? 执行此操作时、我的 LED 仍在闪烁。

    我尝试了与 Reset_Auto 之间, LED 不再闪烁,但我得到与以前相同的错误消息:

    GEL: Target must be connected before calling the function
    Target must be connected before calling the function

    ...并且无论我是使用还是不使用 syscfg 中的"configuration NVM"构建、都会出现此错误消息。

    但是、当我结束无项目调试评估并仅调试/闪存我的源代码(没有配置 NVM)时、它会很好地工作。 因此连接必须良好。

    您能否启用 BSL 来检查此处使用的.out 文件、然后再次禁用来检查使用的文件是否错误?

    当我在"Debug output"选项卡中收到错误消息时、我只看到了使用的文件/目录。 当调试/闪存没有出错(因为我在 syscfg 中删除了配置 NVM)时、IDE 不会显示使用了哪个文件。 我可以在哪里看到、使用哪个目录的文件?

     

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我开始怀疑这是 IDE 级问题、而不是 MSP.

    这也是我所假设的。

    更改后按回车键。 请尝试执行此操作、然后保存。

    按"Enter"键将自动保存和关闭项目属性。 我的问题没有变化。

    我还想再做一项检查、可否转至项目属性中的 ARM Hex 实用程序选项卡、然后为项目生成 TI-TXT 输出文件? 那么、您能否将存储器区域0x41C00000粘贴到此处、以便我进行检查? 此处重要说明:如果您使用的是 SWD 密码、则应在将存储器映射粘贴到此处之前对其进行更改、因为我不希望它意外暴露。[/QUOT]

    我会在稍后将结果发布在单独的帖子中。

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

    尊敬的 Matze:

    这里要介绍几个操作:  

    1) 1)是的、当您启动无项目调试时、同一项目应该会继续在器件上运行-因此、如果有闪烁的 LED、一旦您在无项目调试中按 Play、它应该会继续闪烁

    2)如果这两个文件是相同的,我想这意味着你是以某种方式把新生成的输出文件放在那里,并使用它。 这没问题、但您可能需要在每次重新编译时仔细检查输出文件是否正确更改-您可以将 CCS 工程调试选项卡中的输出文件与您可以看到器件中正在刷写的输出文件进行比较。

    3) 3)尝试启动无工程调试时出现的错误表示目标器件未连接-请确保在尝试连接时已使用调试器将目标器件连接到 PC。 我看到您提到可以在不更改配置的情况下成功刷写器件、这也很奇怪。

    4)要检查要将哪个文件刷写到器件中、您可以观察 CDT 构建控制台(构建完成后该控制台会消失、但您可以看到.out 文件名出现在日志中)、或者您可以点击 CCS 中闪存按钮旁边的下拉箭头、然后选择要加载到器件中的,out 文件、以确保加载所需的文件。

    5)作为导出存储器的替代方法、您还可以使用调试器连接到设备、然后点击"View"->"Memory Browser"。 输入地址0x41C00000、然后可以从此处复制粘贴。 您也可以使用此窗口指定将地址范围保存到计算机上的文件中。 这有几个选项。

    一般来说、面对所有遇到的奇怪问题、我倾向于说您应该尝试重新安装 CCS Theia 并重新导入工程。 尽管使用了我们所有工具的最新版本、但我们尝试的许多功能都无法按预期运行。 如果可能、请也尝试一下、因为这些非常常见的功能对我们来说是无效的。

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

    尊敬的 Dylan:

    感谢您的回答!

    [报价 userid="489120" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434737/mspm0g3507-trying-to-flash-program-with-deactivated-bsl/5536319 #5536319"]1)是的、在开始无项目调试时、同一项目应该继续在器件上运行-因此、如果有一个闪烁的 LED、一旦您在无项目调试中按 Play、该项目应该会继续闪烁

     至少有一件事是有效的,正如预期的

    [报价 userid="489120" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434737/mspm0g3507-trying-to-flash-program-with-deactivated-bsl/5536319 #5536319"]2)如果两个文件是相同的、我猜这意味着您将新生成的输出文件放在那里并使用它。 这没问题、但您可能需要在每次重新编译时仔细检查输出文件是否正确更改-您可以将 CCS 项目调试选项卡中的输出文件与您可以看到器件中正在刷写的输出文件进行比较。[/QUOT]

    但为什么这个文件放在其他地方呢? 我在哪里可以看到或更改目录或类似内容?

    请向我解释一下、我如何使用 CCS 项目调试选项卡来比较.out-files。 这个调试选项卡是这样的:

    3)尝试启动无工程调试时出现的错误表明您的目标设备未连接-请确保您尝试连接时已使用调试器将目标设备连接至 PC。 我看到您提到您可以在不更改配置的情况下成功刷写器件、这也很奇怪。

    因为我可以成功刷写而无需更改任何内容、我猜目标器件已正确连接。 是的。。。 奇怪

    4)要检查要刷写到器件中的文件、您可以观察 CDT 构建控制台(构建完成后该控制台会消失、但您可以在日志中看到.out 文件名显示)、或者您可以点击 CCS 中闪存按钮旁边的下拉箭头、然后选择、OUT 文件加载到您的器件上、以确保您要加载到器件。

    您是指 CDT 构建控制台的此窗口吗?

    我不知道 CCS Theia 中有任何闪烁按钮。 你在谈论"旧的" eclipse CCS 12吗? 或者您在谈论 CCS theia 中的 Run-load-load 程序吗?

    5)作为导出内存的另一种方法、您也可以使用调试器连接至设备、然后点击 View->Memory Browser。 输入地址0x41C00000、然后可以从此处复制粘贴。 您也可以使用此窗口指定将地址范围保存到计算机上的文件中。 这有几个选项。

    @41C00000
    01 00 00 00 BB AA BB AA BB AA BB AA FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF BB AA
    BB AA BB AA FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    @41C00050
    FF FF FF FF FF FF FF FF FF FF FF FF C3 DA 79 18
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    @41C000A0
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    q

    我复制粘贴了3行。 这就够了吗? 如果你需要更多,我可以复制粘贴更多;)

    通常鉴于遇到的所有奇怪问题、我倾向于说您应该尝试重新安装 CCS Theia 并重新导入您的项目。 尽管使用了我们所有工具的最新版本、但我们尝试的许多功能都无法按预期运行。 如果可能、请尝试一下、因为这些非常常见的功能对我们来说不起作用。

    是的、我会尝试这样做!

    非常感谢您的帮助!

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

    要继续执行第二项、我能想到的唯一特意执行此操作的设置是"Build"->"post-build Step"下的工程属性中。 您可以选中此处、但默认情况下不包含该项、您需要手动应用此项。 您可以检查上面的设置以查看。 此外、为了进一步阐明我在"调试"选项卡中比较的含义、我打算将项目调试文件夹中包含的.out 文件与放置在 C:\Users\M**I\AppData\Local\Temp\ti_cloud_storage\中的文件进行比较。 我说的是使用 beyondcompare 之类的东西来比较这些东西。 工程内的调试文件夹是工程应引用并刷写到器件中的文件夹。

    对于第4步、在 CCS 教程中、看起来好像刚被标记为"Output"。 糟糕的地方。 此外、对于闪存按钮、正确的选择不在 CCS theia 中。 等效操作是启动无源调试、然后转到选项卡"Run"->"load"->"Load program"

    对于第5项、您粘贴的章节就足够了、在我的视图中这看起来很正常。 谢谢您的参与。

    对于第6个问题、请告诉我重新安装后问题是否仍然存在、我们在这里看到很多奇怪的行为。

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

    2.

    构建下的项目属性->编译后处理步骤

    未输入自定义编译步骤、所有内容均处于空白默认状态。

    对于数字4、在 CCS 教程中、似乎只标记了"Output"。 糟糕的地方。 此外、对于闪存按钮、正确的选择不在 CCS theia 中。 同样的方法是启动无源调试、然后转到选项卡"run"->"load"->"load program"

    它显示并使用 app-data-folder 而不是 debug 文件夹。

    对于数字6、请告诉我重新安装后是否仍然存在此问题、我们在这里看到了许多奇怪的行为。

    我重新安装了 CCS Theia 1.5.1、我遇到了与以前相同的问题。

    我现在将切换回 CCSv12并希望它在那里更好地工作。

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

    尊敬的 Matze:

    在我看来、你所做的一切都和我预期的一样、而且仍然会遇到一些奇怪的错误。 到目前为止、我想检查的都不是解决问题。 我将把这篇文章转交给我们的软件工具部门、看看他们这里是否有一些帮助、也许他们可以指向您的安装或设备中可能会导致您的设置无法正常工作的内容。

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

    我安装了 CCSv20、一切都很顺利。 看起来 CCS Theia 正在停产或推迟。 这似乎是正确的,因为我面临如此奇怪的问题。

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

    我们在基于 VSCode 支持 CCS eclipse 和 CCS 时使用了"Theia"品牌。 CCSv20是 CCS Eclipse 停产后基于 VSCode 的 CCS 的第一个主要版本、因此现在品牌更名为仅 CCS。 未来版本的 CCS 仍将删除 Theia、但它是相同的基于 VScode 的环境。

    感谢您发布您能够解决问题的消息、我确实将此切换到了工具组织、但他们可能会忽略此问题、因为您已找到解决方案。

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

    非常感谢您的努力和帮助!