[RK3288][Android6.0] U-boot 启动流程小结【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/52536093
Platform: RK3288
OS: Android 6.0
Version: v2014.10
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_ctr_parse_dt //获取power相关参数
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的做法了.
[RK3288][Android6.0] U-boot 启动流程小结【转】的更多相关文章
- [RK3288][Android6.0] Display驱动初始化流程小结【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/52584903 Platform: RK3288OS: Android 6.0Kernel: ...
- [RK3288][Android6.0] 系统按键驱动流程分析【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/77894406 Rockchip的按键驱动位于 kernel/drivers/input/ke ...
- Spring Boot启动流程分析
引言 早在15年的时候就开始用spring boot进行开发了,然而一直就只是用用,并没有深入去了解spring boot是以什么原理怎样工作的,说来也惭愧.今天让我们从spring boot启动开始 ...
- [RK3288][Android6.0] 调试笔记 --- Goodix GT9和GT9F区别【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78341425 Platform: RK3288 OS: Android 6.0 Kernel ...
- Spring Boot启动流程详解(一)
环境 本文基于Spring Boot版本1.3.3, 使用了spring-boot-starter-web. 配置完成后,编写了代码如下: @SpringBootApplication public ...
- Spring Boot启动流程详解
注:本文转自http://zhaox.github.io/java/2016/03/22/spring-boot-start-flow 环境 本文基于Spring Boot版本1.3.3, 使用了sp ...
- [RK3288][Android6.0] TS-ADC驱动流程小结【转】
本文转载自:https://blog.csdn.net/kris_fei/article/details/55045936 Platform: RK3288OS: Android 6.0Kernel: ...
- [RK3288][Android6.0] 关于uboot中logo相关知识点小结【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/76256224 Platform: Rockchip OS: Android 6.0 Kern ...
- [RK3288][Android6.0] 音频调试方法小结【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/70053135 Platform: ROCKCHIPOS: Android 6.0Kernel ...
随机推荐
- 原生js实现简单的焦点图效果
用到一些封装好的运动函数,主要是定时器 效果为图片和图片的描述定时自动更换 <!DOCTYPE html> <html> <head> <meta chars ...
- Python3之切片的道理
list的切片有三个参数:起点,终点,步长 list[::-1] 相当于起点为最后的一个,终点为第一个,然后一次减少一个 更多的看下面的测试 >>> a = [0,1,2,3,4,5 ...
- Linux 信息查询
CPU信息查看 #查看CPU型号: $>grep 'model name' /proc/cpuinfo |uniq model name : Intel(R) Xeon(R) CPU ...
- [Windows Server 2012] IIS自带FTP配置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...
- GitHub代码托管平台搭建
GitHub代码托管平台搭建 注册账户以及创建仓库 要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/. 之后就可以创建仓库了(免费 ...
- Centos6.7 ELK日志系统部署
Centos6.7 ELK日志系统部署 原文地址:http://www.cnblogs.com/caoguo/p/4991602.html 一. 环境 elk服务器:192.168.55.134 lo ...
- PHP 之ip查询接口
/** * @param $ip 待查询的ip * @return mixed */ function getIpAddressInfo($ip) { $ipurl = 'http://api.ip1 ...
- Springboot启动工程后,浏览器出现输入用户名和密码
在使用spring boot的时候发现启动项目时,浏览器需要输入用户名和密码. baidu后发现是因为pom中引用了Spring Security,但是项目中没有使用,在pom中注释掉即可.
- CAD创建一个新的图形文件
static void linea(void) { AcDbDatabase *pDb = new AcDbDatabase(true, false); AcGePoint3d pickPoint; ...
- windows 小知识---windows下生成公钥和私钥
首先Windows操作系统需要安装git. 安装完成后,再到任意的文件夹内,点击右键.选择git bash here 打开之后,输入ssh-keygen,一路按enter键. 全部结束后,再到C:\U ...