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.

[参考译文] MSPM0L1105:使用 OPENOCD 和 SWD 刷写 MSPM0L1105

Guru**** 2763585 points

Other Parts Discussed in Thread: MSPM0L1105, LP-MSPM0L1306, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1615988/mspm0l1105-flashing-mspm0l1105-using-openocd-and-swd

器件型号: MSPM0L1105
Thread 中讨论的其他器件: LP-MSPM0L1306UNIFLASH

我们有一个可使用 mspm0 微型作为 AM6254 处理器的协处理器的平台。  系统正在运行 Linux 6.12.x 内核、并具有所有关联的 I/O 控件、以支持与 mspm0l1105 micro 通信。

image.png

我们已克隆构建了最新的 openocd 存储库、并且能够查询我们使用 LP-MSPM0L1306 开发套件开发的固件并对其进行编程。

当我们在正常运行期间将引脚用于替代功能时、固件会禁用 SWD 接口。  为了帮助我们进行调试、我们需要能够更新固件、但不能更新、因为 SWD 已禁用。

我记得必须在开发套件上执行一个序列、以便在 SWD 被禁用时进行恢复、并且尝试在目标硬件上执行此操作已证明存在问题。

 

将 openocd 配置为使用 nRST 线路来控制器件复位状态后、我们可以与器件进行一些通信、但无法完全解锁:

#openocd -f /home/debian/openocd-cfg/mspm0l1105.cfg
Open On-Chip Debugger 0.12.0+dev-02394-gb4518ab78 (2026-02-08-12:52)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Warn : Transport "swd" was already selected
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : SysfsGPIO JTAG/SWD bitbang driver
Info : Note: The adapter "sysfsgpio" doesn't support configurable speed
Info : SWD DPIDR 0x6ba02477
Info : SWD DPIDR 0x6ba02477
Error: [mspm0x.cpu] Could not find MEM-AP to control the core
Error: [mspm0x.cpu] Examination failed
Warn : target mspm0x.cpu examination failed
Info : [mspm0x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections

是否需要执行额外步骤才能成功进行 SWD 通信?

 

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

    您好:Marc、
    如果在 NONMAIN 中禁用了 SWD 功能、则无法将器件恢复为在 NONMAIN 中禁用 SWD 之前的状态。 如果通过不更改 NONMAIN 而禁用了 SWD 线路、则以下内容应该有助于将器件恢复为出厂设置:

    1.断开 LaunchPad 与电源的连接
    2.打开器件的 Uniflash 会话(检查器件和调试器,或选择 LaunchPad 映像)
    3.按住 NRST 按钮 (S3)。
    4.将 LaunchPad 接通电源,同时继续按住 NRST 按钮
    5.单击“设置和实用程序“选项卡,然后单击/发出手动恢复出厂设置 DSSM 命令
    6.当控制台提示您按 NRST 按钮时、松开 NRST 按钮

    此致、

    Diego Abad

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

    您好、Diego

    感谢您的答复。  遗憾的是、LaunchPad 板上没有问题、因为我们的 PCB 上已将 mspm0 处理器连接到 TI AM62x 处理器。

    我们正在尝试使用 OpenOCD 和 OpenOCD 中的 TI 支持进行编程。

    使用该工具创建恢复流程已证明非常困难。

    希望负责维护 OpenOCD 支持的相关人员提供一些帮助。

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

    您好:Marc、
    要确认、 TI AM62x 处理器的 SWD 是否被禁用、或者 MSPM0L 是否出现问题? 如果第一个为 true、则我可以将线程更改为 AM62x 以获得进一步支持。
    此致、
    Diego Abad

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

    您好、Diego

    问题出在  MSPM0L SWD 上。

    谢谢

    Marc

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

    您好:Marc、
    好的、在这种情况下、您是否需要更清楚地了解如何更改软件以在 MSPM0 中禁用 SWD? 在联系负责 OpenOCD 支持的团队成员之前、我需要更多详细信息。

    此致、

    Diego Abad

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

    您好、Diego

    正确使用 MSPM0 和 OpenOCD。

    使用这样的方法无法以正确的方式控制 nRST 线路。  当 OpenOCD 查询时、它保持低电平:

    adapter driver sysfsgpio
    
    transport select swd
    
    sysfsgpio swd_nums 593 519
    
    sysfsgpio srst_num 681
    
    # Configure SRST as output
    reset_config srst_only srst_nogate connect_assert_srst
    
    adapter srst delay 1100
    adapter srst pulse_width 1100
    
    source [find target/ti/mspm0.cfg]
    
    init
    #mspm0_factory_reset
    mspm0_mass_erase

    我们试图使复位保持 1 秒以上以强制 POR。

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

    您好:Marc、
    ASM 是否控制 MSPM0 的 NRST 线路? 如果是、您需要确保控制 NRST 的引脚将其驱动为低电平、从而使器件进入 POR 以便能够使用 SWD 线路、因为在 POR 期间、器件配置(只要在 NONMAIN 中未修改)将具有 SWD 功能。  

    如果不是前一个引脚、您使用 M0 中的哪个引脚进行自我复位?

    此致、

    Diego Abad