|
发表于 2015-7-18 11:29:04
|
显示全部楼层
本帖最后由 Jmhh247 于 2015-7-18 11:30 编辑
我在试用过程中遇到个小问题,在normal mode下,程序死在ef_env.c中
/* total_size must be aligned with erase_min_size */
if (EF_USER_SETTING_ENV_SIZE % erase_min_size == 0) {
EF_ASSERT(EF_USER_SETTING_ENV_SIZE == total_size); /* 死在这一行 line 124 */
} else {
EF_ASSERT((EF_USER_SETTING_ENV_SIZE/erase_min_size + 1)*erase_min_size == total_size);
}
查了源码发现提供的demo里STM32型号的 PAGE_SIZE 为2046,而我用的STM32型号的 PAGE_SIZE 为1024,
EF_USER_SETTING_ENV_SIZE 默认定义为(2 * 1024),
total_size = ENV_SECTION_SIZE 默认定义为 ERASE_MIN_SIZE,其中ERASE_MIN_SIZE = PAGE_SIZE 。
我将ENV_SECTION_SIZE 定义为(2 * ERASE_MIN_SIZE)后,满足条件 EF_ASSERT(EF_USER_SETTING_ENV_SIZE == total_size);
试用通过。
现在想请教楼主在normal mode下 EF_ASSERT(EF_USER_SETTING_ENV_SIZE == total_size); 这个判断是出于何种考虑……
能否直接改成
/* ENV section total bytes size in normal mode. */
#define ENV_SECTION_SIZE (EF_USER_SETTING_ENV_SIZE)
如果可以这样改动,用户可能就不用同时修改 EF_USER_SETTING_ENV_SIZE 和 ENV_SECTION_SIZE两个参数了吧?
|
|