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...
init_fnc_t *init_sequence[] = { cpu_init, /* 与CPU相关的初始化 */ board_init, /* 与板子初始化相关的初始化 */ interrupt_init, /* 中断初始化 */ env_init, /* 初始化环境变量 */ init_baudrate, /* 初始化波特率设置 */ serial_init, /* serial通信相关初始化 */ console_init_f, ...
console_init_f函数(控制台第一阶段的初始化) display_banner函数(用来串口输出显示uboot的logo,打开背光) print_cpuinfo函数(打印cpu的一些信息) checkboard函数(打印“Board: x210”字符) init_func_i2c函数 dram_init函数(实际只是赋值操作,因为前面已经初始化) display_dram_config函数(打印内存信息) mem_malloc_...
首先,初始化gd->flags|=GD_FLG_SERIAL_READY表示serial以就绪 然后,调用具体serial初始化函数,将所用的serial端口和波特率等设置到就绪状态。 console_init_f()之中了一件事情,就是将gd->have_console=1,表示有控制台。 board_init_f最后调用setup_reloc()两个很重要的动作: gd->reloc_off = gd->relocaddr...
介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行)。 注1:由于u-boot后初始化过程,基本上涉及到了所有的软件模块,因此本文不能一一分析,基本原则就是捡看着顺眼的、熟的下手...
cpu_init, /* cpu 的基本设置 */ board_init, /* 开发板的基本初始化 */ interrupt_init, /* 初始化中断 */ env_init, /* 初始化环境变量 */ init_baudrate, /* 初始化波特率 */ serial_init, /* 串口通讯初始化 */ console_init_f, /* 控制台初始化第一阶段 */ ...
2、调用board_init_f。在这里会初始化串口、timer、计算重定位的位置等。3、调用relocate_code将uboot...
board_early_init_f(), 早期board级初始化,一般没用 timer_init(), timer初始化 env_init,environment系统初始化 init_baud_rate,gd->baudrate = env_get_ulong("baudrate", 10, CONFIG_BAUDRATE),优先从环境变量“baudrate”中获取 serial_init, 初始化串口,之后串口可用 console_init_f display_options,...
clks_probe // 初始化系统频率regulators_enable_boot_on // 初始化系统电源io_domain_init // io-domain初始化set_armclk_rate // __weak,ARM提频(平台有需求才实现)dvfs_init // 宽温芯片的调频调压rk_board_init // __weak,由各个具体平台进行实现console_init_rboard_late_init // 【平台late初始...
27.1. u-boot启动第一阶段源代码分析¶ u-boot加载启动内核过程可以大致分为两个阶段上,接下来我们将详细分析u-boot源代码(版本号为2019.04)。 对于imx6ull而言,其第一阶段对应的文件时arch/arm/cpu/armv7/start.S和arch/arm/cpu/armv7/lowlevel_init.S u-boot启动第一阶段流程图如...