Hi3556v200 u-boot+Liteos方案启动流程分析--4.通用uboot分析之board_init_r

1.前言

本文主要就Hi3556v200的U-boot+Liteos方案的启动流程做简要介绍.我们在前面分析过,uboot执行的过程会执行重定位,这也主要是为了为后续执行kenrel代码腾出空间。重定位后,uboot将执行重定位的uboot代码,这其中会执行board_init_r函数,它会遍历并执行一个函数数组。
U-boot版本:u-boot-2016.11

2.init_sequence_r函数数组

可以看出init_sequence_r函数数组与init_sequence_f还是有区别的,init_sequence_f更多的是集中在重定位相关的处理上,init_sequence_r更多的是执行真正的硬件的初始化相关的动作.

  • initr_caches
    使能cache

  • initr_reloc_global_data
    重定位global data

  • initr_malloc
    初始化malloc相关

  • bootstage_relocate

  • initr_dm

  • set_cpu_clk_info, /* Setup clock information */

  • stdio_init_tables,

  • initr_serial,

  • initr_announce,

  • INIT_FUNC_WATCHDOG_RESET

  • initr_addr_map

  • initr_logbuffer

  • initr_icache_enable

  • arch_early_init_r

  • power_init_board

  • initr_nand

  • initr_mmc

  • initr_ufs

  • initr_env

  • run_main_loop

3. run_main_loop

run_main_loop
|--main_loop
   |--s = bootdelay_process()
       |--s = getenv("bootcmd")
   |--autoboot_command(s)
       |-- run_command_list(s, -1, 0)

run_main_loop最终通过default_environment获取到bootcmd命令,并执行;
bootm命令主要是用于启动kernel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值