kernel(十五)SD/MMC

三星已经提供了支持 s5pv210 SD/MMC 的驱动: drivers/mmc/host/sdhci-s3c.c
mach-smdkv210.c 中已经添加到 smdkv210_devices 设备列表


配置内核

Device Drivers --->
        <*> MMC/SD/SDIO card support --->
        <*> Secure Digital Host Controller Interface support
        <*> SDHCI platform and OF driver helper
        <*> SDHCI support on Samsung S3C SoC
        [*] DMA support on S3C SDHCI
编译内核,运行测试


现在插入SD卡


查看 SD 卡的分区

其中 mmcblk0 代表整个 SD 卡, mmcblk0p1 代表第 1 个分区

挂载 SD 卡到 sdcard 目录,以及卸载操作

-t 指定挂载格式为 vfatSD 卡必须格式化为 fat 或者 fat32 格式,否则会出现如下错误。
mount: mounting /dev/mmcblk0p1 on mnt/ failed: Invalid argument
linux
内核默认配置为支持 vfat 格式,另外用户也可以选择支持 NTFS 格式

添加脚本,实现自动挂载和卸载
创建
shell 脚本/etc/mdev/insert.sh /etc/mdev/remove.sh,以及/etc/mdev.conf,具体内容请下载源码
3 个文件创建完成后,给/etc/mdev/insert.sh /etc/mdev/remove.sh 添加可执行权限

重新插入SD卡,SD 卡被自动挂载到/media/mmcblk0p1 目录,拔出 SD 卡, SD 卡被自动卸载


所用脚本及配置文件源码:
insert.sh

#!/bin/sh
if [ -n "$1" ] ; then
    if [ -b /dev/$1 ]; then
        if [ ! -d /media ]; then
            mkdir -p /media
        fi  
        if [ ! -d /media/$1 ]; then
            mkdir -p /media/$1
        fi  
   
        mount /dev/$1 /media/$1
    
        if [ $? -ne 0 ]; then
            rm -rf /media/$1
        fi  
    fi  
fi
mdev.conf
sd[a-z][0-9]      0:0 666        @(/etc/mdev/insert.sh $MDEV $SUBSYSTEM)
sd[a-z]           0:0 666        $(/etc/mdev/remove.sh $MDEV $SUBSYSTEM)
ub[a-z][0-9]      0:0 666        @(/etc/mdev/insert.sh $MDEV $SUBSYSTEM)
ub[a-z]           0:0 666        $(/etc/mdev/remove.sh $MDEV $SUBSYSTEM)
mmcblk[0-9]p[0-9] 0:0 666        @(/etc/mdev/insert.sh $MDEV $SUBSYSTEM)
mmcblk[0-9]       0:0 666        $(/etc/mdev/remove.sh $MDEV $SUBSYSTEM)
remove.sh
#!/bin/sh
MOUNTS=$(mount | grep $1 | cut -d' ' -f3)
umount $MOUNTS
rm -rf $MOUNTS

猜你喜欢

转载自blog.csdn.net/jerrygou/article/details/80919122
今日推荐