说明:源码来自opensource的最新uboot,以sdhc的设备树节点被uboot修改为例说明。
调用过程;
do_bootm(cmd/bootm.c)//通用命令
->do_bootm_subcommand(cmd/bootm.c)
->do_bootm_states(common/bootm.c)
->bootm_os_get_boot_func() (common/bootm_os.c)
return boot_os[os];
->static boot_os_fn *boot_os[] = { (common/bootm_os.c)//通用代码
[IH_OS_U_BOOT] = do_bootm_standalone,
#ifdef CONFIG_BOOTM_LINUX
[IH_OS_LINUX] = do_bootm_linux,
->do_bootm_linux(arch/arm/lib/bootm.c) //架构相关
->boot_prep_linux(arch/arc/lib/bootm.c) //架构相关
->image_setup_linux(common/image.c)
->image_setup_libfdt(common/image-fdt.c)
->ft_board_setup( board/freescale/ls2080ardb/ls2080ardb.c) //板级相关
->ft_cpu_setup(arch/arm/cpu/armv8/fsl-layerscape/fdt.c)
eg:#ifdef CONFIG_FSL_ESDHC
fdt_fixup_esdhc(blob, bd);//对sdhc修正
#endif
->fdt_fixup_esdhc(drivers/mmc/fsl_esdhc.c)
->esdhc_status_fixup(修改status状态 okey 或者disabled 使能/失能设备)
->
解析fixup过程&#x