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:Re 编程 IC 问题

Guru**** 2627135 points

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

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1368478/mspm0g3507-re-program-ic-problem

器件型号:MSPM0G3507
主题中讨论的其他部件:, UNIFLASH

工具与软件:

尊敬的 TI 团队:

我目前正在帮助我的客户对 MSPM0G3507 IC 进行编程、但我遇到了一些编程问题、想寻求建议。

我使用的编程接口是 SWD。 有关烧录过程、请参阅技术参考手册的第6章。

客户需要对的块包括代码(闪存)和 NVM (NONMAIN)进行编程。

我第一次编程时没有问题。 首次编程后、我可以正常读取 IC 并与之通信。

第一个编程的过程和顺序为擦除、BlankCheck、编程和验证。

我将首先完成代码(闪存)的编程和验证、然后对 NVM (NONMAIN)进行编程和验证。

当我想第二次对 IC 进行编程时、IC 上的任何操作都会在代码(闪存)被擦除后失败。

然后、如果您再次尝试通过 SWD 与 IC 通信、则会失败。

来宾 NVM (NONMAIN)的设置如下所示。 其余为出厂设置。

是否在 NVM (NONMAIN)被修改后我擦除了代码(闪存)而导致 IC 无法擦除和无法通信?

如果是、我是否应该首先擦除 NVM (NONMAIN)并在后续编程过程中将其写回出厂值?

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

    尊敬的 Yuxuan:

    您的 M0已锁定、因为您可能对 NONMAIN 闪存进行了错误操作。  

    1)。 您可以先通过 CCS 使用"恢复出厂设置"解锁 M0。 如果您不知道如何操作、可以参阅我在此 E2E 帖子中的回复:

    (32) MSPM0G3507:PRSC 模块出现故障-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    2)。 客户似乎只是修改了 NONMAIN 的 BOOTCRC 寄存器(偏移= 41C0005Ch)? 客户是否会在 main.c 中编写用于修改 NONMAIN 区域的代码?

    3)。 擦除主闪存区域不会影响 NONMAIN 区域、但应该检查 NONMAIN 是否已因某些操作而被擦除。

    4)。 您可以尝试将 NONMAIN 区域修改为所有默认设置、并在用户指南中提到(可从 TI.com 下载)、然后尝试对其进行两次编程。 因为似乎只有 BOOTCRC 区域被修改。

    此致、

    Janz Bai

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

    尊敬的 Janz:

    目前、我只拥有自己设计的编程电路以及个人开发的编程软件流程。

    所以我目前还没有开发版本、无法通过 CCS 运行 IC。。。

    我确认了客户的 NONMAIN、发现客户的修改为 BOOTCFG2。

    出厂值为0xAABBFFFF、但客户修改为0xFFFFFFFAABB。

    因此,将对 BOOTCRC 的内容进行相应修改。

    我不确定 M0是否在编程后实际上锁定了

    因为我在对主闪存和 NONMAIN 进行编程后仍然可以读取 IC。

    但是在主闪存和 NONMAIN 被编程后、主闪存被擦除、IC 似乎被锁定。

    此外、在客户修改 BOOTCFG2后、我是否仍可以通过 BSL 对 IC 执行恢复出厂设置?

    谢谢。

    此致、

    Steve

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

    Steve、您好!

    1)。 是的、客户更改了 BOOTCFG2、启用了快速引导模式并禁用 BSL。 从理论上讲、这些不应影响 M0锁定。  

    2)。 首次编程后、您仍然可以读取 IC、这表示您的 NONMAIN 操作没有问题。 但在擦除 MAIN 闪存后、您无法连接 IC、因此我认为您需要检查擦除操作、是否擦除 NONMAIN 区域。

    3)。 由于客户在 BOOTCFG2中禁用了 BSL、因此您无法通过 BSL 执行恢复出厂设置、但您可以尝试通过我分享的 e2e 中提到的 DSSM 执行恢复出厂设置。

    4)。 您可以从 TI.com 下载 CCS、并且如果您是 TI 的 FAE 或您的公司有自己的 FAE、则可以从 TI.com 申请 XDS110或 LaunchPad。

    此致、

    Janz Bai

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

    尊敬的 Janz:

    我已经确认在擦除主闪存后、我没有擦除 NONMAIN 块。

    此外、随附的文件是一个波形文件、在我擦除主闪存后无法与 IC 通信。

    我发现初始化 SWD 时发生异常。

    e2e.ti.com/.../3507_5F00_fail.zip

    此致、

    Steve

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

    YUXUAN 您好!

    现在有两种方法来查找此问题的根本原因、我认为您需要这样做并查看结果:

    1)。 从软件:您在第二次编程时擦除的主闪存的地址范围是多少。

    2)。 在软件中:您可以尝试下载我们的 SDK 中的示例并检查您是否可以对 IC 进行多次编程。 此方法用于确保此问题是否由应用程序代码引起。

    3)。 从硬件:您提到您使用自己的个人编程电路。 您使用的界面是什么? SWD 或任何其他? 如果您使用 SWD 或 JTAG、我认为您可以在 TI.com 上申请 XDS110或 LP-MSPM0G3507 (具有板载 XDS110)、并在您的电路中使用调试器。  该方法用于确保此问题是否由调试器/编程电路引起。

    4)。 使用 XDS110等调试器后、可以通过 CCS 恢复出厂设置、这是为了确保 M0是否已锁定以及是否可以重置为出厂默认状态。  

    此致、

    Janz Bai

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

     很抱歉、我不小心单击了"TI 认为已经解决了问题"。 如果您有问题、仍可在这篇 e2e 帖子中提问。

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

    尊敬的 Janz:

    我目前要测试的 IC 是 MSPM0G3507、因此范围 I ERASE 为0x00000000至0x00020000。

    我的客户使用 TI 的工具对该文件编程、它可以重复编程。

    我使用的接口是 SWD。

    此致、

    Steve

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

    YUXUAN 您好!

    1)。 如果在 SDK 中使用示例代码(可从 TI.com 下载: MSPM0-SDK 软件开发套件(SDK)| TI.com)、是否也会发生此问题?

    2)。 客户使用了哪些 TI 工具? 您能告诉我名称和版本吗?

    3)。 如果客户可以使用 CCS、您能让客户尝试恢复出厂设置吗?

    4)。 如果客户使用其他 TI 工具、请告诉我名称和版本、并提供要下载到 M0的代码。 我会尝试在我这边做一些测试、然后找出根本原因。  

    此致、

    Janz Bai

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

    尊敬的 Janz:

    我已经向客户询问了与程序员相关的信息和编程文件、客户回复后我就会给您。

    我已经检查了 SDK 中的示例代码、并且 参考示例代码过程完成了当前的编程过程。

    所以我想知道为什么正常编程没有问题、但 SWD 通信在擦除代码(闪存)后失败。

    我还测试其他编程 文件。 编程没有问题 、可以重复编程。

    目前、似乎只有 该客户提供的编程文件才会遇到此问题。

    此致、

    Steve

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

    尊敬的 Janz:

    客户使用的软件和版本是 Uniflash 8.6.0。

    另外、客户愿意提供编程文件分析、但由于 NDA、您能否给我发送编程 文件? 谢谢你。

    此致、

    Steve  

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

    YUXUAN 您好!

    您可以发送电子邮件至 janz-bai@ti.com

    此致、

    Janz Bai

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

    尊敬的 Janz:

    我已将客户的文件发送到您的电子邮件中。

    该字母的标题为"MSPM0G3507:Re 编程 IC 问题"。

    此致、

    Steve  

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

    YUXUAN 您好!

    我刚刚检查了我的电子邮件,我找到了它。 我很抱歉,本周我有太多的事情要做,我会帮助你做一些测试下周。

    此致、

    Janz Bai

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

    尊敬的 Janz:

    我还在次级编程开始时测试并同时擦除 Code 和 NONMAIN、但擦除后 IC 仍然锁定。

    但我也注意到 IC 似乎没有被擦干净。

    左侧的一个是地址、右侧的一个是地址中的值。

    此致、

    Steve

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

    尊敬的 Yuxuan:

    我已经使用 Uniflash 8.7和客户的 hex 文件完成了一些测试。 我可以成功下载该文件两次。 我建议您选择 在次要时间擦除 MAIN 和 NONMAIN、而不选择仅擦除 MAIN 存储器。 由于十六进制文件包含 NONMAIN 的数据、因此如果您仅选择擦除主闪存、并且十六进制文件中有使用 uniflash 下载的 NONMAIN 代码、则可能会发生一些错误。

    我使用的 Uniflash 设置:  

     \

    我得到了下载结果:  

    此致、

    Janz Bai

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

    尊敬的 Janz:

    也许我的擦除方法是错误的。

    您能告诉我如何在 Uniflash 上进行擦除吗?

    我当前正在使用扇区擦除。

    也许我需要改用整个闪存存储体擦除?

    此致、

    Steve

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

    YUXUAN 您好!

    1)。 一个闪存字为64位(使用 ECC 时为72位)。 一个扇区为1KB、一个存储体高达256KB (大多数器件实施单个闪存存储体(BANK0)。 BANK0包括 NONMAIN 区域、MAIN 区域和 FACTORY 区域。  

    2)。 如果您的代码文件只有 MAIN 区域、则应使用"ERASE MAIN MEMORY"

    如果代码文件包括 MAIN 区域和 NONMAIN 区域、则应使用"ERASE MAIN 和 NONMAIN 存储器"或"ERASE MAIN 和 NONMIAN PROJECTED Sectors Only"(建议使用该符号)

    如果首次下载包含 MAIN 和 NONMAIN 的代码文件、并且希望下载仅包含 MAIN 的代码文件、则应选择"仅擦除 MAIN 存储器"并确认您的代码文件仅包含 MAIN 区域。

    3)、如果您使用扇区擦除、您应该在此处写入要擦除的地址:  

    4)。 我建议您使用第2)点来防止写入错误的地址。 您应该注意到、如果要擦除 NONMAIN 区域、您必须确认要下载的代码文件必须包含 NONMAIN。

    5)。 我不建议您擦除整个存储体、因为这将擦除 NONMAIN 和 FACTORY 区域。 如果要使用 Uniflash 将代码下载到 M0中、只需参见第1)点到第4)点。

    此致、

    Janz Bai