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.

[参考译文] MSPM0L1306:MSPM0L1306在刷写后永久无法访问

Guru**** 2393725 points
Other Parts Discussed in Thread: MSPM0L1306, SEGGER

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1242198/mspm0l1306-mspm0l1306-becoming-permanently-inaccessible-after-flashing

器件型号:MSPM0L1306
主题中讨论的其他器件: SEGGER

你好

我正在使用 MSPM0L1306的生产版本、使用固件刷写器件时非常不稳定。 我正在将 J-Link 与 J-Flash/臭氧一起使用。 对空器件进行编程是正常的、但固件运行后、如果没有首先完全擦除芯片、就无法覆盖固件。 如果在上传新固件之前未执行完整的芯片擦除、则上传将失败、并且器件 有时永久无法访问。 之后无法建立通信、恢复的唯一方法是直接替换芯片。

这是我在尝试刷写已有固件的器件时遇到的错误:

Device "MSPM0L1306" selected.
Found SW-DP with ID 0x6BA02477
DPIDR: 0x6BA02477
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[2]: Stopped AP scan as end of AP map has been reached
AP[0]: AHB-AP (IDR: 0x84770001)
AP[1]: MEM-AP (IDR: 0x002E0001)
Iterating through AP map to find AHB-AP to use
AP[0]: Core found
AP[0]: AHB-AP ROM base: 0xF0000000
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)
Found Cortex-M0 r0p1, Little endian.
FPUnit: 4 code (BP) slots and 0 literal slots
CoreSight components:
ROMTbl[0] @ F0000000
[0][0]: E00FF000 CID B105100D PID 000BB4C0 ROM Table
ROMTbl[1] @ E00FF000
[1][0]: E000E000 CID B105E00D PID 000BB008 SCS
[1][1]: E0001000 CID B105E00D PID 000BB00A DWT
[1][2]: E0002000 CID B105E00D PID 000BB00B FPB
Connected to target device.
ResetTarget() start
DAP initialized successfully.
ResetTarget() end - Took 5.01ms
Elf.GetBaseAddr(); // returns 0x0
Target.ReadU32 (0x00000000); // returns 0x4, data is 0x20000490
Target.SetReg ("SP", 0x20000490);
Target.ReadU32 (0x00000004); // returns 0x4, data is 0x18D
Target.SetReg ("PC", 0x18D);
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (32768 bytes)
J-Link: Flash download: Total: 0.494s (Prepare: 0.035s, Compare: 0.068s, Erase: 0.152s, Program & Verify: 0.220s, Restore: 0.016s)
J-Link: Flash download: Program & Verify speed: 145 KB/s
Elf.GetBaseAddr(); // returns 0x0
Target.ReadU32 (0x00000000); // returns 0x4, data is 0x20000B48
Target.SetReg ("SP", 0x20000B48);
Target.ReadU32 (0x00000004); // returns 0x4, data is 0x1B1
Target.SetReg ("PC", 0x1B1);
Programming failed @ address 0x000018D4 (block verification error)

这是器件永久无法访问后的输出:

Connecting to target via SWD
Found SW-DP with ID 0x6BA02477
DPIDR: 0x6BA02477
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[0]: Stopped AP scan as end of AP map has been reached
Iterating through AP map to find AHB-AP to use
Attach to CPU failed. Executing connect under reset.
DPIDR: 0x6BA02477
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[0]: Stopped AP scan as end of AP map has been reached
Iterating through AP map to find AHB-AP to use
Could not find core in Coresight setup
DPIDR: 0x6BA02477
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[0]: Stopped AP scan as end of AP map has been reached
Iterating through AP map to find AHB-AP to use
Could not find core in Coresight setup
Cannot connect to target.

这是一个已知问题吗?

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

    尊敬的 Luca:

    您是否尝试过恢复出厂设置来恢复 无法访问的情况下的芯片?

    当它无法实现完整的芯片擦除时、可能  由于 NONMAIN 闪存数据损坏而无法访问。

    您能否分享有关您的硬件环境的更多详细信息:J-Flash 版本、固件包大小、以及是否修改了 NONMAIN 闪存中的任何数据?

    B.R.

    萨尔

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

    您好,Sal

    即使通过复位选项下的连接、芯片仍然无法访问。

    我使用的是最新版的 Segger 固件包。 J-Flash 基于版本7.88i。 我尝试刷写的固件大约为30KB。

    我没有尝试修改 NONMAIN 段。

    或许有一点可能很重要、即我在固件中禁用了复位引脚、但这在芯片运行时似乎没有效果。 我仍然可以连接到它并执行芯片擦除、只有当我尝试将固件写入已在运行固件的芯片时、可能无法访问。 昨天我需要更换3个 MCU、这个问题是可重复的。  

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

    尊敬的 Luca:

    当进行擦除操作时、NRST 引脚不工作。 我不确定 J-Flash 加载固件的逻辑、您或许可以观察 J-Link 的 RST 引脚信号、看看某个信号是否会发生变化。

    同时、您是否已尝试将 CCS 与 XDS110一起连接器件、或许它可以工作且值得一试。

    如果有任何更新、请告知我。

    我将根据特定环境使用板替换此问题、并尝试确定是什么导致了此问题。 明天或以后应向您提供反馈。

    B.R.

    萨尔

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

    您好,Sal

    我订购了 XDS110并将在 Segger 论坛上创建票证、以查看是否有其他人遇到同样的问题。

    重现此问题非常简单。 您只需使用 J-Link (J-Commander)上传一个大型 hex 文件(约30KB 或更大)、然后将另一个 hex 文件(或修改后的 hex 文件)上传到器件。 由于某些数据不匹配、上传始终会失败。 此时您应该停止、重新启动 MCU 并执行完整的芯片擦除、否则在没有擦除芯片的情况下再次尝试上传时可能无法访问。  

    此致、

    卢卡

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

    尊敬的 Luca:

    很抱歉回复延迟。 您现在的问题如何?

    我根据测试注释进行了测试、我通过 J-Flash 将两个不同的 hex 文件加载到器件中、结果成功(34KB 和50KB 映像)。

    我认为它与您的项目设置相关,以下截图是我的建议:

    然后、选择生产编程以加载 hex 文件:

    顺便说一下、我使用最新的 SDK (1.10)进行测试。 如果它仍然能够维护该问题、也许您可以尝试使用最新的 SDK、看看它是否起作用。

    希望它对您的案例有所帮助。

    B.R.

    萨尔