版权声明:本文为博主原创文章,转载请注明出处:https://blog.csdn.net/huang_165/article/details/86678814
由上一篇博文《简单分析mmc体系结构》知道,mmc core会注册一个mmc bus并等待card device、card driver的加入。
也简单地介绍了mmc framework三层大概功能、用到那些内核组件。这篇博文是上一篇博文的源码分析版。
内核版本:
#uname -a
Linux rk3399 4.4.154 #62 SMP Sun Jan 27 17:09:48 PST 2019 aarch64 GNU/Linux
sd 3.0协议文档:https://pan.baidu.com/s/1uQextx64UkZmvbIrYSvLvg
我的源码版本:https://github.com/Mr-jinfa/rk3399-project
2019.1.28号版本的
博文解决两个问题:
一:探究mmc framework如何支持sd卡的冷启动、热插拔的?
二:探究上层文件系统-->块io调度层下来的请求是如何作用到sd卡上的(即从上层应用到硬件层的动作)。
解决这两个问题的方法是参看源码调用关系,建议读者结合博主的《简单分析mmc体系结构》来看。
问题一:探究mmc framework如何支持sd卡的冷启动、热插拔的。
card 冷启动时检查卡并加入到系统中的执行路径
dw_mci_rockchip_probe 初始化mmc主机控制器
|->dw_mci_pltfm_register
| |->dw_mci_probe
| | |->dw_mci_init_slot 初始化插槽
| | | |->mmc_alloc_host 申请一个插槽
| | | | |->INIT_DELAYED_WORK(&host->detect, mmc_re