云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Linux设备驱动子系统第二弹 - SD卡

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

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 5:40:29

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卡 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
本文作者:...

共分享92篇相关文档

文档简介:

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)(struc

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com