呵呵呵
呵呵呵
这家伙很懒,什么也没写!

注册于 1年前

回答
1
文章
0
关注者
0

发布于1年前

粘贴了一部分代码,但是可以看出来不是索引值而是地址,条数索引值更有意义

  1. EfErrCode ef_log_read(size_t index, uint32_t *log, size_t size) {
  2. EfErrCode result = EF_NO_ERR;
  3. size_t cur_using_size = ef_log_get_used_size();
  4. size_t read_size_temp = 0;
  5. size_t header_total_num = 0;
  6. if (!size) {
  7. return result;
  8. }
  9. EF_ASSERT(size % 4 == 0);
  10. EF_ASSERT(index < cur_using_size);
  11. if (index + size > cur_using_size) {
  12. EF_DEBUG("Warning: Log read size out of bound. Cut read size.\n");
  13. size = cur_using_size - index;
  14. }
  15. /* must be call this function after initialize OK */
  16. if (!init_ok) {
  17. return EF_ENV_INIT_FAILED;
  18. }
  19. if (log_start_addr < log_end_addr) {
  20. log_seq_read(log_index2addr(index), log, size);
  21. } else {
  22. if (log_index2addr(index) + size <= log_area_start_addr + LOG_AREA_SIZE) {
  23. /* Flash log area
  24. * |--------------|
  25. * log_area_start_addr --> |##############|
  26. * |##############|
  27. * |##############|
  28. * |--------------|
  29. * |##############|
  30. * |##############|
  31. * |##############| <-- log_end_addr
  32. * |--------------|
  33. * log_start_addr --> |##############|
  34. * read start --> |**************| <-- read end
  35. * |##############|
  36. * |--------------|
  37. *
  38. * read from (log_start_addr + log_index2addr(index)) to (log_start_addr + index + log_index2addr(index))
  39. */
  40. result = log_seq_read(log_index2addr(index), log, size);
  41. } else if (log_index2addr(index) < log_area_start_addr + LOG_AREA_SIZE) {

回到
顶部

发布
问题

投诉
建议