文章目录
环境变量的作用
环境变量影响uboot的运行,决定uboot的一些特性;例如uboot开机自启的倒计时就是由bootdelay环境决定的。
环境变量的优先级
在没有定义环境变量的时候,uboot就会使用代码中给的默认的环境变量值。如果有定义了环境变量就会优先使用定义的环境变量。
例如机器码,在(我用的版本)uboot中没有定义板子的环境变量的机器码,所以当你启动内核的时候,就回去校验内核中中机器码和代码中默认给的机器码,内核启动;对比,在uboot中定义一个machid环境变量,设置他的值(和内核的机器码不一样),在启动内核,启动失败,因为他优先使用了环境变量,检验对不上就会启动失败。
默认的环境变量
在common/env_common.c
/************************************************************************
* Default settings to be used when no valid environment is found
*/
#define XMK_STR(x) #x
#define MK_STR(x) XMK_STR(x)
#if defined(CONFIG_S3C6410) || defined(CONFIG_S3C6430) || defined(CONFIG_S5P6440) || defined(CONFIG_S5PC100) || defined(CONFIG_S5PC110) || defined(CONFIG_S5P6442)
uchar default_environment[CFG_ENV_SIZE] = {
#else
uchar default_environment[] = {
#endif
#ifdef CONFIG_BOOTARGS
"bootargs=" CONFIG_BOOTARGS "\0"
#endif
#ifdef CONFIG_BOOTCOMMAND
"bootcmd=" CONFIG_BOOTCOMMAND "\0"
#endif
#if 0 /* for fast booting */
"verify=" MK_STR(no) "\0"
#endif
#ifdef CONFIG_MTDPARTITION
"mtdpart=" CONFIG_MTDPARTITION "\0"
#endif
#ifdef CONFIG_RAMBOOTCOMMAND
"ramboot=" CONFIG_RAMBOOTCOMMAND "\0"
#endif
#ifdef CONFIG_NFSBOOTCOMMAND
"nfsboot=" CONFIG_NFSBOOTCOMMAND "\0"
#endif
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0