社区导航

 
查看: 327|回复: 3

[讨论] Linux中SD、MMC设备驱动流程

[复制链接]

33

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-7-19 15:42:13 | 显示全部楼层 |阅读模式
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.各层之间的关系
Linux中SD、MMC设备驱动流程1.png

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总体的流程如下图所示
Linux中SD、MMC设备驱动流程2.png

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等。想了解更多请咨询扣二八伍二扒二陆扒六八;电话一三陆玖一玖八二一零柒



回复

使用道具 举报

1315

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-7-19 16:17:44 | 显示全部楼层
总结的还不错的,看看


回复

使用道具 举报

21

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2018-7-21 09:59:16 | 显示全部楼层
谢谢楼主分享


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 7 天前 | 显示全部楼层
谢楼主分享





医疗器械注册
飞速度医疗器械咨询——医疗器械注册服务


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-8-16 23:35 , Processed in 0.127807 second(s), 18 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表