/* common/init/board_init.c */ulongboard_init_f_alloc_reserve(ulong top){/* Reserve early malloc arena */#ifdefined(CONFIG_SYS_MALLOC_F)top-=CONFIG_SYS_MALLOC_F_LEN;#endif/* LAST : reserve GD (rounded up to a multiple of 16 bytes) */top=rounddown(top-sizeof(struct global_data),...
uclass与uclass_driver的绑定 该流程通过dm_init_and_scan函数实现,它会分别扫描由U_BOOT_DRVINFO以及devicetree定义的设备,为它们分配udevice结构体,并完成其与driver和uclass之间的绑定关系等操作。需要注意的是该函数在board_init_f和board_init_r中都会被调用,其中board_init_f主要是为了解析重定位前需要使用的设...
b)调用board_init_f_alloc_reserve接口,从堆栈开始的地方,为u-boot中大名鼎鼎的GD ('global data') 数据结构,分配空间。 c)调用board_init_f_init_reserve接口,对GD进行初始化。 2)调用board_init_f函数,完成一些前期的初始化工作,例如: a)点亮一个Debug用的LED灯,表示u-boot已经活了。 b)初始化DRAM、DD...
2.3、board_init_f——板级前置初始化 跟随上文的程序执行流程图,我们看board_init_f这个函数。其位于common/board_f.c。 voidboard_init_f(ulongboot_flags){gd->flags=boot_flags;gd->have_console=0;if(initcall_run_list(init_sequence_f))hang();}staticconstinit_fnc_tinit_sequence_f[]={setup_mo...
* until board_init() is called below to remap IFC to high * region.*/#endifinitr_reloc_global_data,#ifdefined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500)initr_unlock_ram_in_cache,#endifinitr_barrier, initr_malloc, initr_console_record,#ifdef CONFIG_SYS_NONCACHED_MEMORY ...
前面我们讨论了board_init_f调用的调用时机,此函数主要是对init_sequence_f中的函数进行回调。 common/board_f.c static const init_fnc_t init_sequence_f[] = { #ifdef CONFIG_SANDBOX setup_ram_buf, #endif setup_mon_len, #ifdef CONFIG_OF_CONTROL ...
board_init_r 是执行 Uboot 的关键函数,该函数定义在 common/board_r.c 中,主要作用是进行一些必要的初始化工作,然后根据相关的配置情况,读取 Uboot,并启动它。 代码语言:javascript 代码运行次数:0 代码运行 voidboard_init_r(gd_t*new_gd,ulong dest_addr){...#ifdefCONFIG_NEEDS_MANUAL_RELOCint i;#en...
除了一些通过编译选项区分的部分,以及board_init_f和board_init_r函数的具体实现以外,uboot与spl的初始化流程完全相同。spl初始化流程在另一篇文章<spl启动分析>中已经做了较详细的介绍,<<SPL启动分析>> 故文本将主要介绍uboot特有部分的内容,其它代码只做简要分析。,我们还是先给出uboot的初始化流程图(为什么从...
uboot 通用board_init_f实现 #endifSYS common/board_f.c void board_init_f(ulong boot_flags) { #ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA /* * For some architectures, global data is initialized and used before * calling this function. The data should be preserved. For others,...
3.5 board_init_r() 3.5.1 init_sequence_r 3.5.2 main_loop 参照 0 自然环境 ARMV8,uboot 2020.10,rpi3服务平台 1 移殖架构 board,别说了,板级,uboot应用dts后,这方面编码应尽可能简单化 machine, SOC级,主要是一些外接设备 ARCH, 如arm(包括armv7和armv8) ...