OS: Android 7.1
Board: Firefly-RK3399
Uboot: v2017.02
整个过程和rk3288平台的uboot(v2014.10)加载流程类似,可参考
[RK3288][Android6.0] U-boot 启动流程小结
bl board_init_f -> crt0_64.S //初始化环境安装
board_init_f -> board_f.c
initcall_run_list -> //依次运行init_sequence_f数组中的函数
setup_fdt //如果有的话,允许环境变量fdtcontroladdr地址中的dts覆盖系统的那份
arch_cpu_init -> cpu.c
rkclk_set_pll //设置pll
rk_get_chiptype //获取chip type,当前是CONFIG_RK3399
env_init env_rk.c //环境变量初始化, 使用那个env_rk.c的编译由CONFIG_ENV_IS_IN_RK_STORAGE控制打开
init_baud_rate //获取默认波特率设置, 在rk3399_deconfig中已经定义了为1500000
serial_init //初始化当前使用的串口
print_cpuinfo //打印cpu以及版本还有clock信息
show_board_info ->
checkboard rk33xx.c //打印board信息
dram_init ->
get_ram_size //获取ram size,代码中先固定CONFIG_SYS_SDRAM_SIZE为128M
reserve_lcd //预留lcd内存空间,其他模块预留的形式都是以reserve_xxx开头的
setup_dram_config //ram配置信息放到全局变量中管理
show_dram_config //打印ddr信息
b board_init_r -> crt0_64.S //后期环境配置
board_init_r -> board_r.S
initcall_run_list -> //依次运行init_sequence_r数组中的函数
board_init -> rk33xx.c //设置machine type以及boot params地址
initr_serial //选择当前使用的串口终端
arch_early_init_r //中断,dma初始化
initr_rk_storage ->
board_storage_init ->
StorageInit ->
memFunTab[memdev]->Init //根据当前flash type来选择其中一个初始化, 支持sd,emmc. ums和nand的宏在rk33plat.h中被undef.
SdhciInit sdhciBoot.c //读取存储信息及大小
initr_env //环境变量初始化
board_late_init -> rk33xx.c
board_init_adjust_env //设置bootdelay,bootcmd这几个环境变量
load_disk_partitions -> //加载eMMC中的分区信息
GetParam ->
StorageReadLba ->
gpMemFun->ReadLba ->
SdhciBootReadLBA
ParseParam
rkimage_prepare_fdt //优先从boot分区去加载fdt,如果找不到,就从resource分区加载
key_init //按键初始化,包括rocku***, fastboot, recovery这几个主要key的初始化
pmic_init -> power_rockchip.c //板子用的是rk808
pmic_rk808_init
pwm_regulator_init //初始化pwm相关的regulator,这里用的是另一路pwm,用于控制DCDC,和backlight无关。
fg_init //fuel gauge初始化
board_fbt_preboot -> fastboot.c 即使不进入fastboot模式,有些变量也是需要配置的
fbt_fastboot_init //判断当前device是否处于locked状态
board_fbt_get_reboot_type //获取当前reboot type, fastboot, rocku***, normal这些
board_fbt_low_power_check //低电量时处于充电状态时要充电,否则直接关机
rockchip_display_init //display部分初始化
board_fbt_low_power_off //如果处于低电量而且没在充电时,降低背光并且显示警告logo,1S后关机
rockchip_show_logo -> //优先显示uboot logo,没有则显示kernel logo。
load_bmp_logo
run_main_loop ->
main_loop ->
bootdelay_process //延时处理,并且获取bootcmd参数用于后面开机进入kernel处理
autoboot_command ->
do_bootrk //进入kernel
OS: Android 7.1
Board: Firefly-RK3399
Uboot: v2017.02
整个过程和rk3288平台的uboot(v2014.10)加载流程类似,可参考
[RK3288][Android6.0] U-boot 启动流程小结
bl board_init_f -> crt0_64.S //初始化环境安装
board_init_f -> board_f.c
initcall_run_list -> //依次运行init_sequence_f数组中的函数
setup_fdt //如果有的话,允许环境变量fdtcontroladdr地址中的dts覆盖系统的那份
arch_cpu_init -> cpu.c
rkclk_set_pll //设置pll
rk_get_chiptype //获取chip type,当前是CONFIG_RK3399
env_init env_rk.c //环境变量初始化, 使用那个env_rk.c的编译由CONFIG_ENV_IS_IN_RK_STORAGE控制打开
init_baud_rate //获取默认波特率设置, 在rk3399_deconfig中已经定义了为1500000
serial_init //初始化当前使用的串口
print_cpuinfo //打印cpu以及版本还有clock信息
show_board_info ->
checkboard rk33xx.c //打印board信息
dram_init ->
get_ram_size //获取ram size,代码中先固定CONFIG_SYS_SDRAM_SIZE为128M
reserve_lcd //预留lcd内存空间,其他模块预留的形式都是以reserve_xxx开头的
setup_dram_config //ram配置信息放到全局变量中管理
show_dram_config //打印ddr信息
b board_init_r -> crt0_64.S //后期环境配置
board_init_r -> board_r.S
initcall_run_list -> //依次运行init_sequence_r数组中的函数
board_init -> rk33xx.c //设置machine type以及boot params地址
initr_serial //选择当前使用的串口终端
arch_early_init_r //中断,dma初始化
initr_rk_storage ->
board_storage_init ->
StorageInit ->
memFunTab[memdev]->Init //根据当前flash type来选择其中一个初始化, 支持sd,emmc. ums和nand的宏在rk33plat.h中被undef.
SdhciInit sdhciBoot.c //读取存储信息及大小
initr_env //环境变量初始化
board_late_init -> rk33xx.c
board_init_adjust_env //设置bootdelay,bootcmd这几个环境变量
load_disk_partitions -> //加载eMMC中的分区信息
GetParam ->
StorageReadLba ->
gpMemFun->ReadLba ->
SdhciBootReadLBA
ParseParam
rkimage_prepare_fdt //优先从boot分区去加载fdt,如果找不到,就从resource分区加载
key_init //按键初始化,包括rocku***, fastboot, recovery这几个主要key的初始化
pmic_init -> power_rockchip.c //板子用的是rk808
pmic_rk808_init
pwm_regulator_init //初始化pwm相关的regulator,这里用的是另一路pwm,用于控制DCDC,和backlight无关。
fg_init //fuel gauge初始化
board_fbt_preboot -> fastboot.c 即使不进入fastboot模式,有些变量也是需要配置的
fbt_fastboot_init //判断当前device是否处于locked状态
board_fbt_get_reboot_type //获取当前reboot type, fastboot, rocku***, normal这些
board_fbt_low_power_check //低电量时处于充电状态时要充电,否则直接关机
rockchip_display_init //display部分初始化
board_fbt_low_power_off //如果处于低电量而且没在充电时,降低背光并且显示警告logo,1S后关机
rockchip_show_logo -> //优先显示uboot logo,没有则显示kernel logo。
load_bmp_logo
run_main_loop ->
main_loop ->
bootdelay_process //延时处理,并且获取bootcmd参数用于后面开机进入kernel处理
autoboot_command ->
do_bootrk //进入kernel
举报