Merge pull request #159 from shiyj/master

[fix] 当环形缓冲的开始地址大于结束地址时,index转成地址时要加上log_area_start_addr
master
朱天龙 (Armink) 2 years ago committed by GitHub
commit a67fffcb4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -474,13 +474,15 @@ static uint32_t log_index2addr(size_t index) {
size_t sector_num = index / (EF_ERASE_MIN_SIZE - LOG_SECTOR_HEADER_SIZE) + 1;
header_total_offset = sector_num * LOG_SECTOR_HEADER_SIZE;
uint32_t virtual_addr = log_start_addr + index + header_total_offset;
if (log_start_addr < log_end_addr) {
return log_start_addr + index + header_total_offset;
return virtual_addr;
} else {
if (log_start_addr + index + header_total_offset < log_area_start_addr + LOG_AREA_SIZE) {
return log_start_addr + index + header_total_offset;
return virtual_addr;
} else {
return (log_start_addr + index + header_total_offset) % LOG_AREA_SIZE;
// the address will restart from the first sector address.
return virtual_addr - (log_area_start_addr + LOG_AREA_SIZE) + log_area_start_addr;
}
}
}

Loading…
Cancel
Save