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

2019-08-31 13:59

[置顶]Linux设备驱动子系统第二弹 - SD卡 分类: Linux驱动 2010-10-01 19:59 3553人阅读 评论(5) 收藏 举报 1. 总论 2. 主控制器 3. 协议层 4. 块设备 1. 总论 1.1 概念 ? ?

MMC - MultiMedia Card SD - Secure Digital Card

1.2 分类

?

按存储大小,普通SD卡(<=2GB,支持FAT12/FAT16),HCSD卡(>2GB,<=32GB,支持FAT32)

? 按体积大小,普通SD卡,mini-SD卡,micro-SD卡(TF卡)

1.3 速度

? ?

默认模式: 12.5MB/s 高速模式: 25MB/s

1.4 子系统代码结构

Linux源码里/drivers/mmc下有三个文件夹,分别存放了SD块设备,核心层和SD主控制器的相关代码,可以通过Kconfig和Makefile获取更多信息。

2. 主控制器

SD卡的控制器芯片,可以看成CPU的代言人,它为CPU分担了完成与SD卡数据通信的任务。 2.1 数据结构 以PXA芯片的SD控制器驱动为例, struct pxamci_host { struct mmc_host *mmc; struct mmc_request *mrq; struct mmc_command *cmd; struct mmc_data *data; ... ... };

2.1.1 struct mmc_host 结构体mmc_host定义于/include/linux/mmc/host.c,可以认为是linux为SD卡控制器专门准备的一个类,该类里面的成员是所有SD卡控制器都需要的,放之四海而皆准的数据结构,而在PXA芯片控制器的驱动程序pxamci.c中,则为该类具体化了一个对象struct mmc_host *mmc,此mmc指针即指代着该PXA芯片SD卡控制器的一个具体化对象。

struct mmc_host {

const struct mmc_host_ops *ops; // SD卡主控制器的操作函数,即该控制器所具备的驱动能力

const struct mmc_bus_ops *bus_ops; // SD总线驱动的操作函数,即SD总线所具备的驱动能力

struct mmc_ios ios; // 配置时钟、总线、电源、片选、时序等 struct mmc_card *card; // 连接到此主控制器的SD卡设备 ... ... };

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 */


Linux设备驱动子系统第二弹- SD卡 - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:太阳能热水器控制仪使用说明书资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: