首先,我觉得ulog_easyflash非常实用,并且用起来很友善,非常感谢rt-thread 和 ulog_easyflash的相关团队。
现在我遇到的问题是,如果我用RT_ASSERT(0)连续测试2次(先调用),然后终端输入ulog_flash read指令,发现两次RT_ASSERT(0)触发的log内容均没有输出。
详细过程如下:
1)首先正常运行情况下,调用RT_ASSERT(0),触发log输出。然后系统复位,然后终端输入ulog_flash read指令,输出内容正是正常的RT_ASSERT(0)触发的内容。将触发的内容拷贝到word统计字节数,达2600+Byte, 这个大小,我猜测估计跟PKG_EASYFLASH_ERASE_GRAN(4K)有点关系。(这些内容2600+字节篇幅较大,我放到附件里,可以下载附件查看)
2)其次就是重复1)的操作。按照期望,我以为终端输入ulog_flash read指令,能看到2份的
RT_ASSERT(0)触发的异常内容信息,实际上没有,感觉好像清空了。
我这里ef的fal分区情况如下:
[I/FAL] | ef | norflash0 | 0x00000400 | 0x0007fc00( 511.00KB = 0.50MB) |
easyflash和ulog_flash的宏配置如下:
#define PKG_USING_EASYFLASH
#define PKG_EASYFLASH_ENV
#define PKG_EASYFLASH_ENV_AUTO_UPDATE
#define PKG_EASYFLASH_ENV_VER_NUM 0
#define PKG_EASYFLASH_LOG
#define PKG_EASYFLASH_LOG_AREA_SIZE 163840
#define PKG_EASYFLASH_ERASE_GRAN 4096
#define PKG_EASYFLASH_WRITE_GRAN_1BIT
#define PKG_EASYFLASH_WRITE_GRAN 1
#define PKG_EASYFLASH_START_ADDR 0
#define PKG_EASYFLASH_DEBUG
#define PKG_USING_EASYFLASH_V410
#define PKG_EASYFLASH_VER_NUM 0x40100
#define PKG_USING_ULOG_EASYFLASH
#define ULOG_EASYFLASH_BACKEND_ENABLE
#define ULOG_EASYFLASH_CFG_SAVE_ENABLE
#define PKG_USING_ULOG_EASYFLASH_LATEST_VERSION
easyflash 的ENV存取参数用过一段时间都没有问题。ulog除了这个问题,其它正常。
另外,norflash0用的是W25qXX系列。
请大神指点,谢谢!