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.

[参考译文] MSPM0L1117:闪存读取、控制复位问题

Guru**** 2376610 points
Other Parts Discussed in Thread: UNIFLASH, MSPM0L1117
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1533930/mspm0l1117-flash-memory-reading-control-reset-issue

器件型号:MSPM0L1117
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

您好、

当我从保留的位置读取程序存储器数据时、如果数据为 0x00000000、则微控制器会复位。 对于非零、它读取正确、但当数据为零时、它立即复位。

我正在使用 (*(volatile uint32_t *)(memoryAddress))) 从保留存储器 0X1F000 到 0X1FFFF 读取如下所示的数据。 我一次读取 32 位数据。

*ReadData = (*(volatile uint32_t *)(memoryAddress))

请告知我们如何读取存储器数据。

这是紧急情况、请你尽早提供解决办法。

此致、

Harshal Pawar

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

    尊敬的 Harshal:

    您能详细说明一下如何保留存储器位置吗? 您是否启用了硬件 ECC?

    此外、当读取零时、您是否能够调试导致复位的原因? 我怀疑手头有一些 ECC 错误;建议一次写入 64 位、以便同时且完全生成 8 位 ECC;根据您写入闪存字的方式、当您读取 32 位时、我认为可能 会对照完整的 8 位 ECC 进行检查、从而导致问题。 您可以在 TRM 的第 497 页上阅读有关这些细微差别的更多信息。

    可以在存储 0 的地址上尝试 DL_FlashCTL_readVerify32 () 吗?

    此致、

    Sam

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

    您好、Sam、

    它现在开始工作。 我使用的是没有 ECC 生成的闪存写入、这触发了 ECC 错误、使其复位。 现在我是

    使用 DL_FlashCTL_programMemory64WithECCGenerated 进行写入、这解决了我的问题。

    再需要一个输入。 我正在使用以下代码擦除 1kB 的扇区、请确认可以吗?  nvmAdr 是下面代码中扇区对齐的存储器地址。

    //清除任何先前的闪存错误标志
    DL_FlashCTL_executeClearStatus (FLASHCTL);

    //擦除前取消对扇区/页的保护
    DL_FlashCTL_unprotectSector (
    FLASHCTL、
    nvmAdr、
    DL_FLASHCTL_REGION_SELECT_MAIN
    );

    //调用低级擦除函数
    DL_FlashCTL_eraseMemory (
    FLASHCTL、
    nvmAdr、
    DL_FLASHCTL_COMMAND_SIZE_SECTOR // 1KB 擦除
    );

    感谢您的支持。 感谢您的帮助。

    Harshal Pawar

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

    很高兴听到您让它正常工作! 是的、擦除看起来很好。 如果您有任何其他问题、请告知我们。

    此致、

    Sam

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

    我不是为此创建另一个 TT、而是继续进行此讨论。

    我想保护代码、防止使用编程器读取代码、而我想使用密码保护来访问存储器、此时可以使用 16 字节作为密码。

    我可以这样做、但问题是一旦我对电路板进行编程、J-link 就无法再使用。 您能否告诉我们、是否对此提供了支持?

    后来我使用 XDS110 调试器 Launchpad 器件来使用 SWD 连接我的端口。 它没有弹出密码窗口、可以在其中输入密码来读写设备。 为此使用的 UniFlash 实用程序。 我可以擦除器件主存储器和非主存储器以正常使用、以便可以使用 J-Link。

    另一种不匹配的情况是我将 XDS110 连接到 UniFlash、它会强制我们升级 Launchpad 中的固件。 因此、我无法在 IAR 工作台上使用它、因为 IAR 可能具有用于 XDS 的旧驱动程序。  

    这会造成死锁条件。 幸运的是、擦除后的器件可再次与具有 IAR 的 J-Link 搭配使用。

    因此、我恳请您为器件 MSPM0L1117 提供使用工具和实现密码保护的正确方法建议。

     提前感谢您。

    Harshal Pawar