【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】018 - init_sequence_r :重定位后的函数列表
- 1、initr_reloc:配置gd->flags 指示 uboot已经执行了重定位,malloc内存分配器已经初始化好了
- 2、event_init:初始化U-Boot的 event 事件链表 &gd->event_state->spy_head
- 3、initr_reloc_global_data:重定位 gd->env_addr 环境变量的地址
- 4、initr_barrier:设置一个初始化屏障,确保在初始化过程中某些操作不会意外地被重排序
- 5、initr_malloc:挂载 malloc 对应的内存地址,调用 memset 对这块内存进行清零
- 6、log_init:初始化日志系统,设置日志输出相关的配置
- 7、initr_bootstage:标记当前进度为 BOOTSTAGE_ID_START_UBOOT_R,即after relocation
- 8、console_record_init:配置 gd->console_out, gd->console_in 内存
- 9、noncached_init:分配一段内存区域并将其标记为非缓存的
- 10、initr_of_live:申请一块内存,解析并保存树状设备树到该内存中,内存指针保存在 gd->of_root 中
- 11、initr_dm:初始化 ubboot DeviceModel 设备模型 gd->dm_root, gd->uclass_root
- 12、board_init:循环遍历 uclass 设备,把需要自动配置电压的设备配置初始化电压,最大电压,电小电压,自动电流
- 13、initr_binman:初始化Binman,Binman是U-Boot中的一个组件,用于管理和打包二进制映像
- 14、stdio_init_tables:初始化stdio设备链表,初始化标准输入输出(stdio)静态全局链表
- 15、serial_initialize:初始化所有的串口设备, 初始化串口终端 console, 保存在 gd->cur_serial_dev 中
- 16、initr_announce:打印字符串,说明当前 Uboot运行在RAM 中,打印重定位后的uboot 地址
- 17、dm_announce:输出设备模型的状态和已识别的设备列表
- 18、initr_watchdog:初始化并启动看门狗定时器, 注册cyclic 任务,看门狗喂狗函数为 wdt_cyclic
- 19、INIT_FUNC_WATCHDOG_RESET:调用 schedule 函数 reset 看门狗,同时遍历所有的触发周期性任务cyclic 链表,调度已经到时或超时的任务
- 20、post_output_backlog:输出 (Power-on Self-Test)上电自检时,各个模块的自检结果
- 21、pci_init:初始化PCI总线, 探测并初始化PCI总线
- 22、initr_mmc:初始化MMC(MultiMediaCard) 或 SD(SecureDigital)存储卡接口, 探测MMC/SD卡,配置接口以进行数据传输
- 23、initr_env:初始化环境变量子系统
- 24、stdio_add_devices:添加标准输入输出设备,比如串口或LCD屏幕
- 25、jumptable_init:初始化动态函数跳转表,用于在U-Boot命令行接口中处理命令
- 26、console_init_r:完成控制台的最终初始化,使能控制台输入输出
- 27、console_announce_r:打印 uboot 信息: U-Boot 2024.07-rc3 Jun 19 2024 - 22:34:40 - +0800
- 28、show_board_info:显示主板信息,model = "Rockchip RK3568 EVB1 DDR4 V10 Board"
- 29、misc_init_r:从OTP读取CPU ID ,配置mac 地址为 02 00 00 00 00 01
- 30、interrupt_init:初始化中断子系统,此处为空
- 31、board_late_init:执行board 后期初初始化,检测是否进入下载模式,Fastboot模式,还是UM模式挂载USB Mass Storage设备
- 32、pci_ep_init:初始化PCI endpoint device 端点设备, 探测并初始化 PCI 端点设备
- 33、initr_net:初始化网络设备,配置网卡地址
- 34、run_main_loop:进入U-Boot的主循环,循环等待用户输入命令,如果配置了自启动,则在等待超时后,自启动linuxkernel等HLOS
系列文章汇总:《【鸿蒙OH-v5.0源码分析之 Uboot+Kernel 部分】000 - 文章链接汇总》
本文链接:《【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】018 - init_sequence_r :重定位后的函数列表》
在 uboot .text, .rela.dyn, gd->new_gd, gd->fdt_blob 等内容重定位后,开始执行 重定位后的地址
接着执行 board_init_r(), 执行 init_sequence_r 中的函数
1、initr_reloc:配置gd->flags 指示 uboot已经执行了重定位,malloc内存分配器已经初始化好了
// u-boot-2024.07-rc3\common\board_r.c<