uboot initf_dm函数分析
initf_dm,
static int initf_dm(void)
{
#if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN)
//CONFIG_DM和CONFIG_SYS_MALLOC_F_LEN都有定义
int ret;
bootstage_start(BOOTSTATE_ID_ACCUM_DM_F, "dm_f");
uint32_t bootstage_start(enum bootstage_id id, const char *name)
{
struct bootstage_data *data = gd->bootstage; //data指向gd->bootstage
struct bootstage_record *rec = ensure_id(data, id);
struct bootstage_record *ensure_id(struct bootstage_data *data,enum bootstage_id id)
{
struct bootstage_record *rec;
rec = find_id(data, id);
//去gd->bootstage->record的查找有没有匹配BOOTSTATE_ID_ACCUM_DM_F的记录
//有上篇博客可知目前record中只有BOOTSTAGE_ID_AWAKE和BOOTSTAGE_ID_START_UBOOT_F两个记录
if (!rec && data->rec_count < RECORD_COUNT) {
rec = &data->record[data->rec_count++]; //rec指向gd->bootstage->record[2]
rec->id = id; //rec->id初始化为BOOTSTATE_ID_ACCUM_DM_F
return rec;
}
return rec;
}
ulong start_us = timer_get_boot_us(); //获取当前的boot时间
if (rec) {
rec->start_us = start_us;
rec->name = name;
}
return start_us;
}
//bootstage_start的主要功能是向gd->bootstage->record[2]中增加名字为dm_f的记录
ret = dm_init_and_scan(true);
这里参考函数说明:该函数初始化驱动树和uclass树,然后从平台数据和FDT中扫描和绑定可用的设备。当输入参数为true时,仅绑定含有DM_FLAG_PRE_RELOC标志位和特殊设备树特性的节点。
bootstage_accum(BOOTSTATE_ID_ACCUM_DM_F);
在先前的bootstage_start标记一项活动为开始状态后,调用bootstage_accum标记该任务为结束状态
if (ret)
return ret;
#endif
#ifdef CONFIG_TIMER_EARLY //未定义,不执行
ret = dm_timer_init();
if (ret)
return ret;
#endif
return 0;
}
本文主要分析了initf_dm的功能,主要是初始化驱动树和uclass树,并绑定含有DM_FLAG_PRE_RELOC标志位和特殊设备树特性的节点。下篇博客将继续分析init_sequence_f 中的函数。
————————————————
版权声明:本文为CSDN博主「yanggx0929」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanggx0929/article/details/88860236
uboot initf_dm函数分析的更多相关文章
- uboot main_loop函数分析
一.概述 main_loop()函数做的都是与具体平台无关的工作.主要包括的工作如下: (1)初始化启动次数限制机制 (2)Modem功能 (3)设置软件版本号 (4)启动延迟 (5)读取命令, ...
- u-boot initf_bootstage函数分析
这篇博客主要分析 init_sequence_f 函数指针数组中的initf_bootstage函数: static int initf_bootstage(void){ bool from_s ...
- u-boot log_init函数分析
log_init, int log_init(void){ struct log_driver *drv = ll_entry_start(struct log_driver, log_driv ...
- uboot的jumptable_init函数分析
一.函数说明 函数功能:安装系统函数指针 函数位置:common/exports.c 二.函数分析 void jumptable_init (void) { int i; gd->jt = (v ...
- u-boot启动流程分析(2)_板级(board)部分
转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global dat ...
- 基于335X的UBOOT网口驱动分析
基于335X的UBOOT网口驱动分析 一.软硬件平台资料 1. 开发板:创龙AM3359核心板,网口采用RMII形式 2. UBOOT版本:U-Boot-2016.05,采用FDT和DM. 参考链 ...
- Uboot启动流程分析(三)
1.前言 在前面的文章Uboot启动流程分析(二)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12002764.html 已经对_main函数的整个大体调用流程 ...
- u-boot源码分析之C语言段
题外话: 最近一直在学习u-boot的源代码,从代码量到代码风格,都让我认识到什么才是真正的程序.以往我所学到的C语言知识和u-boot的源代码相比,实在不值一提.说到底,机器都是0和1控制的.感觉这 ...
- U-Boot GOT表分析和u-boot.lds解读
转自:http://blog.sina.com.cn/s/blog_70dd16910100zab6.html u-boot-2010.09/arch/powerpc/cpu/mpc86xx/star ...
随机推荐
- Random Initialization for K-Means
K-Means的中心初始化惯用方式是随机初始化.也就是说:从training set中随机挑选出K个 作为中心,再进行下一步的K-Means算法. 这个方法很容易导致收敛到局部最优解,当簇个个数(K) ...
- Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)
本文装载自:http://blog.csdn.net/u012737182/article/details/52831008 感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现R ...
- Spring AOP junit错误整理
1.[spring][Xlint:invalidAbsoluteTypeName]error 首先说一下最基本的错误,使用AOP的pointcut的expression表达式必须是正确的,表达式规则相 ...
- 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目
期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...
- Bresenham’s algorithm( 布兰森汉姆算法)画直线
Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点.这个算法只会用到较为快速的整数加法.减法和位元移位,常用于绘制电脑画面中的直线.是计算机图形学 ...
- Day03:运算符和表达式 / 分支结构
Java 运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 字符串运算符 ...
- 交换机安全学习笔记 第二章 MAC地址泛洪攻击
本文为书中相关知识的摘要,由于书中以思科设备为配置依据,所以笔记中补充了华为.H3C设备的相关配置.华为设备配置参考华为S2352EI 产品版本:V100R005C01文档版本:02. H3C配置参 ...
- 2019JAVA第九次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...
- abp.event.on与abp.event.off使用
apb的全局事件 var eventName = "app.createOrEditFieldModalSaved"; var reloadPage = function () { ...
- opencv学习之等待按键事件-waitKey函数
文章来源: https://mangoroom.cn/opencv/opencv-learning-waitKey.html 序 waitKey函数属于opencv函数里既常用又非常基础的函数,无论是 ...