乐鑫技术交流
直播中

LL-LING宁

8年用户 1316经验值
擅长:电源/新能源
私信 关注
[问答]

ESP32S3的EEPROM是由FLASH虚拟的,直接在arduinoIDE中擦写EEPROM时是否在底层自动进行了磨损平衡?

ESP32S3的EEPROM是由FLASH虚拟的,请问直接在arduinoIDE中擦写EEPROM时是否在底层自动进行了磨损平衡?

在用ESP32S3做含有计数器功能的设备,希望可以掉电保存数据,所以在计数事件发生时就要保存一次。每天大概会保存2000次。用arduino框架+FreeRTOS开发时使用EEPROM会方便很多。如果底层自动完成磨损均衡就能省很多事情了
                                                                                                                                                                                    

回帖(1)

他在笑

2024-6-7 10:55:44
ESP32S3的EEPROM确实是由内部FLASH模拟实现的。在Arduino IDE中使用EEPROM库进行数据存储时,底层确实会进行一定程度的磨损平衡。但是,这种磨损平衡可能不足以应对高频率的写入操作,尤其是在每天需要保存2000次数据的情况下。

磨损平衡的目的是确保FLASH的每个块在使用寿命内被均匀地使用,以避免某些块过早地达到其写入寿命限制。然而,EEPROM库的磨损平衡策略可能不如专业的磨损平衡算法那么高效。

在这种情况下,您可以考虑以下几个方案:

1. 使用更专业的磨损平衡库:有一些专门为ESP32设计的磨损平衡库,例如"esp32-arduino-eeprom"。这些库可能提供更高效的磨损平衡策略。

2. 减少写入次数:如果可能的话,尝试减少写入次数。例如,您可以将多个计数事件累积在一起,然后在达到一定数量后一次性写入EEPROM。

3. 使用外部EEPROM:如果您的应用对数据持久性要求非常高,您可以考虑使用外部EEPROM芯片。外部EEPROM通常具有更高的写入寿命和更好的磨损平衡性能。

4. 优化数据存储结构:优化您的数据存储结构,以减少每次写入所需的数据量。例如,您可以使用更紧凑的数据格式或仅存储增量数据。

5. 考虑使用其他存储方案:除了EEPROM之外,您还可以考虑使用其他存储方案,如SPIFFS、LittleFS等文件系统,或者使用外部存储设备如SD卡等。

总之,虽然Arduino IDE中的EEPROM库在底层进行了一定程度的磨损平衡,但在高频率写入的情况下,可能需要采取其他措施以确保数据的持久性和FLASH的使用寿命。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分