在env_init函数中env_driver_lookup_default去读取env的驱动,如果读取成功测使用env驱动里面的方法init来获取环境变量如果不成功使用default_environment环境变量,env_init会在 board_init_f中被调用,在后面的board_init_r还会再次调用initr_env函数确认环境变量是否有增加或者修改。 加载环境变量的函数 env/env.c +130...
read1_fail = read_env(mmc, CONFIG_ENV_SIZE, offset1, tmp_env1); read2_fail = read_env(mmc, CONFIG_ENV_SIZE, offset2, tmp_env2); ret = env_import_redund((char *)tmp_env1, read1_fail, (char *)tmp_env2, read2_fail, H_EXTERNAL); fini: fini_mmc_for_env(mmc); err: if ...
struct udevice{conststruct driver*driver;constchar*name;void*plat_;void*parent_plat_;void*uclass_plat_;ulong driver_data;struct udevice*parent;void*priv_;struct uclass*uclass;void*uclass_priv_;void*parent_priv_;struct list_head uclass_node;struct list_head child_head;struct list_head sibling_...
譬如控制台实现、crc校验的。但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。 cpu: 这个目录是SoC相关的,里面存放的代码都是SoC相关初始化和控制代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S也在这里)。里面很多子文件夹,每一...
const void *ops; /* driver-specific operations */ uint32_t flags; #if CONFIG_IS_ENABLED(ACPIGEN) struct acpi_ops *acpi_ops; #endif } 驱动可以通过以下接口注册到系统中: #define U_BOOT_DRIVER(__name) \ ll_entry_declare(struct driver, __name, driver) ...
env_relocate (); #ifdef CONFIG_VFD drv_vfd_init(); #endif #ifdef CONFIG_SERIAL_MULTI serial_initialize(); #endif gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); stdio_init (); jumptable_init (); #if defined(CONFIG_API)
(5)cpu_mmc_init函数在uboot/cpu/s5pc11x/cpu.c中,这里面又间接的调用了uboot/driver/mmc/s3c_mmcxxx.c的驱动代码来实现mmc控制器的初始化。 6、6 start_armboot函数解析11 1、start_armboot函数中到了770行 2、776行 env_relocate函数 (1)环境变量的重定位,将SD卡中的环境变量重定位到DDR中。
setenv bootargs ‘initrd=0x32000000,0xa00000 root=/dev/ram0 console=ttySAC0 mem=64M init=/linuxrc’2). 假设文件系统是ramdisk,且在flash中,bootargs的设置应该如下:setenv bootargs ‘mem=32M console=ttyS0,115200 root=/dev/ram rw init=/linuxrc’注意这种情况下你应该要在bootm命令中指定ramdisk...
14)initr_env,环境变量有关的初始化。 15)initr_secondary_cpu,初始化其它的CPU core。 16)stdio_add_devices,各种输入输出设备的初始化,如LCD driver等。 17)interrupt_init,中断有关的初始化。 18)initr_enable_interrupts,使能系统的中断,涉及的配置项有CONFIG_ARM(ARM平台u-boot实在开中断的情况下运行的)...
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 (!drv->load) continue; if (!env_has_inited(drv->location)) continue; printf("###\r\n...