首先,保证sd卡驱动是完好,但是sd卡却无法热插拔或者无法识别。

刚开始我的板子上,sd是能够读取的,但是却不支持热插拔,看了几天sd驱动,找到了问题的原因,是驱动中硬件引脚相关设置的问题,具体根绝个人板子来修改,我想说的是sd卡驱动完好下如何使板子支持热插拔,内核的相关配置我就不多说了,网上很多。

1)确保内核支持热插拔
# cd
linux-2.6.30.4# vi .config
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_STRIP_ASM_SYMS is not set
CONFIG_HOTPLUG=y  //确保这项为y
CONFIG_PRINTK=y
CONFIG_NET=y    
//确保这项也为y
确保以上两项都选上,不然/proc/sys/kernel/目录不会出现hotplug文件!
2)确保busybox支持mdev
mdev是busybox中udev设备文件系统的精简版

# make menuconfig
确保以下几项被选中:
Linux System Utilities  --->
mdev

Support
/etc/mdev.conf

Support
subdirs/symlinks

Support regular expressions substitutions when renaming dev

Support command execution at device
addition/removal

Support loading of
firmwares
3)根文件系统
解析mdev机制

执行 mdev -s:
以 "-s" 为参数调用位于 /sbin 目录下的 mdev(其实mdev是个软链接,其作用是传递参数给 /bin 目录下的
busybox 程序并调用它),
mdev 扫描 /sys/class 和 /sys/block 目录中所有的类设备目录,如果在类设备目录中含有名为 "dev"
的文件,且文件中包含的是设备号,则 mdev 就利用这些信息为这个设备在 /dev 目录下创建设备节点文件。
一般只在启动时才执行一次 "mdev -s" 。
热插拔事件:
由于启动时执行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,
那么当有热插拔事件产生时,内核就会调用位于 /sbin 目录下的mdev。
这时 mdev 通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了 /sys
中的那一个类设备目录。
接着会看看这个类设备目录中是否有名为 "dev" 的文件,如果有就利用这些信息为这个设备在 /dev
目录下创建或删除设备节点文件并执行相应的动作 ACTION 。
4)添加对热插拔事件的响应,实现U盘和SD卡的自动挂载与缷载
#
vi
/etc/mdev.conf

sd卡相关内容为:

sd[a-z][0-9]     
0:0
666       
@
/etc/hotplug/usb/udisk_insert

sd[a-z]          
0:0
666       
$ /etc/hotplug/usb/udisk_remove
mmcblk[0-9]p[0-9] 0:0
666       
@ /etc/hotplug/sd/sd_insert
mmcblk[0-9]      
0:0
666       
$ /etc/hotplug/sd/sd_remove

建相应目录和文件

# vi
/etc/hotplug/usb/sd_insert

内容为:
#!/bin/sh
mkdir /sdcard
mount -t vfat /dev/sdcard /sdcard

# vi /etc/hotplug/usb/sd_remove
内容为:
#!/bin/sh
umount /sdcard/
rm /sdcard -r

为以上两个脚本加上可执行权限:
# chmod +x
/etc/hotplug/usb/sd_insert
# chmod +x /etc/hotplug/usb/sd_remove

有以下一点需要注意:

   
如果经过上述步骤已经实现sd卡热插拔,但是你想在/sdcard/目下下来操作sd卡,比如新建文件(夹)或打开并写入文件,记得结束后,要在该文件夹下执行一下同步操作:sync命令,否则会报错,你在插入sd卡,会发现你写入的文件不存在。切记:要用sync

arm上sd卡热插拔问题的解决:的更多相关文章

  1. NUC972当检测到sd卡时,在sd卡驱动中操作gpio开启sd卡的电源,解决sd卡因低电压有时识别不正常的问题

    1.根据硬件原理图,找到对应控制sd卡电源的gpio引脚,并在sd卡驱动文件中定义操作改该引脚的宏 2.在sd卡检测函数中,使用glib增加开sd卡电源的操作,如此当sd卡每次被检测到时,驱动中就会自 ...

  2. sd 卡驱动--基于高通平台

    点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍 ...

  3. 不从SD卡启动树莓派2

    本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...

  4. 手机SD卡损坏补救措施

    现在的应用程序越来越重,比如微信.来往之类的,稍微用一段时间,就会占用几十MB甚至上百MB的空间.而有时候甚至手机会出现"无响应"的现象,需要你选择"继续等待" ...

  5. 不下软件,照样可以完美正确格式化树莓派SD卡!(恢复U盘/SD卡到满容量)

    树莓派作用千千万,系统崩溃的理由也数不胜数(不要问我为啥知道),所以系统的重装和sd卡的格式化也在所难免.顺便给大家看一下我今天的成果,我不就是不小心摔了一下我的树莓派...我和sd卡一定是冤家! 捡 ...

  6. imx6 android SD卡启动

    工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...

  7. 如果使用安卓4.4的SD卡?

    安卓4.4默认情况下,后安装的程序无权写入数据到SD卡中,那么是否我们就不能用了?看了很多文章,都说要Root,随后修改配置文件.我觉得这不是很好的方法,Root之后的安卓会有很大风险,这不是最好的办 ...

  8. 如何使用安卓4.4的SD卡?

    安卓4.4默认情况下,后安装的程序无权写入数据到SD卡中,那么是否我们就不能用了?看了很多文章,都说要Root,随后修改配置文件.我觉得这不是很好的方法,Root之后的安卓会有很大风险,这不是最好的办 ...

  9. zedboard烧写SD卡启动linux镜像

    1. 先把SD卡格式化,然后把镜像文件拷贝到SD卡,下面应该是没有文件系统的 2. 插上SD卡,Zedboard设置启动模式,有5个跳线帽,配置如下,上电启动 3. 看下串口的输出

随机推荐

  1. 【SQL查询】视图_view

    转自:http://database.e800.com.cn/articles/2009/719/1248015564465_1.html 视图是从一个或几个基本表(或视图)导出的表.它与基本表不同, ...

  2. ORM 关键

    1. 老师的增删改查 1. teacher_obj.cid.add(*[1, 2, 3]) 添加(必须打散) 2. teacher_obj.cid.set([1, 2, 3]) 设置(不用打散) 2. ...

  3. 前端之JavaScript 04 事件 (未全)

    一.事件类型 常见的主要事件类型介绍如下: onfocus 元素获得焦点. 练习:输入框 onblur 元素失去焦点. 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行 ...

  4. Centos6.4_X64编译安装php-5.4.17、nginx-1.4.2、mysql-5.6.13

    安装参考: CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5 http://www.dedecms.com/knowledge/servers/linux- ...

  5. HBase错误大全

    1. stopping hbasecat: /tmp/hbase-root-master.pid: No such file or directory 原因:hadoop的pid文件丢失,hadoop ...

  6. python学习-实现用户密码登录,输错三次锁定

    作业需求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 判断用户是否在黑名单,若在黑名单,则将用户锁定 判断用户是否存在,若不存在,提示用户不存在 若用户存在,判断登录密码是否 ...

  7. Python错误TypeError: write() argument must be str, not bytes

    2016-07-03 20:51:25 今天使用Python中的pickle存储的时候出现了以下错误: TypeError: write() argument must be str, not byt ...

  8. 剑指offer-第六章面试中的各项能力(n个骰子的点数)

    题目:把n个骰子扔到地上,骰子之和为S,输入n,打印s所有可能的值出现的概率. 思路:由于骰子的点数为1~6,因此n个骰子之和的大小为n~6n之间.故可以定义一个数组来存放这6n-n+1个数出现的次数 ...

  9. Sapnco3 RfcTable Structure

    RfcTable 中字段 并不固定,以下内容仅供参考 1. 包含IDOC的 RfcTable SDATA字段值为IDOC数据,解析IDOC数据需依据IDOC字段长度对SDATA进行截取 functio ...

  10. 【JVM】JVM参数说明和分析

    不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略, 调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Jav ...