SD卡

和ETH0以及USB一样,SD也是默认配置好的,不需要修改任何东西。

  • DTS的配置

根据原理图,看到SD卡的电源由GPIO0控制,因此DTS中sdmmc节点下的slot-pwr-gpios需要设置为PAD_GPIO0:

# vi infinity2m.dtsi

# vi infinity2m-ssc011a-s01a-padmux-display.dtsi

  • kernel config的配置
# cd kernel
# ARCH=arm make menuconfig

每次修改需要保存一下配置

# cp .config ./arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig  -f
# cd ..

重新编译固件并更新kernel:

# ./Release_to_customer.sh -f nand -p ssd201
# cat images/scripts/\[\[kernel.es

那么,系统启动后,把SD卡接上,将会看到/dev/mmcblk0节点:

  • SD卡的挂载

和U盘一样,SD卡也分自动挂载和手动挂载。

  • 手动

需要确保/dev/mmcblk0p1节点出来了,这样才能使用mount命令进行挂载:

# ls /dev/mmcblk0*
# mount /dev/mmcblk0p1 /mnt -o iocharset=utf8

  • 自动

根据我们之前USB自动挂载的工作,SD卡的自动挂载只需要在其基础上稍作修改即可。
首先是mdev.conf,它由rootfs.mk生成,所以修改它:

# vi project/image/configs/i2m/rootfs.mk

然后添加sdcard_insert和sdcard_remove:

# cd project/image/rootfs/
# tar -xvf rootfs.tar.gz
# touch rootfs/etc/hotplug/sdcard_insert rootfs/etc/hotplug/sdcard_remove
# chmod o+x ./rootfs/etc/hotplug/sdcard_insert ./rootfs/etc/hotplug/sdcard_remove
# vi rootfs/etc/hotplug/sdcard_insert
# vi rootfs/etc/hotplug/sdcard_remove
# cat rootfs/etc/hotplug/sdcard_insert
# cat rootfs/etc/hotplug/sdcard_remove
# mkdir rootfs/sdcard

修改完后,我们重新把rootfs打包:

# tar -cvf rootfs.tar.gz ./rootfs

最后重新编译固件,并更新rootfs:

# cd ../../../
# ./Release_to_customer.sh  -f nand -p ssd201
# cat images/scripts/\[\[rootfs.es    

系统起来后,可以看到SD卡已经被挂载到/sdcard下了:

至此,SD卡自动挂载功能完成。

文档更新时间: 2021-08-17 14:45   作者:Aeeditor