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.

[参考译文] RM48L950:F021闪存 API 读取和写入

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038056/rm48l950-f021-flash-api-read-and-write

器件型号:RM48L950
主题中讨论的其他器件:HALCOGEN

尊敬的 TI:

我正在尝试写入和读取闪存的扇区7 (0xF0200000)。 我可以这么做。 但问题是、即使加载用于 调试和执行擦除功能的代码、闪存也无法正确擦除。 擦除后、闪存中会留下一些随机的垃圾值、如下所示

有时闪存不会完全擦除、如下面的 s 所示

由于这个问题、我的数据在写入闪存时有时会损坏。 这是什么原因以及如何解决该误差。 请就此为我提供帮助。

此致、

Nagaraju M

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

    您好 、Nagaraju、

    第一个快照中的随机非 F 值是由无效的 ECC 值引起的。 擦除 EEPROM 闪存扇区时、EEPROM ECC 空间也会被擦除。 EEPROM 由闪存包装程序中的 SECDED 逻辑保护。 擦除后、ECC 空间中的内容不是有效的 ECC 值。

    扇区未成功擦除。 擦除闪存时是否出现任何错误?  

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

    您好、Wang、

    在测试期间、我们尝试擦除 EEPROM 扇区编号0和1。 但是、擦除 EEPROM 扇区时没有收到任何错误。  

    此外、擦除相应的 EEPROM 扇区后 、我们尝试读取并检查每个地址的数据值是否为0xFFFFFFFF、我们找到了一些上面发布的非 F 值。  

    EEPROM ECC 空间的地址和大小是多少? 是否有任何用于检索已擦除 ECC 空间的解决方案?

    如何检查 EEPROM 扇区是否被正确擦除?

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

    您好、Wang、

    正如  所说、擦除 EEPROM 扇区时没有出现任何错误。 我们注意到、当我们擦除闪存时。 在 sector0和 sector1中、可以找到许多非 F 值。 是否有任何解决方案来检索已擦除的 ECC 空间? 它的地址和大小是多少?

    我们非常感谢您的回复。

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

    您好!

    闪存包装程序有两条总线、总线1和总线2。

    CPU 使用总线1来访问闪存的正常扇区(组0和组1)、针对这些扇区存储程序和数据。 CPU 将使用总线2来访问 OTP 扇区、EEPROM 仿真闪存组。  

    当 CPU 通过总线1访问程序闪存(组0和组1)时、CPU 的内置 SECDED 逻辑将执行 ECC 检查。 请注意、这个 ECC 逻辑位于 CPU 内部、而不是闪存包装程序内部。  

    当 CPU 访问 EEPROM 和 OTP 扇区时、ECC 检查在闪存包装程序内完成。 原因是连接到闪存存储器系统总线2的 CPU 2级接口(AXI-M 总线)没有 ECC 检查功能。 因此、闪存包装程序有其自身的 ECC 逻辑、仅用于总线2访问。

    缺省情况下、闪存包装程序内的 ECC 检查不被启用。 如果未启用、则在读取擦除的 EEPROM 时不会出现错误、因此读取值为0xFFFFFFFF。

    如果通过向 EE_CTL1寄存器的 EE_EDACEN 位字段写入0x0A 来启用 ECC、则在读取擦除的 EEPROM 时将看到非 F 字节。

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

    启用 ECC (EE_CTRL1的位[3:0]= 0xA、地址为0xFFF8308)时,您可以在第一个存储器窗口中看到非 F 字节:

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

    非常感谢您的详细回答。

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

    您好、Wang、  

    以下是一些疑问。  

    1.当我们需要从仿真 EEPROM 进行 R/W 时、是否建议禁用 ECC 校正?

    2.闪存 API 中是否有任何可禁用 ECC 的函数? 您建议使用内存浏览器吗?

    3.我们是否可以将数据存储在 EEPROM_Sector_2中?

    此致、  

    Monish

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

    您好、 Monish、

    我建议使用 FEE 驱动器将数据编程到组7 (仿真 EEPROM)。

    EEPROM 允许用户重复擦除和重新编程应用程序中存储的数据。  TI FEE 驱动器提供一组软件函数、这些函数旨在将片上闪存存储器(组7)的扇区用作仿真 EEPROM。 应用程序透明地使用这些软件函数来写入、读取和修改数据。

    请阅读 HalCoGen 安装文件夹中的用户指南:

    TI FEE 用户 Guide.pdf

    HALCoGen 提供 了一个使用 FEE 驱动器进行 EEPROM 读取/写入的示例: