第一范文网 - 专业文章范例文档资料分享平台

Linux设备驱动子系统第二弹 - SD卡

来源:用户分享 时间:2025/8/13 22:15:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

struct mmc_host_ops {

void (*request)(struct mmc_host *host, struct mmc_request *req); // 核心函数,完成主控制器与SD卡设备之间的数据通信

void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios); // 配置时钟、总线、电源、片选、时序等

int (*get_ro)(struct mmc_host *host);

void (*enable_sdio_irq)(struct mmc_host *host, int enable); };

struct mmc_bus_ops {

void (*remove)(struct mmc_host *); // 拔出SD卡的回调函数

void (*detect)(struct mmc_host *); // 探测SD卡是否还在SD总线上的回调函数 void (*suspend)(struct mmc_host *); void (*resume)(struct mmc_host *); };

struct mmc_card {

struct mmc_host *host; /* the host this device belongs to */ struct device dev; /* the device */

unsigned int rca; /* relative card address of device */ unsigned int type; /* card type */ unsigned int state; /* (our) card state */ unsigned int quirks; /* card quirks */ u32 raw_cid[4]; /* raw card CID */ u32 raw_csd[4]; /* raw card CSD */ u32 raw_scr[2]; /* raw card SCR */ struct mmc_cid cid; /* card identification */ struct mmc_csd csd; /* card specific */

struct mmc_ext_csd ext_csd; /* mmc v4 extended card specific */ struct sd_scr scr; /* extra SD information */

struct sd_switch_caps sw_caps; /* switch (CMD6) caps */ unsigned int sdio_funcs; /* number of SDIO functions */ struct sdio_cccr cccr; /* common card info */

struct sdio_cis cis; /* common tuple info */ ... ... };

mmc_card结构体内的数据结构主要存放SD卡的信息,其中RCA, CID, CSD, SCR为SD卡内部的32位寄存器。

2.1.2 struct mmc_request 结构体mmc_request定义于/include/linux/mmc/core.h,它主要存放两大数据结构的指针,分别是cmd和data,顾名思意,一个为指令,一个为数据,也就是说,mmc_request结构体存放了进行主控制器与sd卡间通信所需要的指令和数据,struct mmc_request, struct mmc_command *cmd, struct mmc_data *data三者之间的关系如下所示,

struct mmc_request { struct mmc_command *cmd; struct mmc_data *data; struct mmc_command *stop;

void *done_data; /* completion data */

void (*done)(struct mmc_request *);/* completion function */ };

说到结构体mmc_command和mmc_data,就必须说说SD卡的协议了。 1) 物理结构

SD卡有9个pin脚(micro-SD为8个,少一个接地pin脚),如图所示,

SD的数据传输方式有两种,普通SD模式和SPI模式,以SD模式为例,9个pin脚分别是VDD,VSS,CLK,以及我们需要关注的一根指令线CMD,4根数据线DAT0~DAT3。 2) 传输模式

首先由主机向SD卡发送命令command,等待SD卡的回复response,如果成功收到回复,则进行数据传输。其中,指令线和数据线上传输的指令和数据都要遵循相应的协议格式。

3) 指令格式

搜索更多关于: Linux设备驱动子系统第二弹 - SD卡 的文档
Linux设备驱动子系统第二弹 - SD卡.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3j9b18dazv3uh255bmoa_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top