以board_init_f和board_init_r两个板级的初始化接口为例,u-boot分别在common/board_f.c和common/board_r.c两个文件中提供了通用实现。查看common/Makefile可知: 代码语言:javascript 复制 # boards obj-y+=board_f.o obj-y+=board_r.o 可以看到这两个文件都会调用到; 3. _main _main函数位于crt0_64....
initr_w83c553f,#endif#ifdef CONFIG_ARCH_EARLY_INIT_R arch_early_init_r,#endifpower_init_board, #ifndef CONFIG_SYS_NO_FLASHinitr_flash,#endifINIT_FUNC_WATCHDOG_RESET#ifdefined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86) || \defined(CONFIG_SPARC)/*initialize higher level...
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...
该流程通过dm_init_and_scan函数实现,它会分别扫描由U_BOOT_DRVINFO以及devicetree定义的设备,为它们分配udevice结构体,并完成其与driver和uclass之间的绑定关系等操作。需要注意的是该函数在board_init_f和board_init_r中都会被调用,其中board_init_f主要是为了解析重定位前需要使用的设备节点,这种类型节点在devicet...
书接上文(u-boot启动流程分析(二)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行)。 注1:由于u-boot后初始化过程,基本上涉及到了所有的软件模块,因此...
在board_init_r里面会通过spl_boot_device取得启动设备,K3 u-boot在MMC上,就返回BOOT_DEVICE_MMC1。 spl在board_init_f已经初始化了dm。这里就能够使用驱动了。在boot_from_devices里面:会使用已经声明在.uboot_list_2_段的驱动。如果从MMC设备找镜像,那就使用spl_mmc.c下面的spl_mmc_load_image。
2.5、board_init_r——板级后置初始化 2.6、main_loop——Uboot主循环 2.6.1 bootdelay_process 2.6.2 autoboot_command 2.6.3 cli_loop 二、uboot启动流程分析 同大多数的Bootloader一样,uboot的启动过程也分为BL1、BL2两个阶段,分别对应着SPL和Uboot。
跑完spl之后,如果选择了引导uboot启动,最后会进入board_init_r函数,该函数中的数组init_sequence_r中的最后一个元素run_main_loop函数包含我们要介绍的main_loop函数。 位于common/board_r.c下的board_init_r函数, 会按顺序调用数组init_seqence_r里面的函数 void board_init_r(gd_t *new_gd, ulong dest_ad...
6)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域) 7)重定位 复制uboot,然后修改SDRAM上的uboot链接地址) 8)清bss 9)跳转到board_init_r()函数,启动流程结束 1.首先来安装arm-linux-gcc-4.3.2交叉编译器 mkdir arm-linux-gcc-4.3.2 //创建目录 ...
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) ...