Linux MMC/SD驱动开发

Linux MMC/SD驱动开发

一 、Linux MMC/SD驱动模型分析

        Linux下MMC/SD驱动主要分三层:card层、core层、host层。Linux下MMC/SD驱动框架见图1:

                                                      图1

card层:要把操作的数据以块设备的处理方式写到记忆体上或从记忆体上读取。

core层:则是将数据以何种格式,何种方式在 MMC/SD主机控制器与MMC/SD卡的记忆体(即块设备)之间进行传递,这种格式、方式被称之为规范或协议。 

host层:就是要实现的具体MMC/SD相应控制器的驱动程序,包括MMC/SD控制器的初始化、寄存器读写及SD卡的命令、数据的传输接口。

       当前新版内核已将card层和core层合并。

 

二 、Linux MMC/SD驱动框架的重要数据结构

2.1 struct mmc_host 结构体

struct mmc_host用于与core层的命令请求,数据 传输等信息。

2.2 struct mmc_host_ops 结构体

       其中request 主要是SD卡命令数据传输操作入口,set_ios是配置SD控制器寄存器操作入口,是驱动中必须要实现的两个基本操作。

 

三 、SD卡初始化流程

       SD卡初始化流程是在core层实现的,集成了SD卡的所有命令,对于驱动开发来说,只需要实现request操作,并对命令和数据中断用mmc_request_done()函数进行上报处理即可。SD卡初始化流程见图2:

                                                                                  图2

 

四、Linux MMC/SD驱动热插拔功能

       对于热插拔功能,MMC/SD框架提供了mmc_detect_change()函数对卡插拔时间进行上报,此功能一般MMC/SD控制器会提插拔中断功能,驱动软件实现时只需在中断函数中上报即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值