3597|3

19

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Linux中SD、MMC设备驱动流程 [复制链接]

LinuxSDMMC设备驱动流程
4.1.MMC子系统的基本框架
4.1.1.MMC子系统的代码在kernel/driver/MMC下面,目前MMC子系统支持一些形式的记忆卡:SD,SDIO,MMC
4.1.2.HOST:针对不同主机的驱动程序,这一部分需要根据自己的特定平台来完成。
4.1.3.CORE:这是整个MMC的核心层,这部分完成了不同协议和规范的实现,并且为HOST层的驱动提供接口函数。
4.1.4.CARD:因为这些记忆卡都是块设备,当然需要提供块设备的驱动程序,这部分就是实现了将SD卡如何实现为块设备的。
4.1.5.各层之间的关系

4.2.重要的结构体
4.2.1. struct mmc_host 用来描述卡控制器位kernel/include/linux/mmc/host.h下面。
4.2.2.struct mmc_card 用来描述卡位于kernel/include/linux/mmc/card.h下面
4.2.3.struct mmc_driver 用来描述mmc卡驱动在kernel/include/linux/mmc/card.h下面。
4.2.4.struct mmc_host_ops用来描述卡控制器操作集,用于从主机控制器向core层注册操作函数,从而将core层与具体的主机控制器隔离。也就是说core要操作主机控制器,就是这个ops当中给的函数指针操作,不能直接调用具体主控制器的函数。
位于kernel/include/linux/mmc/host.h下面。
2.5.struct mmc_ios用于描述了控制器对卡的I/O状态。位于kernel/include/linux/mmc/host.h下面。
4.2.6.struct mmc_request用于描述读写MMC卡的请求,它包括命令,数据以及请求完成后的回调函数。位于kernel/include/linux/mmc/core.h中。
4.2.7.struct mmc_queueMMC的请求队列结构,它封装了通用请求队列结构,加入了MMC卡相关结构。位于kernel/drivers/mmc/card/queue.h中。
4.2.8.struct mmc_data描述了MMC卡读写的数据相关信息,如:请求,操作命令,数据以及状态等。位于kernel/include/linux/mmc/core.h中。
4.2.9.struct mmc_command描述了MMC卡操作相关命令及数据,状态信息等。位于kernel/include/linux/mmc/core.h中。
4.3.host,core以及card之间的关联和处理流程
4.3.1总体的流程如下图所示

4.3.2.数据.命令的处理流程在代码分析那里会仔细分析
4.4:核心任务
MMC/SD卡的驱动整个构架由三个文件组成,其实一共就做了两件事件:
1).卡的检测。
2).卡数据的读取。
4.4.1.卡的检测中涉及到的函数
tcc_mmc_probe(host/tcc_sdhc.c)
mmc_alloc_host(core/core.c)
mmc_rescan(core/core.c)
mmc_attach_mmc(core/mmc.c)
mmc_init_card(core/mmc.c)
mmc_add_card(core/bus.c)
device_add
mmc_bus_match(core/bus.c)
mmc_bus_probe(core/bus.c) mmc_blk_probe(card/block.c)
alloc_disk/add_disk
4.4.2.卡中数据读写涉及到的函数
mmc_blk_issue_rq(card/block.c)
mmc_wait_for_req(core/core.c)
mmc_start_request(core/core.c)
host->ops->requset(host,mrq)
//tcc_sdhc.c中的tcc_mmc_request
深圳雷龙发展有限公司从事NANDFLASH行业10+年.目前代理ATO Solution小容量SLC NAND,SPI NAND,MCP等。想了解更多请咨询扣二八伍二扒二陆扒六八;电话一三陆玖一玖八二一零柒

此帖出自医疗电子论坛

最新回复

谢楼主分享 医疗器械注册  详情 回复 发表于 2018-8-9 15:33
点赞 关注(1)
 
 

回复
举报

1903

帖子

0

TA的资源

版主

沙发
 
总结的还不错的,看看
此帖出自医疗电子论坛
 
 
 

回复

175

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢楼主分享
此帖出自医疗电子论坛
 
 
 

回复
卖豆芽的小男孩 该用户已被删除
4
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

开源项目 更多>>
    随便看看
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表