cubieboard2 uboot 环境变量无法保存
在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);
}
测试好了。
不好意思,步骤2错了:
通过dbg发现:
mmcboot read: start 0x18000, sector 0x100
mmcboot write: start 0x1a800, sector 0x100
可以肯定是地址错了。
再看代码,按步骤5修改,就好了。
抱歉。
页:
[1]