注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

嵌入式开发实战4——内核的编译之十四MMC(SD、SDIO)卡的驱动说明1  

2012-07-05 22:14:32|  分类: ARM开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

嵌入式开发实战4——内核的编译之十四MMC(SD、SDIO)卡的驱动说明1

 

从这节开始,插入几张对MMC及相关的SD等的驱动的详细说明,与去年的MTD系统进行一下系统的总结。

在这里有必要说一下,因为在LINUX的块设备里,一般读取采用BIO队列的方式,但是在MMC,虚拟磁盘、RAM盘、软件RAID组件等设备因为其本身就支持随机寻址,所以他们不使用BIO队列。

MMC子系统分为三个部分,即:

HOST部分:是针对不同主机的驱动程序,这一部是驱动程序工程师需要根据自己的特点平台来完成的。

CORE部分:这是整个MMC的核心存,这部分完成了不同协议和规范的实现,并为 HOST 层的驱动提供了接口函数。

CARD部分:因为这些记忆卡都是块设备,当然需要提供块设备的驱动程序,这部分就是实现了将你的SD卡如何实现为块设备的。

整个MMC驱动的基本流程是:

1. 在s3cmci_probe()函数调用mmc_alloc_host()分配mmc_host结构,初始化了mmc_rescan延时任务

2. 接着进行了mmc_host结构的一系列的初始化,MMC硬件控制器寄存器相关的初始化,中断的注册,DMA的初始化等

 3. 在s3cmci_probe()最后调用了mmc_add_host()进行了mmc_host设备驱动模型相关的设置,执行mmc_host_start(), 启动了mmc_rescan延时任务。

4. 紧接着执行mmc_rescan()函数,发送相关的命令,依次扫描接到MMC控制器上的SDIO,SD,MMC设备 

5. 扫描到SD卡后,会从相关命令的响应中获取SD卡的相关信息,接着初始化SD卡,并分配mmc_card结构描述该卡的相关特性,并将mmc_card注册到“mmc"总线的设备层。 

6 在讲mmc_card注册到“mmc"总线的设备层的过程中,根据设备驱动模型找到"mmc"总线上名为“mmcblk"的mmc_driver,

  调用mmc_drivcer中的mmc_blk_probe()函数 

7. 在mmc_blk_probe()函数中会为SD卡分配mmc块设备相关的数据结构,为SD卡分配设备节点和设备号,最后将SD卡添加到块设备层即完成了SD卡所有的初始化。

再下一节里,会根据具体的代码来分析这个过程。

外面在下雨,时间到了,该回家了。

  评论这张
 
阅读(731)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017