linux 驱动编写(sd卡驱动)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
随着sd卡的流行,sd卡在嵌入式设备上使用的场景也越来越多。那下面我们可以看一下,linux驱动框架上是怎么处理sd卡驱动的?
1、代码目录地址
drivers/mmc
2、基本结构
从mmc的代码结构可以看得出,主要分为两个部分,其中core为协议部分,host为各个soc的适配部分
host是我们需要真正关心的代码
3、以s3c为例,观察makefile
obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o
......
obj-$(CONFIG_MMC_S3C) += s3cmci.o
4、根据s3c阅读Kconfig,确认s3c下的sd卡还依赖哪些文件
config MMC_SDHCI_S3Ctristate "SDHCI support on Samsung S3C SoC"depends on MMC_SDHCI && PLAT_SAMSUNGhelpThis selects the Secure Digital Host Controller Interface (SDHCI)often referrered to as the HSMMC block in some of the Samsung S3Crange of SoC.If you have a controller with this interface, say Y or M here.If unsure, say N.config MMC_SDHCI_S3C_DMAbool "DMA support on S3C SDHCI"depends on MMC_SDHCI_S3ChelpEnable DMA support on the Samsung S3C SDHCI glue. The DMAhas proved to be problematic if the controller encounterscertain errors, and thus should be treated with care.YMMV.config MMC_S3Ctristate "Samsung S3C SD/MMC Card Interface support"depends on ARCH_S3C24XXdepends on S3C24XX_DMAChelpThis selects a driver for the MCI interface found inSamsung's S3C2410, S3C2412, S3C2440, S3C2442 CPUs.If you have a board based on one of those and a MMC/SDslot, say Y or M here.If unsure, say N.
5、MMC_S3C和MMC_SDHCI_S3C是主要的macro,接着了解两个macro对应文件的数据结构
首先看一下s3cmci.c文件,
static const struct mmc_host_ops s3cmci_ops = {.request = s3cmci_request,.set_ios = s3cmci_set_ios,.get_ro = mmc_gpio_get_ro,.get_cd = mmc_gpio_get_cd,.enable_sdio_irq = s3cmci_enable_sdio_irq,
};
再看一下sdhci-s3c.c文件,
static struct sdhci_ops sdhci_s3c_ops = {.get_max_clock = sdhci_s3c_get_max_clk,.set_clock = sdhci_s3c_set_clock,.get_min_clock = sdhci_s3c_get_min_clock,.set_bus_width = sdhci_set_bus_width,.reset = sdhci_reset,.set_uhs_signaling = sdhci_set_uhs_signaling,
};
6 、从host角度来说,有了platform driver和上面的host driver,驱动流程就算搞清楚了。
但是如果深入下去的话,还是需要好好读一下sd协议,这里面花的时间最多。
linux 驱动编写(sd卡驱动)相关推荐
- S3C2440 Linux驱动移植——SD卡驱动
开发板:TQ2440 内核:Linux 2.6.32 PC OS:Ubuntu 11.04 本文将对SD卡驱动的移植做简要介绍. 1. 添加板级信息 打开arch/arm/mach-s3c2440/ ...
- LPC1768 SSP0驱动示例——SD卡驱动
在STM32的SPI驱动上移植过来的,由于代码较长,这里只提供关键代码: /* SSPxSR - bit definitions. */ #define TFE 0x01 #define TNF 0x ...
- linux sd卡驱动流程图,SD卡驱动(详细介绍,不明白的人可以仔细看看了.有流程图)-转-OpenEdv-开源电子网...
ffice ffice" /> 一.SD/MMC卡介绍 1.1.什么是MMC卡 MMC:MMC就是MultiMediaCard的缩写,即多媒体卡.它是一种非易失性存储器件,体积小巧(2 ...
- SD卡驱动分析(一)
Android下的SD卡驱动与标准LINUX下的SD卡驱动好像没有太大的区别,这里就以高通的ANDROID 2.3以代表,来简要分析一下LINUX下SD卡驱动的写法.由于小弟的技术有限,分析的有错的地 ...
- Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动——解决无法挂载SD卡的根文件系统
系列文章目录 Exynos4412 移植针对Samsung的Linux-6.1(一)下载.配置.编译Linux-6.1 Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动 ...
- S5PV210开发系列五 sd卡驱动实现
SD卡(Secure Digital Memory Card)具有体积小.容量大.数据传输快.可插拔.安全性好等优点,被广泛应用于便携式设备上.例如作为数码相机的存储卡,作为手机.平板多媒体扩展卡用的 ...
- 详解sd协议以及裸机和u-boot中的sd卡驱动(2)
3. sd卡驱动 3.1 引入 经过第2章我们知道,要想实现读写sd卡,需要按照sd协议规定的基本传输单位(命令.响应.数据)以及流程(初始化.读.写),向sd卡发送信号或者从sd卡接收信号. 为了简 ...
- linux sd卡驱动视频,详解linux 驱动编写(sd卡驱动)
随着sd卡的流行,sd卡在嵌入式设备上使用的场景也越来越多.那下面我们可以看一下,linux驱动框架上是怎么处理sd卡驱动的? 1.代码目录地址 drivers/mmc 2.基本结构 从mmc的代码结 ...
- sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核
[转帖请注明出处:blog.csdn.net/lanmanck] sd卡驱动主要参照已有的文件即可,2410,9260都挺好.其实写驱动主要是搞清楚工作流程即可.我这里写一些心得与大家分享下,基于2. ...
最新文章
- AFNetWorking 队列请求
- .Net定时弹出窗口(c#)
- 常见 Serverless 架构模式
- 使用vue制作富文本框
- can't select mysql database_ERROR 1006 (HY000) Can't create database (errno: 13) MySQL 5.6.12
- HTTP/2中的二进制分帧
- python高级-异常(13)
- 图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)
- html网页静态时钟代码,网页时钟实现代码html5
- sosoapi初次接触
- Java实现静态代理
- php 生成电话名片二维码
- STM32使用W25QXX flash闪存芯片基于串口自由写入或读取数据
- xmlDocument是什么?
- 服务器winsxs文件夹怎么清理工具,win7 winsxs文件夹怎么清理|win7清理winsxs文件夹方法...
- python实现千牛客服自动回复语_客服自动回复设置技巧,别再傻傻全部自己回复了...
- js仿照 蚂蚁森林 效果
- C中strchr()函数用法
- 字长模型LP64,ILP64,LLP64,ILP32,LP32
- 微信商城商家该如何运营