1.init_sequence_r 2.initr_sunxi_plat 3.sprite_test 4.关联结构体 1.init_sequence_r uboot启动,首先遍历结构体 init_sequence_r 的函数,函数内部着重分析initr_sunxi_plat、main_loop两个函数的细则 static init_fnc_t init_sequence_r[] = { ... initr_sunxi_plat //完成flash的初始化,见下定义 ...
* until board_init() is called below to remap IFC to high * region. */ #endif initr_reloc_global_data, #if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) initr_unlock_ram_in_cache, #endif initr_barrier, initr_malloc, initr_console_record, #ifdef CONFIG_SYS_NONCACHE...
一、run_main_loop 我们介绍到了init_sequence_r的最后一个函数run_main_loop,该函数位于common/board_r.c文件中。 staticintrun_main_loop(void) { #ifdef CONFIG_SANDBOX sandbox_main_loop_init();#endif/*main_loop() can return to retry autoboot, if so just run it again*/for (;;) main_loop...
跑完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,ulongdest_addr)...
*/#ifdefCONFIG_CMD_NET//网络initr_ethaddr,#endif...run_main_loop,}; 驱动 从上面的代码可以知道 init_sequence_r 会根据宏定义初始化相应的功能,这里列出主要的几个,如下所示: 这里我们重点关注 mmc 和 net 驱动的初始化。
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) ...
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 //创建目录 tar -xjf arm-linux-gcc-4.3...
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。
进入第一个C函数:board_init_f() 该函数主要工作是: 清空gd指向的结构体、通过init_sequence函数数组,来初始化各个函数以及逐步填充gd结构体,最后划分内存区域,将数据保存在gd里,然后调用relocate_code()对uboot重定位 (gd是用来传递给内核的参数) 代码语言:javascript ...
Uboot启动流程大致如下:首先打开u-boot.lds文件,它是Uboot工程的关键链接脚本,指定入口地址ENTRY(_start)。通过查找u-boot.lds文件(通常在源码目录下),可以理解程序的组装过程。进入程序执行,board_init_f()函数在common/board_f.c中,负责调用init_sequence_f进行初始化,包括串口、定时器、...