EasyFlash icon indicating copy to clipboard operation
EasyFlash copied to clipboard

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

Results 59 EasyFlash issues
Sort by recently updated
recently updated
newest added

EfErrCode ef_log_read(size_t index, uint32_t *log, size_t size) 里 **if (size % 4 == 0) {** EF_DEBUG("Error: size must be word aligned."); return EF_READ_ERR; } 应该改为 **if (size % 4 !=...

我看md文件支持增量升级,不过我实测3.0.4版本升级到4.1时,3.0.4版本存在flash里的env数据,使用旧接口ef_get_env无法正常获取,请问这个怎么可以获取到?

```c static EfErrCode create_env_blob(sector_meta_data_t sector, const char *key, const void *value, size_t len) { EfErrCode result = EF_NO_ERR; struct env_hdr_data env_hdr; bool is_full = false; uint32_t env_addr = sector->empty_env; if...

EF_ERASE_MIN_SIZE=100, ENV_AREA_SIZE = 1000 我在flash中保存是的key/value,且每个扇区只能保存一对key/value, 当写入相同的key时,EF要将当前key/value所在的扇区标记为dirty状态,然后再将key写入新的扇区。扇区的dirty status保存在扇区开始offset=4的地方,因此EF要根据当前的key/value所在的地址计算出扇区的开始位置。EF中根据以下宏: EF_ALIGN_DOWN(size, align) ((size) & ~((align) - 1)) 来计算的。按照这个宏,假设key/value的地址是0x1A4, size=0x1A4, align = 0x64, 则计算出来的结果是0x184=388,显然这个结果不正确的,正确的结果应该是0x190=400, 这样EF就无法正确标记扇区的状态,从而无法触发GC。 当EF_ERASE_MIN_SIZE=128, ENV_AREA_SIZE = 64*1024时, 通过EF_ALIGN_DOWN可以得到正确的扇区起始地址。所以这里要求EF_ERASE_MIN_SIZE=2^n才能正确计算。

错误情况: STM32H755 移植的时候,由于这个芯片最小的写入大小是256bit。 如果强行修改EF_WRITE_GRAN 为256。并不能正常使用。 原因:sector_hdr_data 这个结构体并没有做到256bit的字节对齐。会造成写过的flash的写入错误。 解决方法: 在sector_hdr_data 中添加额外的uint32_t reserved 用于字节对齐。 ------------------------------------------------------------------------------------------------------------- Issues: When porting the STM32H755, the chip's minimum write size is 256 bits. If EF_WRITE_GRAN is changed...

[Flash] Warning: Sector header check failed. Format this sector (0x00000000). 用的是stm32f407 片内flash,FAL读写擦都没问题,地址确定没问题,但是每次都提示这个,切换到3.3就好了,不清楚哪里配置出错了

[Flash]Warning: Sector header check failed. Format this sector (0x00386000). [Flash]Warning: Sector header check failed. Format this sector (0x00387000). [Flash]Warning: Sector header check failed. Format this sector (0x00388000). [Flash]Warning: Sector header...

[Flash]Error: The ENV (@0x00117010) CRC32 check failed! [Flash]Error: The ENV (@0x00118010) CRC32 check failed! 出现了异常,但是还是能正常读写数据... ` sector->remain = SECTOR_SIZE - SECTOR_HDR_DATA_SIZE; env_meta.addr.start = FAILED_ADDR; while ((env_meta.addr.start = get_next_env_addr(sector, &env_meta)) !=...