linux下MMC/SD/SDIO驱动系列之一 ---- 概述

 

            最近在研究WIFI驱动,驱动模块为broamd4330,基于SDIO接口,所以趁机研究了一下内核中对于SDIO设备的注册。

 

            (我使用的linux内核版本为3.2.0    硬件为samsung 4412)

 

           在介绍内核之前,有必要先了解一下MMC  SD  SDIO三种卡,从发展历程来看,是先有MMC卡,后来有SD卡,这两种都是纯粹的存储卡,而SDIO是什么呢,从字面意思理解,应该是SD+IO,也就是既有存储功能,又有IO控制功能,不过也有纯IO功能的SDIO设备(本人用到的WIFI模块就是这种)。并且,这三种卡可以使用同一个插槽,系统还能正确的识别!!,可能是由于历史原因,在开始有Linux的时候,还只存在mmc卡(不存在SD和SDIO卡),所以在linux系统里面关于这三种卡的名称统统用“mmc“来命名。

 

        下面来看一下CPU与WIFI模块的物理连接图

                                     

                          

      从图上可以看出,我们的WIFI模块接的是CPU上的mmc3,数据线,时钟线以及命令线都一一对应,当然在CPU一端,对于mmc3模块,还有一个很重要的引脚--“xmmc3CDn”脚,CPU就是根据该引脚的电平高低来判断mmc3模块上是否有卡接入,如果电平为低,表示有卡,如果为高,表示无卡,笔者这里将该引脚固定拉低。同时在WIFI模块一端,也有一个很重要的引脚--“WL_SDIO_SPI_HSCI_SEL”引脚   ,它是用来选择模块是工作在SD模式(低电平),还是SPI模式(高电平),笔者这里也将该引脚固定拉低。

 

 

 

        好了,简单的介绍了一些概念以及硬件后,还是要回归到程序上,从大的方面来讲,MMC/SD/SDIO的驱动程序主要分为两大块,主设备驱动和从设备驱动。对于上面的例子来说,CPU上的MMC3模块就是主设备,而WIFI模块就是从设备。该系列的博文就是分析MMC主设备在内核中的注册,以及对于同一个mmc插槽,系统是如何区分出MMC SD 以及SDIO设备的。

 

 

                                                                                                          精彩的内容,见下一篇博文

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值