海思uboot保存环境变量,重启后丢失问题

最近在搞海思Hi3518ev300开发,U-boot启动后,使用setenv和saveenv保存环境变量,但每次重启后,环境变量都丢失,检查之后,是环境变量的地址和Size设置错误,整理一下,大概以下3个位置的参数需设置对应:
位置1:
在SDK根目录下,在make all之前,需要先用make menuconfig设置Memory地址:
此处0x70000是parameter flashbackup address地址;
0x90000是wifi参数地址;
这中间其实还有地址0x80000,大小0x10000(64K)的内存,这64K就是 boottargs(后面会讲,HiTool参数)的参数
海思uboot保存环境变量,重启后丢失问题_第1张图片
位置2:
这是HiTool烧录时设置的参数:
可以看到 boottargs 选项的地址就是512K(0x80000),大小64K(0x10000)
海思uboot保存环境变量,重启后丢失问题_第2张图片
位置3:
还需修改代码中 CONFIG_ENV_OFFSET 和 CONFIG_ENV_SIZE 的参数,这里也需对应设置
海思uboot保存环境变量,重启后丢失问题_第3张图片
修改以上3个参数后,重新编译并烧录U-boot,之后保存环境变量应该就可以了。

如果你细心就会发现,其实位置1菜单的地址设置和位置2的HiTool烧录配置,都是对应的,比如 0x8c0000 就是 Rootfs在SPI Flash的起始地址,在HiTool烧录的时候,rootfs_liteos.romfs 的地址就是 8960K (就是0x8c0000)

你可能感兴趣的:(海思)