arm上sd卡热插拔问题的解决:
首先,保证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卡热插拔问题的解决:的更多相关文章
- NUC972当检测到sd卡时,在sd卡驱动中操作gpio开启sd卡的电源,解决sd卡因低电压有时识别不正常的问题
1.根据硬件原理图,找到对应控制sd卡电源的gpio引脚,并在sd卡驱动文件中定义操作改该引脚的宏 2.在sd卡检测函数中,使用glib增加开sd卡电源的操作,如此当sd卡每次被检测到时,驱动中就会自 ...
- sd 卡驱动--基于高通平台
点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍 ...
- 不从SD卡启动树莓派2
本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...
- 手机SD卡损坏补救措施
现在的应用程序越来越重,比如微信.来往之类的,稍微用一段时间,就会占用几十MB甚至上百MB的空间.而有时候甚至手机会出现"无响应"的现象,需要你选择"继续等待" ...
- 不下软件,照样可以完美正确格式化树莓派SD卡!(恢复U盘/SD卡到满容量)
树莓派作用千千万,系统崩溃的理由也数不胜数(不要问我为啥知道),所以系统的重装和sd卡的格式化也在所难免.顺便给大家看一下我今天的成果,我不就是不小心摔了一下我的树莓派...我和sd卡一定是冤家! 捡 ...
- imx6 android SD卡启动
工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...
- 如果使用安卓4.4的SD卡?
安卓4.4默认情况下,后安装的程序无权写入数据到SD卡中,那么是否我们就不能用了?看了很多文章,都说要Root,随后修改配置文件.我觉得这不是很好的方法,Root之后的安卓会有很大风险,这不是最好的办 ...
- 如何使用安卓4.4的SD卡?
安卓4.4默认情况下,后安装的程序无权写入数据到SD卡中,那么是否我们就不能用了?看了很多文章,都说要Root,随后修改配置文件.我觉得这不是很好的方法,Root之后的安卓会有很大风险,这不是最好的办 ...
- zedboard烧写SD卡启动linux镜像
1. 先把SD卡格式化,然后把镜像文件拷贝到SD卡,下面应该是没有文件系统的 2. 插上SD卡,Zedboard设置启动模式,有5个跳线帽,配置如下,上电启动 3. 看下串口的输出
随机推荐
- DRF 中 解决跨域 与 预检
DRF 中 解决跨域 与 预检 1 跨域 浏览器的同源策略: 对ajax请求进行阻拦 ps: 对href src属性 不限制 只有浏览器会阻止,requests模块不会存在跨域 (1)解决方案1 JS ...
- Arduino UNO的原理图
Arduino UNO的原理图是开源的,所以可以从arduino网站上下载它: https://www.arduino.cc/en/Main/ArduinoBoardUno 原理图PDF: https ...
- 使用Metasploit收集邮箱信息
Metasploit提供了很多辅助的模块,非常实用.今天介绍一个叫search_email_collector的模块,它的功能是查找搜索引擎(google.bing.yahoo),收集和某个域名有关的 ...
- mysql基本操作(重点)
显示数据库 show databases 进入指定数据库 use 数据库名称 创建数据库 create database 数据库名称 default character set=utf8 删除数据库 ...
- 串口通信(C#实践)
最近在做一个和智能硬件设备(数字焊接电源)通信的应用软件.和各设备之间通信使用的是串口或网络(Socket)的方式. 理论 串口通信,.NET 里提供了专门操作串口的类 System.IO.Ports ...
- Kernel,Shell,Bash 的关系
Kernel (内核) Kernel 操作系统内核 操作系统内核是指大多数操作系统的核心部分.它由操作系统中用于管理存储器.文件.外设和系统资源的那些部分组成.操作系统内核通常运行进程,并提供进程间的 ...
- 洛谷 P1561 [USACO12JAN]爬山Mountain Climbing
传送门 题目大意: n头牛,上山时间为u(i),下山为d(i). 要求每一时刻最多只有一头牛上山,一头牛下山. 问每头牛都上下山后花费最少时间. 题解:贪心 推了推样例,发现上山时间一定,那找个下山最 ...
- webpack中多模块依赖
多模块依赖 刚才的例子,我们仅仅是跑通了webpack通过entry.js入口文件进行打包的例子.下面我们就来看一下它是否真的支持CommonJs和AMD两种模块机制呢?下面我们新建多几个js文件吧! ...
- 使用axis2进行webservice发布与调用
一.介绍下cxf.axis.axis2区别 新一代的Web Services 框架如Axis2.CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的Axis 1.x 系列演化过来,而A ...
- 【android】Socket简单用法
Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket ...