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.

[参考译文] MSPM0G3107:MSPM0G3107SDGS20 闪存问题

Guru**** 2694485 points

Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1590914/mspm0g3107-mspm0g3107sdgs20-flash-issues

器件型号: MSPM0G3107
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

在使用一些生产日期代码更新某些 MCU 的软件时、我们开始在产品中看到问题。

在尝试使用我们的更新机制更新我们的引导或应用程序时、有些人无法对应用程序闪存的所有部分进行编程、在这种机制下、我们会擦除和写入一些扇区。 我们可以在更新过程中写入的特定地址看到问题。 有些人工作正常、有些人不时工作、有些人根本不工作。

我们已禁用看门狗、错误可能会出现在写入数据的中间、因此在运行期间它没有被中断或重新启动。

在写入扇区并读回同一扇区时、我们可以看到它们不匹配。 尝试重写也不起作用。 使用调试器读回闪存时、我们可以看到它没有写入。

我们可以使用调试器写入和读取闪存并避免出现任何错误。

我们看到 TI MCU 和 PCB 的某些特定批次的问题。 我们看到的 PCB 在 W41-w43 2025 之间采用 MCU 时出现了问题。

对于有问题的人、我们在正常引导期间会收到几个(例如 32 个)DL_SYSCTL_NMI_IIDX_FLASH_DED 中断、之后当尝试在闪存上写入扇区时、我们会看到额外的 20 多个中断。

在已知良好的电路板上、我们看不到 W41-w43 之前和之后的任何此中断。

有关 MCU 生成的 TI 配置、请参阅所附已上传文件到安全文件区域。 我们将在找到相关信息时以及在需要时提供更多信息。

为什么这个错误出现在某些人身上而不是出现在其他人身上,如果这是一个已知的 bug 如何处理?

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

    您好、Johnathan、

    其他一些需要检查的项目。

    STATPCNT 为 0 表示预验证已通过、因此闪存已被擦除。 能否禁用 CMDCTL 寄存器中的预验证?

    CFGCMD 配置验证的等待状态、我认为复位设置为 2。 您能否 调整该值 4 来查看这些对 40MHz 的帮助?  

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

    您好 Luke Ledbetter 

    我已经测试了  STATCMD 寄存器中查找 CMDINPROGRESS 位的情况、 但在擦除工作或不工作时从不会显示。 只需在执行命令 (flashctl->GEN.CMDEXEC = FLASHCTL_CMDEXEC_VAL_EXECT) 后直接获取位 0x3、即直接为这两种情况设置 DONE 和 Pass。

    此外、还尝试了建议禁用 CMDCTL 寄存器中的预验证。 但在检查后 、它已经为 0、而不是 参考手册中规定的默认值为 1。  

    添加标头 “6.6.11 CMDCTL(偏移= 1108h)[复位= 00000000h]“和“图 6-14 CMDCTL“两种状态均表示默认值为 0、但各个寄存器详细信息表示 POSTVEREN 和 PREVEREN 的默认复位值为 1 。

    尝试将它更改为 1、看看会发生什么、但我无法更改该值。 因此、对将 0xFFFFFFFF 写入整个寄存器进行了测试 、然后恢复 0x00331E0F。 因此、如果跳过只读的 RESEVERVED 位会显示我无法更新以下位之一:

    位 19 - ERASEMASKDIS
    位 18 - PROGMASKDIS
    位 15 - POSTVEREN
    位 14 - PREVEREN

    根据参考手册、所有这些位都是 R/W。

    已确保在由 CMDEXEC 命令锁定之前(如为 CMDCTL 寄存器所述)修改这些命令。

    对此有何看法?

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

    你好  Luke Ledbetter ,

    只是为了澄清一下。

    FLASHCTL 和 SYSCTL 闪存等待状态之间有何区别? 一个是否适用于 AHB/PD1、而另一个适用于 PD0?  

    数据表指出 80MHz 有 2 个闪存等待状态、这与 SYSCFG 工具相同、但我必须确认是用于 AHB/PD1? 在 SDK 中查找 FlashCTL 时、建议的值为 3 个等待状态 80MHz、默认情况下似乎为 2、如何在 SYSCFG 或 TI 演示中不设置/显示该值?

    当 FLASHCTL 增加到 4 个等待状态时、擦除稳定性与 P0 的降频相似。 这似乎是合理的 IMO。

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

    尊敬的 Jonathan:

    SYSCTL 闪存等待状态与 CPU 操作(执行和读取)相关、而 FLASHCTL->CFGCMD 专用于闪存控制器。 这些等待状态用于闪存控制器内部的验证过程。 闪存控制器负责处理闪存的擦除、编程和验证。

    由于该问题在以更快的 ULPCLK 速度运行时通过验证是误报、因此增大闪存等待状态可以让在验证之前经过物理时间、这将有助于匹配成功率正确的 32MHz 时序。

    我们在 SDK 中确实有代码注释、但我相信该说明中考虑了 MCLK 速度。 尽管闪存控制器位于 PD0 域中、但您需要这 3 种等待状态。

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

    我们使用 GPIO 引脚进行了测量、说明了擦除我们在三批 MCU (45AF80K、56C21PK 和 57CKKTK) 上使用的闪存扇区需要多长时间、并将示波器上的图像上传到了名为“Per Sector on ...png“的 TI 驱动器。
    这是我们提出的所有安全防护和检查以及带式辅助装置。  
    我认为 2024 年批次和 2025 年批次之间的降幅非常大。 这是否预期为批次之间的内部流程差异?

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

    尊敬的 Fredrik:

    这里有多少个闪存扇区被擦除?

    最新批次的总时间为 454ms、应为多个扇区。

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

    这应该是从 0x00009400 到 0x0001F3FF 的整个应用领域、即 88 个扇区。

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

    来自 Christer:
    关于电路板更新失败后无法通信状态的澄清说明:即使使用 TI 调试器也无法连接到电路板并查看所发生的情况。 我收到了下面的消息、但这并不能告诉我很多。
    我们恢复主板的唯一方法是在主板上使用 MailBoxMassErase。

     

    连接到目标时出错:(错误–614 @ 0x0)目标指示先前的 SWD 请求存在错误条件。 清除错误条件、然后再次尝试 SWD 请求。 (仿真包 20.0.0.3178)

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

    问题。
    根据我的理解、我们可能会看到闪存修整问题导致闪存内容丢失的风险、还是只与擦除性能有关?
     周末在+85 摄氏度内放置大量板材(~20 件)进行测试是否是表明这种风险的良好测试?
    在这种情况下、他们是否应该通电或不通电?

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

    尊敬的 Fredrik:

    如果您在 105°C 至 125°C 之间、我建议运行更热的电路板。 并让器件通电并运行。

    此致、
    Luke