开发板:TQ2440

内核:Linux 2.6.32

PC OS:Ubuntu 11.04

本文将对SD卡驱动的移植做简要介绍。

1.  添加板级信息

打开arch/arm/mach-s3c2440/mach-smdk2440.c。

添加如下结构体:

/* Added by Yan Jun for SD/MMC driver */
/*********************************************/
#include <plat/mci.h>
static struct s3c24xx_mci_pdata s3c_mci_data = {.no_detect         = 0,.gpio_detect     = S3C2410_GPG(8),.no_wprotect     = 0,.gpio_wprotect     = S3C2410_GPH(8),
};

no_detect表示使用探测,也就是使用1个中断管脚来检测SD卡是否插入。

no_wprotect表示使用写保护。

gpio_detect和gpio_wprotect是根据原理图上的gpio来填写的,请参考你的原理图。

添加如下函数:

#if defined (CONFIG_MMC_S3C)
void __init s3c_add_device_sdi(struct s3c24xx_mci_pdata *pdata)
{s3c_device_sdi.dev.platform_data = pdata;//if(!pdata && !pdata->no_detect)//   s3c2410_gpio_cfgpin(S3C2410_GPG(8), S3C2410_GPG8_EINT16);platform_device_register(&s3c_device_sdi);
}
#else
void __init s3c_add_device_sdi(struct s3c24xx_mci_pdata *pdata) {}
#endif

在smdk2440_machine_init函数最后增加:

s3c_add_device_sdi(&s3c_mci_data);           /* Added by Yan Jun for SD/MMC driver */

2. 配置内核

3. 编译内核并烧入

4. 修改/etc/mdev.config

修改该文件的目的是为了让sd卡可以自动挂载。

内容如下:

mmcblk[0-9]*p[0-9] 0:0 0660 @/etc/sdcard_insert.sh
mmcblk[0-9]* 0:0 0660 $/etc/sdcard_remove.sh

这里调用了两个脚本,脚本如下。

[root@yj423 yj423]#cat /etc/sdcard_insert.sh
#!/bin/sh
echo "SD card insert action detected" > /dev/console
echo "MDEV = $MDEV"  > /dev/console
mount -t vfat -o iocharset=cp936 /dev/$MDEV /mnt/sdcard

[root@yj423 yj423]#cat /etc/sdcard_remove.sh
#!/bin/sh
echo "SD card remove action detected" > /dev/console
echo "MDEV = $MDEV"  > /dev/console
sleep 1
umount -fl /mnt/sdcard

最后,创建目录/mnt/scard 即可。

SD卡插入后,会自动挂在至/mnt/sdcard。

5. 验证

首先看下设备文件:

[root@yj423 yj423]#ls /dev/mmcblk0*
/dev/mmcblk0    /dev/mmcblk0p1

接着看下挂载情况:[root@yj423 yj423]#mount
rootfs on / type rootfs (rw)
/dev/root on / type yaffs2 (rw,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mmcblk0p1 on /mnt/sdcard type vfat (rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=cp936,shortname=mixed,errors=remount-ro)

最后两行显示了设备mmcblk0p1挂在到了/mnt/sdcard。

最后,去/mnt/sdcard下看看。

[root@yj423 yj423]#ls /mnt/sdcard/
DCIM  mp3

NOTE: 如果先插入SD卡,再启动系统,系统将无法正常启动,表现为无法进入控制台。原因待查。

S3C2440 Linux驱动移植——SD卡驱动相关推荐

  1. mini2440 linux移植开发实战指南,Linux-2.6.32.2内核在mini2440上的移植---移植SD卡驱动...

    移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,主机环境:VMare下CentOS 5.5 ,1G内存. 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linu ...

  2. LPC1768 SSP0驱动示例——SD卡驱动

    在STM32的SPI驱动上移植过来的,由于代码较长,这里只提供关键代码: /* SSPxSR - bit definitions. */ #define TFE 0x01 #define TNF 0x ...

  3. linux sd卡驱动流程图,SD卡驱动(详细介绍,不明白的人可以仔细看看了.有流程图)-转-OpenEdv-开源电子网...

    ffice ffice" /> 一.SD/MMC卡介绍 1.1.什么是MMC卡 MMC:MMC就是MultiMediaCard的缩写,即多媒体卡.它是一种非易失性存储器件,体积小巧(2 ...

  4. Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动——解决无法挂载SD卡的根文件系统

    系列文章目录 Exynos4412 移植针对Samsung的Linux-6.1(一)下载.配置.编译Linux-6.1 Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动 ...

  5. 详解sd协议以及裸机和u-boot中的sd卡驱动(2)

    3. sd卡驱动 3.1 引入 经过第2章我们知道,要想实现读写sd卡,需要按照sd协议规定的基本传输单位(命令.响应.数据)以及流程(初始化.读.写),向sd卡发送信号或者从sd卡接收信号. 为了简 ...

  6. SD卡驱动分析(一)

    Android下的SD卡驱动与标准LINUX下的SD卡驱动好像没有太大的区别,这里就以高通的ANDROID 2.3以代表,来简要分析一下LINUX下SD卡驱动的写法.由于小弟的技术有限,分析的有错的地 ...

  7. linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

    Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植>第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程.随着SD卡存 ...

  8. 嵌入式linux sd卡读写,嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)...

    嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 一.开发环境 主  机:VMWa ...

  9. linux 驱动编写(sd卡驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 随着sd卡的流行,sd卡在嵌入式设备上使用的场景也越来越多.那下面我们可以看一下,linux驱动 ...

最新文章

  1. “应付”大学作业,我花3小时写了一个“文本转手写”神器
  2. 华为算力最强AI芯片商用:2倍于英伟达V100!开源AI框架,对标TensorFlow和PyTorch...
  3. C语言程序设计之标准库快速排序qsort函数用法示例
  4. 三次样条插值Python实现
  5. [51nod]1229 序列求和 V2(数学+拉格朗日差值)
  6. [css] 你知道什么是流体排版吗?说说它的原理是什么?
  7. django中自定义了manager函数,使用的时候报错AttributeError: 'Manager' object has no attribute 'title_count'...
  8. IT十八掌掌第十一天课程总结
  9. 关于Cortex-M3 DesignStart ICODE DCODE ITCM DTCM 以及MemoryMap的划分
  10. Autocad中批量调整增强属性块中的元素的位置
  11. C++ Boost库:互斥量 mutex
  12. 图像超分辨率重建原理学习
  13. gmap 支持python吗_在gmap中使用bokeh的python为for circle添加工具提示
  14. 微信公众号开发:Java后台如何处理公众号关注和取关事件
  15. java curator_使用curator实现选举
  16. 计算机正确的按键手法游戏,lol正确的按键手法图解
  17. KBL410-ASEMI整流桥,KBL410规格书,KBL410机械数据
  18. MAC下的Sublime Text关闭自动更新提示,关闭更新检查,适用于Sublime 3和Sublime 4
  19. 分布式光纤测温系统DTS-BLY-5S
  20. 蓝牙ATT操作详解(copy)

热门文章

  1. 对于UPX脱壳的解决
  2. 磨人小问题-偶遇神奇解决方法(3)——关于win10专业版勒索软件防护感叹号且忽略点不了和提示设置onedrive
  3. 2018 上半年总结
  4. 常用60类图表使用场景、制作工具推荐
  5. quicktime pro 注册码
  6. Windows电脑用户都应该知道的好安全软件和防护知识
  7. 记录在IE下,JS下载保存文件方法
  8. 华硕T100 安装linux,华硕t100ha安装win10win8双系统安装全图解
  9. 用一门非常小众的语言REBOL写日历(万年历)打印的程序
  10. linux下hp ssp在线更新固件,hpe ssp固件升级文档.docx