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.

[参考译文] MSPM0G5187:申请有关通过 TinyUSB 刷写 MSPM0G5117 DFU 的详细指导

Guru**** 2918810 points

Other Parts Discussed in Thread: MSPM0G5117, MSPM0G5187, UNIFLASH

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

https://e2e.ti.com/support/logic-group/logic/f/logic-forum/1647131/mspm0g5187-request-for-detailed-guidance-on-mspm0g5117-dfu-flashing-via-tinyusb

器件型号: MSPM0G5187
主题中讨论的其他器件: MSPM0G5117UNIFLASH

您好、  

我们需要通过 MSPM0G5117 MCU(与 MSPM0G5187 属于同一系列)上的 TinyUSB 刷写固件。

按照当地 TI 团队的建议、我们添加了 Config NVM 设置并相应地修改了 BSL 调用引脚配置(随附了参考映像)。 此外、在下:

Project→Properties→Debug

在刷写代码之前、启用了主存储器和非主存储器擦除的复选框。

刷写后、我们遵循以下 BSL 进入序列:

  1. 按住 BSL 按钮
  2. 按住重置按钮
  3. 1 秒后释放复位
  4. 2 秒后释放 BSL

但是、COM 端口不会变得可见、系统也未按预期进入 DFU 模式。

根据以下位置提供的自述文件:

SDK→TinyUSB→BSL→Readme.html

我已经完成了上述设置步骤、包括 Zadig 和 dfu-util 的安装。

在我们的情况下、必须修改 Config NVM、因为默认情况下、BSL 模式是使用高电平信号触发的。 但是、根据我们的硬件设计、触发器必须在低电平条件下工作、这就是需要更改 Config NVM 的原因。

在此阶段、.out 和.bin 文件均已成功生成、我们想继续直接对 MSPM0 器件进行 DFU 刷写。

目前、我们面临两个主要问题:

  1. 进入 BSL/DFU 模式
    • 在配置的按钮序列后、器件无法可靠地进入 DFU 模式。
    • BSL 调用序列之后未检测到 COM 端口。
  2. 在没有 XDS110 调试器的情况下刷写固件
    • 我们的要求是直接通过 TinyUSB/DFU 刷写固件、而无需使用 XDS110 调试接口。
    • 我们需要确认独立 USB 刷写的正确过程和支持方法。

此外、我们还要求在以下几点提供指导:

  • 刷写所需的正确 DFU 命令
  • 准确的执行顺序/刷写序列
  • 直接 TinyUSB 刷写的推荐工具或简化方法
  • 验证当前 Config NVM 设置是否适用于 DFU 操作

由于器件预计已经处于 DFU 模式、因此如果您能分享详细的分步刷写过程、以及在此过程中可用的任何参考脚本或工具、会非常有用。

期待您在解决此问题时提供指导和支持。


image.png

image.png

生成中断  
image.png

在 BSL 调用序列之后  
image.png

 

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

    嗨、Ramanathan、

    按照当地 TI 团队的建议、我们添加了配置 NVM 设置、并相应地修改了 BSL 调用引脚配置(随附参考图像)。 此外、在:

    无需为 BSL 模式配置 NVM。 我们默认启用 BSL/DFU 模式。 请执行恢复出厂设置以将器件恢复为空白。

    进入 BSL/DFU 模式
    • 在配置的按钮序列后、器件无法可靠地进入 DFU 模式。
    • BSL 调用序列之后未检测到 COM 端口。
    [/报价]

    此流程正确、但无需配置 NVM。

    按下按钮序列后、用户应该会找到显示在“Other Device“(其他器件)中的器件固件升级 (DFU)

    在不使用 XDS110 调试器的情况下刷写固件
    • 我们的要求是直接通过 TinyUSB/DFU 刷写固件、而无需使用 XDS110 调试接口。
    • 我们需要确认独立 USB 刷写的正确过程和支持方法。
    [/报价]

    请查看以下文档、其中详细说明了用户如何开始使用 DFU 进行刷写:

    TI\mspm0_sdk_2_10_00_04\tools\bsl\dfu_host_utility

    [引述 userid=“676371“ url=“~/support/logic-group/logic/f/logic-forum/1647131/mspm0g5187-request-for-detailed-guidance-on-mspm0g5117-dfu-flashing-via-tinyusb
    • 刷写所需的正确 DFU 命令
    • 准确的执行顺序/刷写序列
    • 直接 TinyUSB 刷写的推荐工具或简化方法
    [/报价]

    DFU 的自述文件中对此进行了详细说明。

    验证当前配置 NVM 设置是否对于 DFU 操作是正确的
    [/quote]

    MSPM0G5117 默认启用 DFU、通常我们不需要任何 NVM 设置。

    除非硬件原理图使用其他 BSL/DFU 调用引脚或极性(默认为 PA18,采用高极性调用)。

    B.R.

    Sal  

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

    尊敬的 Sal Ye:  

    根据 SDK 自述文件中提供的说明、我们 .txt 使用 TI Clang 编译器生成了该文件。 但是、代码没有在器件上刷写。

    器件成功进入 BSL 模式、但刷写过程失败。

    为了便于您参考、我们随附了日志文件。
    请仔细查看、帮助我们解决问题。

    e2e.ti.com/.../dfu_5F00_log.txt

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

    嗨、Ramanathan、

    我尝试了 hostutility_interface.exe 和所有的工作正常:

    Welcome to Interface Utility!
    Performing initial setup...
    Checking device connection...
    data written to output file: image.dfu
    the output data written in image.dfu
    
    Getting device info...
    data written to output file: image.dfu
    the output data written in image.dfu
    
    output file output/device_info.txt
    the send staus is 1
    Bin file path : output/readback.bin
    Output file path : output/device_info.txt
    Hex data of given .bin file has been written to output/device_info.txt
    Initial setup complete.
    
    Enter the choice based on the command mapping shown below:
    1: Program Device
    2: Readback Memory
    3: Standalone Verification
    4: Mass Erase
    5: Get Device Info
    6: Factory Reset
    7: Flash Range Erase
    8: Start Application
    9: Unlock BSL
    10: Toggle logs (currently OFF)
    11: Toggle send file (currently ON)
    12: Calculate file checksum
    0: Exit
    Choice: 9
    Password file (.txt) [password.txt]: inputs/sample_password.txt
    writing to file firmware_0_21.dfu with address 0
    File written successfully: firmware_0_21.dfu
    sending file: firmware_0_21.dfu
    
    Do you want to continue? (y/n): y
    
    Enter the choice based on the command mapping shown below:
    1: Program Device
    2: Readback Memory
    3: Standalone Verification
    4: Mass Erase
    5: Get Device Info
    6: Factory Reset
    7: Flash Range Erase
    8: Start Application
    9: Unlock BSL
    10: Toggle logs (currently OFF)
    11: Toggle send file (currently ON)
    12: Calculate file checksum
    0: Exit
    Choice: 1
    Input file (.txt or .bin) [firmware.txt]: inputs/test_firmware.txt
    Enable checksum validation? (y/n): y
    Enter expected checksum (hex format, e.g., 0x1234ABCD or 1234ABCD, or press Enter to skip):
    writing to file firmware_0_20.dfu with address 0
    File written successfully: firmware_0_20.dfu
    sending file: firmware_0_20.dfu
    DFU download may have failed. See debug/dfu_log.txt for details.
    writing to file firmware_0_20.dfu with address 0
    File written successfully: firmware_0_20.dfu
    sending file: firmware_0_20.dfu
    
    Do you want to continue? (y/n):
    

    我建议您首先尝试这种方法、看看您的设置中是否有任何问题。

    请注意、在执行任何读取/编程行为之前、用户需要使用密码解锁 BSL。

    B.R.

    Sal

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

    尊敬的 Sal Ye:

    感谢您的答复。

    测试程序后、我面临以下问题:

    1. 在刷写过程中、操作会在中间停止。 为了供您参考、我附上了一张图片。

    根据您分享的说明、我按照以下 DFU 顺序操作:

    • 已进入 DFU 模式

    • 已解锁的 BSL

    • 输入样例密码

    • 密码已接受

    • 使用该 .bin 文件启动代码闪存 (128KB)

    但是、发送 .bin 文件后、刷写过程会卡住。 请分享正确的刷写过程并指导我如何解决此问题。

    1. 在另一次刷写尝试期间、该过程再次在中间停止。 之后,当我尝试再次进入 DFU 模式时,我开始得到错误: MSPM0 core failed.

    请告诉我如何从该问题中恢复。 我也尝试使用 CCS、但同样的问题仍然存在。

        3.与 .bin .txt 您之前分享的刷新过程类似、共享文件刷新过程。

    还将指导我如何生成 .txt .bin CCS 编译文件或通过 CCS 编译生成文件。 目前 、CCS 仅生成该 .out 文件、我正在使用 PowerShell 命令手动转换它。 请分享建议的转换过程和所需的工具/命令。

    MSPM0 内核失败:

    debug_upload_log FYI:

    e2e.ti.com/.../dfu_5F00_upload_5F00_log.txt

    output/*.bin:

    此致  
    RAM

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

    HI RAM、

    我是 OOO、直到下一个星期二。 当我回到办公室时、我会检查一下。

    不过,我最初觉得您的固件有一些问题 — 使用 SWD 接口进行闪存时、此固件是否可以正常工作?

    B.R.

    Sal

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

    您好、  
    是的、当使用 XDS110 调试器进行刷写时、固件工作正常。 到目前为止、当地 TI 团队已经指导并验证了完整的流程。

    此致、  
    RAM

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

    尊敬的 Sal:

    您能否建议使用任何方法来 popery 生成可以刷写的.bin 文件?

    观察结果是、通过 Uniflash 刷写十六进制文件时正常工作、但将非 main 统治转换为 bin 后刷写后会损坏。

    我们使用 objcopy 库转换文件。 下面是正在使用的命令 :  

    “D:\GAPE\9 Code_Composser 2019-Q4-Major\arm-none-eabi\bin\objcopy.exe“-O binary --gap-fill 0xFF --pad-to 0x00020000 -j .text -j .rodata -j .data -j .cinit -j .const -j .init_array -j .interrupts “Fcode.out““firmware2505.bin“

    此致、

    Megh  

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

    嗨 Megh、Ramanathan、

    请在下面查看我的评论:

    如何在 CCS 中生成 hex/txt 文件

    请参阅以下指南: https://www.ti.com/lit/ug/slaaed1g/slaaed1g.pdf 

    2.如何从连接的 M0 内核恢复设备失败

    请参阅以下指南: https://www.ti.com/jp/lit/ug/slaaeo4/slaaeo4.pdf 

    如何使用 DFU 对以下项目进行编程:

    我按照相同的方法编写完整的 128KB 固件而不出现任何问题:

    测试固件: test_firmware.txt (也许您可以重复尝试此文件)

    您能否再次确认用于 DFU 部署的版本?

    我使用的是:  

    B.R.

    Sal

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

    Megh、

    对于非主固件、我认为存在一些问题。

    我看到我这边也失败了、包括 txt 格式。 BIN 格式不支持与内部团队进行检查后进行非主编程。

    我稍后会测试 txt 格式流程、包括 main+nonmian 程序和反馈、当我有一些进展时会进行测试。

    B.R.

    Sal

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

    嗨 Megh、Ramanathan、

    请通过 DFU 接口查看我有关 main+nonmain 程序流的更新:

    1.通过 PA18 拉高并复位(或其他 DFU 调用流程)进入 DFU 模式

    2.使用密码文件解锁 DFU

    3.执行恢复出厂设置以擦除 MAIN 闪存区域 [注意:恢复出厂设置后、MCU 必须保持在 DFU 模式、直到写入新的非主固件。 如果发生复位或断电、MCU 将由于空非主配置而进入锁定状态、并且无法恢复]

    4、仅使用 nonmain.txt 文件 进行编程[注意:在写入 nonmain.txt 文件之前、始终执行恢复出厂设置(或对非主区域执行闪存范围擦除)、否则 MCU 可能会在编程后进入锁定状态!]

    5.编程成功后、使用 main.txt 文件进行编程(因为它执行恢复出厂设置命令,MAIN 闪存区域准备好进行编程、无需另一个擦除命令]

    6.完成程序

    现在、当同一 txt 文件中编写 main+nonmain 程序时、DFU 主机工具存在一些问题、我发现当编写 main+nonmain 程序时它突然存在。 我已向内部团队报告这些问题、以进一步消除疑虑。

    发生这种情况时、请按照以下指导进行恢复(注意:必须在恢复之前保持 MCU 不会复位、否则 MCU 将被永久锁定)

    1.重新打开 hostutility_interface.exe。

    2.用密码解锁 DFU

    3.恢复出厂设置

    4.对 nonmain.txt 文件进行编程以恢复非主配置

    5.现在 MCU 可以复位或断电。

    B.R.

    Sal

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

    尊敬的 Sal:

    感谢您的答复。

    我们能否与客户进行快速通话来帮助他。 以下是最新状态。

    1.成功生成.bin 文件而无需进行非 main 更改  
    2.成功 通过 UNIFLASH 刷写它。
    3、应用程序按预期使用 uniflash 工作。
    4.尝试使用 DFU 工具刷新 devcie 时出现 belwo 错误。  

    根据您的说明、.bin 文件已成功创建、文件大小为 123KB。

    之后、我执行了相同的刷写过程;但未成功刷写代码。 在此过程中、在校验和验证之后、该操作在没有故障报告的情况下退出。
    在日志中、下载仍然是 0%。  

    此致、
    Megh  

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

    尊敬的 Megh:

    我想 TXT 文件应该起作用。

    我还在我这边测试 bin 文件,它与下面的接口日志一起工作,请参阅我生成的流程,我看到文件名的命令,路径与我的路径不同,下面是参考:

    Welcome to Interface Utility!
    Performing initial setup...
    Checking device connection...
    data written to output file: image.dfu
    the output data written in image.dfu
    
    DFU download may have failed. See debug/dfu_log.txt for details.
    Getting device info...
    data written to output file: image.dfu
    the output data written in image.dfu
    
    output file output/device_info.txt
    the send staus is 1
    Bin file path : output/readback.bin
    Output file path : output/device_info.txt
    Hex data of given .bin file has been written to output/device_info.txt
    Initial setup complete.
    
    Enter the choice based on the command mapping shown below:
    1: Program Device
    2: Readback Memory
    3: Standalone Verification
    4: Mass Erase
    5: Get Device Info
    6: Factory Reset
    7: Flash Range Erase
    8: Start Application
    9: Unlock BSL
    10: Toggle logs (currently OFF)
    11: Toggle send file (currently ON)
    12: Calculate file checksum
    0: Exit
    Choice: 9
    Password file (.txt) [password.txt]: inputs/sample_password.txt
    writing to file firmware_0_21.dfu with address 0
    File written successfully: firmware_0_21.dfu
    sending file: firmware_0_21.dfu
    
    Do you want to continue? (y/n): y
    
    Enter the choice based on the command mapping shown below:
    1: Program Device
    2: Readback Memory
    3: Standalone Verification
    4: Mass Erase
    5: Get Device Info
    6: Factory Reset
    7: Flash Range Erase
    8: Start Application
    9: Unlock BSL
    10: Toggle logs (currently OFF)
    11: Toggle send file (currently ON)
    12: Calculate file checksum
    0: Exit
    Choice: 4
    data written to output file: image.dfu
    the output data written in image.dfu
    
    
    Do you want to continue? (y/n): y
    
    Enter the choice based on the command mapping shown below:
    1: Program Device
    2: Readback Memory
    3: Standalone Verification
    4: Mass Erase
    5: Get Device Info
    6: Factory Reset
    7: Flash Range Erase
    8: Start Application
    9: Unlock BSL
    10: Toggle logs (currently OFF)
    11: Toggle send file (currently ON)
    12: Calculate file checksum
    0: Exit
    Choice: 1
    Input file (.txt or .bin) [firmware.txt]: inputs/test_firmware_main.bin
    Enable checksum validation? (y/n): n
    Start address (hex) [0x8000]: 0x0
    Output file name [image.dfu]: test_bin.dfu
    data written to output file: test_bin.dfu
    the output data written in test_bin.dfu
    
    
    Do you want to continue? (y/n):

    然后、我使用 UNIFLASH 读回存储器并验证其已成功编程:

    一些提示:

    1.加载新固件前批量擦除

    2.确保文件名和路径正确

    B.R.

    Sal

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

    尊敬的 Sal:

    感谢您的支持。

    这解决了问题、Ramanathan 现在测试了几个配置。 我们将与您联系、我需要任何薄款。

    此致、

    Megh