1 开发环境
开发板:MIni2440
U-Boot:2010.03
引导系统:Linux
2 背景
虽然U-Boot对分区的概念不重要[1],但是使用saveenv保存环境变量时若环境变量覆盖内核数据,那就大问题了,会导致内核无法启动[2][3]。因此需要根据内核的分区表设置U-Boot的环境变量保存位置,使得U-Boot的参数保存位置与内核分区表的参数保存位置一致(内核分区表参见《U-Boot烧写Linux系统到Nand Flash》)。
3 材料与方法
要修改U-Boot的环境变量参数保存位置,必需修改U-Boot源码。
下载Tekkaman移植的U-Boot源码,打开include/configs/mini2440.h头文件,将260行的0X60000改为0X40000:
//#define CONFIG_ENV_OFFSET 0X60000
#define CONFIG_ENV_OFFSET 0X40000
然后根据《
Ubuntu14.04中编译U-Boot》的方法重新编译U-Boot即可。
参考资料
[1]关于NAND flash的MTD分区与uboot中分区的理解
[2][BootLoader] uboot的环境变量保存在哪?