|
在uboot中,执行setenv,保存,重启后发现没有保存。
解决步骤:
1:sun7i.h中 #define DEBUG 1
2:烧录。进入uboot模式,执行printenv和saveenv,可以看到如下:
sunxi flash read : start 0x1a800, sector 0x100
mmcboot write: start 0x1a800, sector 0x100
查看代码,对应
sunxi_flash_read和sunxi_flash_write函数。
3:串口看,系统没有出错导致使用默认的环境变量。分析认为读写地址是对的。
4:再看代码,在flash_env_relocate_spec函数中的read后加打印,确实读出的是环境变量,只是没有新建的变量。
这时,确定是保存函数出问题。
5:static int flash_saveenv(void),感觉有问题:
static int flash_saveenv(void)
{
。。。 。。。
return sunxi_flash_write(env_offset, env_size/512, &env_new);
}
修改如下:
static int flash_saveenv(void)
{
u32 start;
。。。 。。。
start = sunxi_partition_get_offset_byname(CONFIG_SUNXI_ENV_PARTITION);
return sunxi_flash_write(start, CONFIG_ENV_SIZE/512, &env_new);
}
测试好了。
|
|