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

log_seq_read读取数据超过1个扇区时,会数据错乱,应修改为 #161

Open cenyi12345678 opened 11 months ago

cenyi12345678 commented 11 months ago

`static EfErrCode log_seq_read(uint32_t addr, uint32_t *log, size_t size) { EfErrCode result = EF_NO_ERR; size_t read_size = 0, read_size_temp = 0;

while (size) {
    /* move to sector data address */
    if ((addr + read_size) % EF_ERASE_MIN_SIZE == 0) {
        addr += LOG_SECTOR_HEADER_SIZE;
    }
    /* calculate current sector last data size */
    read_size_temp = EF_ERASE_MIN_SIZE - ((addr + read_size) % EF_ERASE_MIN_SIZE);
    if (size < read_size_temp) {
        read_size_temp = size;
    }
    result = ef_port_read(addr + read_size, log + read_size / 4, read_size_temp);
    if (result != EF_NO_ERR) {
        return result;
    }
    read_size += read_size_temp;
    size -= read_size_temp;
}

return result;

}`