先执行 mmc dev ${mmcdev}切换到 EMMC 上,然后使用命令 mmc rescan 扫描看有没有 SD 卡或者 EMMC 存在,如果没有的话就直接跳到else,执行 run netboot,netboot也是一个自定义的环境变量,这个变量是从网络启动 Linux 的。 扫描到EMMC后,run loadbootscript: loadbootscript=fatload mmc ${mmcdev}:${mmcpart}...
-->env_fat_load //uboot/env/fat.c,调用fat文件系统接口,从fat文件系统中读取uboot.env环境变量文件 -->env_import //uboot/env/common.c,先对读取的环境变量进行校验,如果校验失败,则说明环境变量不存在,就会执行env_set_default函数来设置默认环境变量,最后将调用himport_r函数用哈希链表来表示环境变量 u...
env_t embedded_environment __UBOOT_ENV_SECTION__(environment) = { #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT 1, #endif { #elif defined(DEFAULT_ENV_INSTANCE_STATIC) static char default_environment[] = { #elif defined(DEFAULT_ENV_IS_RW) uchar default_environment[] = { #else const uchar defaul...
2.1搜索using default environment,找到位于set_default_env()函数: 从上面代码可以看到, default_environment这个变量,这是个全局字符数组,从字面上就可知道,这个是默认环境变量数组,里面保存了各个环境值 2.2进入default_environment[]看看 这个数组比较长,所以只剪切一部分,其中MK_STR()的作用就是将数值转换为字符串...
AI代码解释 #ifdefDEFAULT_ENV_INSTANCE_EMBEDDEDenv_t embedded_environment__UBOOT_ENV_SECTION__(environment)={#ifdefCONFIG_SYS_REDUNDAND_ENVIRONMENT1,#endif{#elifdefined(DEFAULT_ENV_INSTANCE_STATIC)staticchar default_environment[]={#elifdefined(
debug("%s: Environment failed to init (err=%d)\n", __func__, ret); return ret; } return 0; } common/board_r.c +522 static int initr_env(void) { /* initialize environment */ if (should_load_env()) env_relocate(); else ...
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } /*指定bss段,告诉加载器不要加载这个段*/ __bss_end = .; /*把_end赋值为当前位置,即bss段的结束位置*/ } 通过上面的分析可以看出 由于在链接脚本中规定了文件 start.o(对应于 start.S) 作为整个 uboot 的起始点,因此启动 uboot 时会执行首先执...
int env_load(void) { struct env_driver *drv; int best_prio = -1; int prio; for (prio = 0; (drv = env_driver_lookup(ENVOP_LOAD, prio)); prio++) { int ret; if (!env_has_inited(drv->location)) continue; printf("Loading Environment from %s... ", drv->name); ...
PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。 嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成,它主要的功能是加载与引导内核映像。
struct environment_s *bi_env; ulong bi_arch_number; /* 该板唯一的ID */ ulong bi_boot_params; /* 存放参数的地方 */ struct /* RAM配置 */ { ulong start; ulong size; } bi_dram[CONFIG_NR_DRAM_BANKS]; // ... } bd_t; 1. ...