bbb u-boot mmc总线初始化分析

1.  arch/arm/lib/ctr0.s

.global _main
_main:
           bl board_init_f


2.  arch/arm/lib/spl.c

void __weak board_init_f(ulong dummy)
{
     board_init_r(NULL, 0);
}


前两布应该还没有初始化串口,所以看不到打印


3. arch/arm/lib/board.c

//从这个函数开始才有打印,而且函数的开头部分也没有打印

void board_init_r(gd_t *id, ulong dest_addr)
{

     puts("MMC:   ");
     mmc_initialize(gd->bd);
}


4. drivers/mmc.c

int mmc_initialize(bd_t *bis)
{
     INIT_LIST_HEAD (&mmc_devices);
     cur_dev_num = 0;

     if (board_mmc_init(bis) < 0)      //board_mmc_init实际调用了下面的__def_mmc_init函数
          cpu_mmc_init(bis);               //cpu_mmc_init确没有调用__def_mmc_init函数

     print_mmc_devices(',');      //打印mmc总线信息

     return 0;
}


static int __def_mmc_init(bd_t *bis)
{
     return -1;
}

int cpu_mmc_init(bd_t *bis) __attribute__((weak, alias("__def_mmc_init")));
int board_mmc_init(bd_t *bis) __attribute__((weak, alias("__def_mmc_init")));


5. arch/arm/cpu/armv7/am33xx/board.c

int cpu_mmc_init(bd_t *bis)
{
     int ret;
     ret = omap_mmc_init(0, 0, 0);
     if (ret)
          return ret;
     return omap_mmc_init(1, 0, 0);
}


6. drivers/mmc/omap_hsmmc.c

int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max)
{
     struct mmc *mmc;

     mmc = &hsmmc_dev[dev_index];

     sprintf(mmc->name, "OMAP SD/MMC");
     mmc->send_cmd = mmc_send_cmd;
     mmc->set_ios = mmc_set_ios;
     mmc->init = mmc_init_setup;
     mmc->getcd = NULL;

     mmc_register(mmc);
}


7. drivers/mmc/mmc.c

int mmc_register(struct mmc *mmc)
{
     mmc->block_dev.if_type = IF_TYPE_MMC;
     mmc->block_dev.dev = cur_dev_num++;
     INIT_LIST_HEAD (&mmc->link);

     list_add_tail (&mmc->link, &mmc_devices);
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scrapy 中不同页面的拼接_scrapy使用技巧总结

1. scrapy运行过程概述scrapy是一个基于python的网络爬虫框架&#xff0c;它读取对指定域名的网页request请求&#xff0c;截取对应域名的返回体&#xff0c;开发者可以编写解析函数&#xff0c;从返回体中抓取自己需要的数据&#xff0c;并对数据进行清洗处理或存入数据库。sc…

2021南京大学计算机复试线,南京大学2021年硕士研究生复试基本分数线

南京大学2021年硕士研究生复试基本分数线一、学术学位报考学科门类总分第1门第2门第3门第4门备注哲学[01]33555559090各院(系、所)综合考虑生源情况、本学科、专业人才培养特点及复试比例要求&#xff0c;根据学校复试基本分数线&#xff0c;可上调本院(系、所)复试的成绩要求。…

Buffers, windows, and tabs

If you’ve moved to Vim from an editor like Notepad or TextMate, you’ll be used to working with the idea of tabs in a text editor in a certain way. Specifically, a tab represents an open file; while the tab’s there, you’ve got an open file, as soon as y…

js如何获取计算机当前时间,js获取当前系统时间

搜索热词下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家&#xff0c;也给大家做个参考。var myDate new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取…

docker访问宿主机mysql_docker容器内访问宿主机127.0.0.1服务

点击上方”技术生活“&#xff0c;选择“设为星标”做积极的人&#xff0c;而不是积极废人背景原因分析解决方案背景已经通过docker启动的elasticsearch 服务&#xff0c;监听端口9200。在宿主机中直接通过http://127.0.0.1:9200 可以直接访问&#xff0c;但是通过docker访问缺…

ADO.NET+Access: 3,参数 @departmentName 没有默认值

ylbtech-Error-ADO.NETAccess: 3,参数 departmentName 没有默认值。1.A,错误代码返回顶部 3,参数 departmentName 没有默认值。1.B,出错原因分析返回顶部未解决1.C,相关解决方法返回顶部作者&#xff1a;ylbtech出处&#xff1a;http://ylbtech.cnblogs.com/本文版权归作者和博…

lombok有参构造注解_Java高效开发工具: Lombok

Lombok, 一个Java开发必备效率工具&#xff0c;可以大大避免编写一些常用方法(get/set, hashcode等)&#xff0c;简化开发。虽然现在IDE很多都可以通过快捷键生成POJO的一些方法了&#xff0c;但是如果该POJO字段发生变动后&#xff0c;还是需要程序员再次手动重新生成相关方法…

JavaScript操作大全整理(思维导图三--函数基础)

3.JavaScript函数基础 转载于:https://www.cnblogs.com/yuxia/p/3360806.html

__attribute__ 之weak,alias属性

Weak Alias 跟 Weak Reference 完全没有任何关系&#xff0c;不过是我在看到 Weak Reference 的时候想到的而已。 Weak Alias 是 gcc 扩展里的东西&#xff0c;实际上是函数的属性。这个东西在库的实现里面可能会经常用到&#xff0c;比如 glibc 里面就用了不少。抄录一段 gcc …

nginx指定配置文件启动_NGINX安全加固手册

NIGNX系统安全基线规范1.概述1.1 适用范围本配置标准的使用者包括&#xff1a;各事业部服务器负责人。 各事业部服务器负责人按规范要求进行认证、日志、协议、补丁升级、文件系统管理等方面的安全配置要求。对系统的安全配置审计、加固操作起到指导性作用。1.2 文档内容本文档…

口袋网咖已有服务器在使用怎么注销,口袋网咖_口袋网咖常见问题_口袋网咖专区...

口袋网咖是专门为游戏高玩打造的手机变电脑软件&#xff0c;虚拟电脑神器&#xff0c;体验各种电脑游戏&#xff0c;非常的方便&#xff0c;能让小伙伴尽情的体验手机电脑的感觉&#xff0c;很多小伙伴在使用过程中遇到了一些问题&#xff0c;快啦网为大家分享口袋网咖常见问题…

p

都不知道简历去投什么地方。游戏都卖不出去&#xff0c;又做不出口碑好的。这些人是心存侥幸还是心存坚持。 感觉自己搞不清楚就很难再出发。转载于:https://www.cnblogs.com/YOUEN/p/3364227.html

bbb u-boot 验证 emmc

目标&#xff1a; 参考"common/cmd_mmc.c"的查找emmc的代码&#xff0c;在mmc总线初始化函数后&#xff0c;遍历mmc总线&#xff0c;查找emmc并 打印emmc信息。 在"drivers/mmc/mmc.c"中的mmc_initialize函数的最后面添加我们的遍历函数 int mmc_initia…

统计个人已完成的工作量_团队工作量及团队价值贡献统计、核算、评审及提升的重要性...

在推行阿米巴经营模式时&#xff0c;需要进行企业内部产品及服务全价值分析&#xff0c;也就是企业内部团队产品及服务价值增值的全过程分析&#xff0c;团队价值增值是团队存在的目的和意义&#xff0c;对于团队经营来讲&#xff0c;团队工作量就团队的收入&#xff0c;团队价…

hyper服务器虚拟网卡和实际网卡,Hyper-V 3 虚拟网卡带宽应用限制

Windows Server 2012的Hyper-V 3中&#xff0c;打来了系列新功能&#xff0c;例如网卡流量限制功能。 基础架构注意的问题宿主服务器规划过程中&#xff0c;管理员主要考虑服务器基础架构中的CPU、内存、磁盘空间等必要因素&#xff0c;但是网络适配器(简称网卡)通常属于被忽略…

数据结构--------------静态表的希尔排序

#define LT(a,b) ((a)< (b))#define EQ(a,b) ((a)(b))#define LQ(a,b) ((a)<(b)) typedef struct ElemType{//表中元素结构 int key; char name[20];}ElemType; typedef struct SSTable{//静态表结构 ElemType *elem; int length;}SSTable; ElemType r[20];//全局变量,用…

智能集群理论优化控制_数学学科学术报告九:机器人集群的智能协同控制方法_中国计量大学...

数学学科学术报告九&#xff1a;机器人集群的智能协同控制方法_中国计量大学中国计量大学 免费考研网/2018-05-17报告题目&#xff1a;机器人集群的智能协同控制方法报告人&#xff1a;孙长银(东南大学 教授)报告时间&#xff1a;2018.04.09 15:30-16:30报告地点&#xff1a;格…

css复选框如何调大一些,创建CSS放大复选框

您可以随时使用复选框来勾选自己的复选框.这允许更多的跨浏览器兼容的解决方案.我做了一个快速演示here,显然你必须得到一个透明的.png的滴答,而不是我得到的.input[typecheckBox]:checked ~ div label{background: url(http://ramyasspace.files.wordpress.com/2011/06/tick.j…

outside of class is not definition

有一种可能的情况&#xff1a;You have semicolons (;) at the end of all your function definitions making the compiler think theyre declarations. 即在方法定义的后面都误添加上了";",导致编译器认为这仅仅是个声明。

Makefile中=、:=、+=、?=的区别

&#xff0c;就是基本的赋值 :&#xff0c;覆盖原来的值 &#xff0c;添加新值 ?&#xff0c;如果没有赋值则赋值转载于:https://www.cnblogs.com/wangluojisuan/p/3369072.html