RK3288 uboot启动流程
VS-RK3288嵌入式板卡 U-boot 启动流程小结
bl board_init_f -> crt0.S
initcall_run_list(init_sequence_f) -> board_f.c
arch_cpu_init ->
rk_get_chiptype //获取chip type (rk31xx, rk32xx等)
timer_init
env_init
init_baud_rate
serial_init
print_cpuinfo //dump cpu/pll info
dram_init //获取size以及end address
setup_dram_config ->
dram_init_banksize
show_dram_config
ldr pc, =board_init_r -> crt0.S
board_init_r -> board_r.c
init_sequence_r //调用init_sequence_r中的各个函数。
board_init rk32xx.c //设置machine type以及boot param起始地址,kernel要用到。
initr_serial -> board_r.c //初始化串口。
serial_initialize
initr_rk_storage -> //初始化storage
board_storage_init -> rk32xx.c
StorageInit -> storage.c //初始化eMMC.
memFunTab[memdev]->Init //调用emmcFunOp的SdmmcInit()
SdmmcInit sdmmcBoot.c 这里还会根据sd里存的信息来区分是要boot还是update.
StorageReadFlashInfo ->
gpMemFun->ReadInfo ->
SdmmcReadFlashInfo sdmmcBoot.c
initr_env //初始化u-boot中的环境变量
stdio_add_devices -> //不做什么。
console_init_r //作为device来管理。
board_late_init -> rk32xx.c
board_init_adjust_env //初始化bootdelay, bootcmd这些env.
load_disk_partitions ->
GetParam
ParseParam -> //解析parameter文件
ParseLine -> //获取各个参数选项,如machine model, cmdline等。
parse_cmdline ->
mtdpart_parse //获取分区表信息
rkimage_prepare_fdt rkimage.c //从boot或者resource image读取fdt地址,resource会覆盖boot.img的fdt.
key_init //各种key init
pmic_init -> power_rockchip.c //多个型号pmic的init,如rk808, rk818,一旦匹配到成功的就不再尝试其他的了。
pmic_act8846_init //sdk board用的是此IC。
pmic_rk808_init -> pmic_rk808.c //后续项目要替换成这颗。
rk808_parse_dt ->
fdt_device_is_available //status为disabled就没必要解析了。
fdt_get_i2c_info //获取i2c address, number,
rk808_i2c_probe //detect pmic.
fdt_get_regulator_node //获取pmic regulator信息
fdt_regulator_match //获取regulator初始化数据
rk808_set_regulator_init //设置各regulator初始化电压
fdtdec_decode_gpios //获取gpio内容, pwr_hold
charger_init
i2c_init
pmic_rk818_init
pwm_regulator_init -> //pwm init.
pwm_regulator_parse_dt
fg_init //gauge init.
SecureBootCheck
board_fbt_preboot ->
fbt_fastboot_init
board_fbt_get_reboot_type //读取reboot flag
board_fbt_key_pressed //再次检查key有没有按下来决定进入哪种模式。
board_fbt_low_power_check //电量检查,过低就充电,如果失败就直接关机.
fdtdec_get_int //读取u-boot是否显示logo值
drv_lcd_init -> lcd.c
lcd_init ->
lcd_ctrl_init -> rockchip_fb.c
rk_fb_parse_dt -> //从dts中解析出lcd的参数。
rk_fb_pwr_enable //上电
rkclk_lcdc_clk_set //设置clock
rk_lcdc_init //lcdc控制器初始化
rk_lcdc_load_screen //根据不同的接口设置不同的配置到控制器
lcd_clear ->
lcd_logo -> //show logo
bitmap_plot ->
rk_bitmap_from_resource ->
show_resource_image -> //name是logo.bmp
get_content ->
get_base_offset //先从resoure分区获取,失败的话从boot分区获取.
lcd_display_bitmap_center
board_fbt_low_power_off //如果是低电量而且没在充电,那就显示fail的logo,1s后关机.
lcd_standby
rk_backlight_ctrl
board_fbt_run_recovery //进recovery的情况
board_fbt_run_recovery_wipe_data //wipe data的情况,也是进recovery
board_fbt_request_start_fastboot //进fastboot mode
rkloader_run_misc_cmd //其他情况
run_main_loop ->
main_loop //启动kernel
do_bootrk -> cmd_bootrk.c
rk_load_image_from_storage ->
rkimage_load_image //先尝试从boot.img读取内核以及ramdisk
StorageReadLba //如果boot.img没有内核则从kernel中读取
rkimage_load_fdt //从resource分区中读取fdt.
rk_load_kernel_logo -> //加载kernel logo
get_content //图片存在resource 分区
rk_commandline_setenv
do_bootm_linux //加载kernel,这里就是标准u-boot的做法了.
转载注明:http://bbs.videostrong.com/
RK3288 uboot启动流程的更多相关文章
- 嵌入式Linux驱动学习之路(五)u-boot启动流程分析
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...
- u-boot启动流程分析(2)_板级(board)部分
转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global dat ...
- 1.移植uboot-分析uboot启动流程(详解)
本节总结: uboot启动流程如下: 1)设置CPU为管理模式 2)关看门狗 3)关中断 4)设置时钟频率 (FCLK:HCLK:PCLK=1:2:4,FCLK=120Mhz) 5)关mmu,初始 ...
- 海思uboot启动流程详细分析(三)【转】
1. 前言 书接上文(u-boot启动流程分析(二)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的. ...
- u-boot移植随笔(7):u-boot启动流程简图【转】
转自:http://www.latelee.org/porting-uboot/u-boot-porting-bootstrap.html u-boot移植随笔:u-boot启动流程简图 画上面这张图 ...
- am335x uboot启动流程分析
基本指令含义 .globl _start .globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号 b,bl b是不带返回的跳转 bl带返回的跳 ...
- imx6 uboot启动流程分析
参考http://blog.csdn.net/skyflying2012/article/details/25804209 这里以imx6平台为例,分析uboot启动流程对于任何程序,入口函数是在链接 ...
- Uboot启动流程分析(三)
1.前言 在前面的文章Uboot启动流程分析(二)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12002764.html 已经对_main函数的整个大体调用流程 ...
- Uboot启动流程分析(二)
1.前言 在前面的文章Uboot启动流程分析(一)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12000889.html 已经简单地分析了low_level_i ...
随机推荐
- 【转】How to initialize a two-dimensional array in Python?
[wrong way:] m=[[element] * numcols] * numrows for example: >>> m=[['a'] *3] * 2>>> ...
- 1、let const
1.作用域的概念 es6之前 es5 分为 全局作用域 函数作用域 es6 新增块级作用域 2.let const 与 var 区别 用var 可以无报错 此代码报错 引出 块级作用域 用 {} 包起 ...
- Linux 用户与组
在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux ...
- Jenkins master slave设置遇到的坑以及解决办法
写好了selenium测试脚本,本地运行没问题,但是现在流行分布式运行,并行执行以显得高大上. 然而,装高大上是要付出代价的. Selenium Grid 已经完美实现分布式和并行了. 奈何现在会Je ...
- Presto集群部署和配置
参考文档:1.https://blog.csdn.net/zzq900503/article/details/79403949 prosto部署与连接hive使用 2. ...
- idea报错Target JRE version (1.8.0_191) does not match project JDK version (java version "1.7"), will use sources from JDK: 1.8
使用mac的idea 启动项目,总是报一个问题 我在idea中添加了多个jdk,项目启动的时候就只是配置了一个正确的,项目的配置完全正确.但是配置好tomcat后,启动就会报这个错误. 解决方案:需要 ...
- scikit_learn,NLTK导入分类器相关流程命令
- 记一次win10+oracle11.2安装
下载安装文件,地址:链接:https://pan.baidu.com/s/1gObmWv5_w2Y4Jlf2-RkBYA 密码:1rx9 安装手册参考:链接:https://pan.baidu.com ...
- Struct2 基础介绍
前面花一周时间学习了servlet+jsp+mysql, 并且简单实现了登录注册等操作.对Servlet应用有了基础了解! 关于Struct2这个经常听说,但是自己没有用过.今天在这学习总结下,目的是 ...
- ios下,<input type="checkbox"> 点击时出现黑色块
ios下,<input type="checkbox"> 点击时出现黑色块如下图 解决方法: