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.

[参考译文] MSPM0L2228:EEPROM 型存储器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1437430/mspm0l2228-eeprom-style-memory-storage

器件型号:MSPM0L2228
主题中讨论的其他器件:MSPM0G3507

工具与软件:

您好 Ankush:

"你说什么  \examples\nortos\LP_MSPM0G3507\EEPROM 应该在 MSPM0L2228上正常工作?

我正在尝试配置或映射一个可使用的闪存区域、该区域类似于 MSPM0L2228中的 EEPROM 存储。

此致、

Chris

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

    Chris、您好!

    我会打开一个 empty_MSPM0L2228示例、并通过在 EEPROM 文件中添加您所需要的正确器件链接器和头文件。 应用代码与 MSPM0无关、并且将在任何 MSPM0器件上运行。

    如果您想利用 CASH 在链接帖子中提到的双组属性、那么您可以对链接器文件(.cmd)进行一些调整并调整您的存储器组织。

    请注意、代码示例是一个示例、而不是完整的程序。

    此致、
    Luke

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

    尊敬的 Luke:

    谢谢、这与我目前研究的方法非常相似、很高兴知道它与器件无关。

    我可以询问并仔细检查、我所使用的构建是否需要从 RAM 运行?

    我想是这样、但在示例中没有看到任何配置选项。

    我在网上找到了一些说明、这些说明表明这里有配置选项、但可能适用于不同的器件。

    此致、


    Chris

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

    Chris、您好!

    该示例中的函数确实使用"FromRAM"更新闪存、因为原始器件是单存储体器件。 由于 L2228是双存储体器件、因此您实际上可以使用正常的闪存功能。

    但是、在这个过程中需要考虑一个系统流程。 一次只能在闪存中执行一个功能-执行、擦除、编程。 因此、当您擦除一个存储体时、所有可执行函数都需要在另一个存储体中执行。 解决这个问题有几种不同的方法、但我要做的是在另一个组擦除时、在我的主存储库中保留要执行的函数子集、本质上是切换到状态机。

    您可以在.cmd 文件中对存储器进行分区、以轻松对组进行分段、并使用编译器属性将函数放置在闪存区域中。

    此致、
    Luke

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

    尊敬的 Luke:

    谢谢、所以使用普通闪存函数、我应该能够从组0中执行、并将组1用作模拟 EEPROM?

    关于.cmd 文件、我似乎在我的项目中没有该文件、并假设它使用的是默认值。

    您能否分享示例或指向参考的链接?

    此致、

    Chris

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

    大家好、团队成员:

    如果不看到某件事起作用、就很难取得进展。

    所有示例都失败、我没有参考点来生成 cmd 文件来移动存储器中的函数。

    是否有无需更改即可为 L2228正常工作的示例项目?

    此致、

    Chris

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

    Chris、您好!

    默认的.cmd 文件显示了如何将函数放在存储器的特定部分中。 在查看我的图像时、您会看到.TI.ramfunc 已加载到闪存中并从 SRAM 运行。 函数本身具有要放置在具有这些属性的段中的属性的标签。

    您可以针对 L2228执行类似的操作、但将其拆分为单独的闪存组。

    我们没有具体的 L2228示例。




    当您指出示例失败时、会遇到哪些问题?

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

    谢谢您、我看到所有示例都在 Default_Handler 中结束、最后尝试的是对 DL_FlashCTL_executeCommandFromRAM 的调用。

    它最初看起来不是从 RAM 运行、但 PC 显然是 RAM 地址:

    未到达屏幕截图中的第二个断点、首先到达 Default_Handler。

    因此、问题很可能是我的配置出现了其他情况。

    最终、我想在 L2228上获得一个可用作 EEPROM 的闪存区域。

    我没有在闪存中分隔一个区域、只是想先看看示例工作。

    确认函数  DL_FlashCTL_executeCommandFromRAM 正在从 RAM 运行后、我将配置一个闪存区域、并通过链接器配置演示 flashctl_multiple_size_write 可使用的闪存区域。 如果仍然存在错误、则必须由于其他原因而调用 Default_Handler。

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

    我已经尝试使用链接器命令文件、但在尝试擦除扇区时仍然遇到代码异常。

    所有这些都已在我们自己的电路板上完成、明天或下周早些时候可以在 Launchpad 电路板上尝试类似操作。

    我所做的更改如下:

    我通过检查映射文件确认链接器文件已经用于成功构建:

    除了看到它在 LaunchPad 板上的表现外、我不确定还可以尝试哪些其他方法、因为出现异常的根本原因并不明显。

    这感觉就像一个访问问题、但不确定可能是什么。

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

    尊敬的 TI 团队:

    我已经找到了我遇到的所有 MSPM0L2228闪存编程示例在 Default_Handler 中最后的问题的根本原因。

    问题是 SDK 中缺少启动代码。

    这是 SDK mspm0_sdk_2_02_00_05中 MSPM0L2228的源代码中包含的内容:

    它应该是:

    在比较 MSPM0G3507的运行代码时、这一点很明显、在静态分析差异时缺失。

    是否计划对 SDK 进行更新以避免类似问题?

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

    Chris、您好!

    我不知道对启动文件的更改、因此感谢您提出此问题。 我会将其告知我们的团队、我们可以做什么、要么默认添加此文件、要么提供消息、以便在相关示例中轻松找到它(.TI.ramFunc 段创建功能在.cmd 文件中可能是一个合适的地方)。

    此致、
    Luke

x 出现错误。请重试或与管理员联系。