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.

[参考译文] TMS570LC4357:只擦除闪存仿真 EEPROM 位置的8个字节、而不是擦除整个扇区

Guru**** 2481465 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1010779/tms570lc4357-erasing-only-8-bytes-of-flash-emulated-eeprom-location-instead-of-complete-sector

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

您好!

在 TMS570LC4357中、我们希望使用 EEPROM (FEE)来存储一些数据。 我们使用 F021 API 对 EEPROM 位置进行编程或擦除。

但是、EEPROM 的扇区 为4KB、如果我们只想写入8个字节的数据、则必须始终擦除整个扇区。

是否有任何方法只擦除闪存 EEPROM 位置中的8个字节的数据? 这将不会擦除整个扇区。

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

    您好 Srithari、

    最小擦除大小为一个扇区。 如果使用 FEE 驱动器、则在将新数据写入闪存时无需擦除闪存。  在 FEE 中、数据块用于定义数据在虚拟扇区内的映射位置。 一个或多个变量可以位于数据块中。 每个块都有标头、用于定义块状态、块大小和块编号。  

    每当必须写入数据块时、都会在活动虚拟扇区的第一个未使用存储器位置对其进行编程。  第一个数据写入操作在虚拟扇区标头之后的空位置执行。 下一个未使用的存储器位置将通过添加前一个块的地址和前一个块的大小来计算。 如果数据块已存在,则旧记录将标记为“无效”,新数据将标记为“有效”。

    如果当前虚拟扇区中没有足够的空间来更新数据、它将切换到下一个虚拟扇区、并将当前虚拟扇区中的所有有效数据块复制到新的虚拟扇区。 复制所有有效数据块后、当前虚拟扇区标记为擦除就绪、新的虚拟扇区标记为活动虚拟扇区。 任何新数据现在都将写入新的活动虚拟扇区、且标记为可擦除的虚拟扇区将在后台擦除。

    最小虚拟扇区大小为一个闪存扇区(4KB)、至少需要2个虚拟扇区。  

    HALCoGen 包含一个 FEE 示例、该示例使用 FEE API 从 FEE 读取数据并将数据写入 FEE。