CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 4364|回复: 1

cubieboard2 uboot 环境变量无法保存

[复制链接]
发表于 2015-7-7 01:44:16 | 显示全部楼层 |阅读模式
在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);
}
测试好了。


回复

使用道具 举报

 楼主| 发表于 2015-7-7 02:55:26 | 显示全部楼层
不好意思,步骤2错了:
通过dbg发现:
mmcboot read: start 0x18000, sector 0x100
mmcboot write: start 0x1a800, sector 0x100
可以肯定是地址错了。
再看代码,按步骤5修改,就好了。

抱歉。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-4-23 19:48 , Processed in 0.019464 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部