armink / EasyFlash

Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
MIT License
1.99k stars 760 forks source link

easyflash+easylogger+W25Q16 #120

Open LiuDeMings opened 3 years ago

LiuDeMings commented 3 years ago

原本使用 easyflash保存环境变量和日志到w25q16,经过移植虽然实现了功能,但是读取、设置单个环境变量都会消耗大量时间导致系统阻塞,读大约消耗140ms,写大约400ms。虽然知道w25q16芯片写入数据前若目标地址数据不为0xFF会进行擦除扇区的操作,擦除单个扇区的时间在40~100ms。但是读环境变量也会消耗140ms,这是真的不能忍。 而且设置单个环境变量会导致多次写入操作大幅增加时间消耗。延迟高的问题不知是不是我移植的有问题,希望能够优化对W25qXX芯片的支持,不然实时性要求高一点的情况都没法用easyflash。

armink commented 3 years ago

读肯定不需要这么久的,EasyFlash 本身有缓存,默认是从缓存中读取的

只有开机加载缓存需要消耗一定的 Flash read 时间

armink commented 3 years ago

https://github.com/armink/EasyFlash/blob/master/easyflash/src/ef_env_legacy.c

你要不试一试 EF_ENV_USING_LEGACY_MODE 模式?首页有介绍

image