sprd bootloader 分析流程
2. bootloader的代码流程
2.1
入口: u-boot15/board/spreadtrum/ums512_1h10_go/u-boot.lds
ENTRY(_start) //当前入口_start
.text : { *(.__image_copy_start) //入口 CPUDIR/start.o (.text*)代码段 *(.text*)
}
2.2 start.S
bl main
2.3 arch/arm/lib/crt0_64.S
设置初始化C运行环境,然后调用board_init_f(0)函数
bl board_init_f
2.4 arch/arm/lib/board.c
这是板级初始化的函数流程的集合
1) board_init(); ==> u-boot15/board/spreadtrum/ums512_1h10_go/ums512_1h10_go.c
一些列初始化: 串口,终端,gpio,led等
2) board_late_init() => ums512_1h10_go.c: 充电初始化,按键初始化
3) 进入循环
819 /* main_loop() can return to retry autoboot, if so just run it again. */
820 for (;;) {
821 main_loop();
822 }
2.5 main.c
main_loop(); 循环处理命令
准备:
include/env_default.h : default_environment默认环境变量设置
35 "bootcmd=" CONFIG_BOOTCOMMAND "\0"
==> include/configs/ums512_1h10_go.h
216 #define CONFIG_BOOTCOMMAND "cboot normal"
main_loop ==> s = bootdelay_process(); //获取环境变量,获取boot_cmd参数
==> 执行 cboot 和 normal 命令 : autoboot_command(s);
2.6 autoboot_command(s);
解析: 处理命令列表
最终: cmdtp = find_cmd(argv[0]); ==》 rc = cmd_call(cmdtp, flag, argc, argv);
2.7 uboot 命令之cboot的执行
common/cmd_cboot.c
==> do_cboot 此处,判断开机的模式
cboot, CONFIG_SYS_MAXARGS, 1, do_cboot
命令cboot 需要带一个参数, 所以cboot normal 就是执行参数。
疑问:display 的初始化和亮屏都在哪里设置呢?
cboot ==> 开机模式 ==》 正常开机模式:
normal_mode ==> vlx_nand_boot(BOOT_PART, BACKLIGHT_ON, LCD_ON);
==> _uboot_set_preload(lcd_enable, backlight_set);
==> preload->display(LOGO_NORMAL_POWER, brightness, lcd_enable);
==> ./common/loader/loader_nvm.c : .display = logo_display,
==> void logo_display(int index, int backlight_value, int lcd_enable)
==> drv_lcd_init(); //lcd 的初始化
set_backlight(backlight_value);// 设置背光
ps : drv_lcd_init ==> lcd_init(lcd_base); ==> lcd_ctrl_init(lcdbase); ==>
drivers/video/sprd/sprd_main.c : sprdfb_probe
==>
178 static int sprdfb_probe(void)
179 {
180 sprd_panel_probe();
181 sprd_dispc_probe();
182
183 return 0;
184 }
至此: uboot 流程已经分析完毕.
sprd bootloader 分析流程相关推荐
- bootloader启动流程分析
bootloader启动流程分析 1.Bootloader的概念和作用 Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序.在完成对系统的初始化任务之后,它会将Flash中 ...
- 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)
前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...
- 生信分析流程构建的几大流派
导言 构建生信分析流程是生物信息学从业人员必备的技能之一,对该项能力的评估常常是各大公司招录人员的参考项目之一. 在进行 ngsjs 项目时,我做了一张示意图来表示一些高通量测序数据分析项目重现性的要 ...
- Clumpify:能使 Fastq 压缩文件再缩小 30% 并加速后续分析流程
由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. Clumpify 是 BBMap 工具包中的一个组件,它与其他工具略有不同的是 Clumpif ...
- Nature子刊:宏基因组中挖掘原核基因组的分析流程
宏基因组中挖掘原核基因组的分析流程 从宿主相关的短读长鸟枪宏基因组测序数据中恢复原核基因组 Recovering prokaryotic genomes from host-associated, s ...
- MPB:亚热带生态所谭支良组-基于微生物成分数据的差异zOTU分析流程
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- USEARCH — 最简单易学的扩增子分析流程(中国总代理)
USEARCH -- 最简单易学的扩增子分析流程 USEARCH官方英文主页:http://www.drive5.com/usearch/ 本站经USEARCH作者Robert Edgar授权,由&l ...
- USEARCH —— 最简单易学的扩增子分析流程(中国总代理)
USEARCH -- 最简单易学的扩增子分析流程 USEARCH中文帮助文档(USEARCH Chinese manual) USEARCH官方英文主页:http://www.drive5.com/u ...
- USEARCH —— 最简单易学的扩增子分析流程
USEARCH -- 最简单易学的扩增子分析流程 USEARCH中文帮助文档(USEARCH Chinese manual) USEARCH官方英文主页:http://www.drive5.com/u ...
最新文章
- h5 和native 交互那些事儿
- 移动端自动化测试(一)appium环境搭建
- OSPF LSA序列号问题
- boost::mismatch相关的测试程序
- adb shell 小米手机_如何在Android手机上进行自动化测试
- linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout
- MVC中JSON字符长度超出限制的异常处理
- 获取object的值
- unity3d android assets,Unity3D之Android同步方法读取streamingAssets(八十八)
- mysqljoin的原理和优化
- BP神经网络用于预测
- 龙芯pmon快速启动方法
- 面试必备 | 带你彻底搞懂 Python 生成器。
- 歌声合成理论教程(1)
- C语言开发工具Win-TC
- 网站优化提高网站关键词密度是必要的
- U盘量产,以及U盘“请将磁盘插入u盘”等问题。
- Ardupilot Pre-Arm安全检查程序分析
- java小基础之代码块的霸道
- 《零基础学Python》✍知识点整理
热门文章
- kafka sasl_ssl配置
- Hbase资源管理 Quotas
- 如何导入android sdk,如何导入android sdk samples
- Elastic:如何摄入 Websocket 数据到 Elasticsearch
- 华为p4不是鸿蒙吗怎么又改为安卓_华为鸿蒙系统不是为华为手机设计的 华为手机将继续使用安卓...
- 专为球迷准备的免费邮箱
- oracle 给表空间增加多个数据文件
- 巴比特 | 元宇宙每日必读:股价暴跌,强敌环伺,扎克伯格将如何续写元宇宙故事?...
- 计算机课里的余数是什么,余数
- u盘中的隐藏文件该怎样恢复