4. SD/MMC 卡操作指南¶
4.1. 操作准备¶
使用SDK 发布的 U-boot 和 kernel。
- 文件系统:对于SD/MMC卡来说,SDK仅支持FAT文件系统,支持可读可写。启动至kernel后需挂载至/mnt/sd目录或根据项目需求的目录即可。
可透过fdisk工具实现分区的工作。
Cv180x/cv181x SD 支持 2.0与3.0:
目前cv180x/cv181x SD/MMC卡仅支持3.3V VDDIO,使用者需注意。
4.2. 操作过程¶
默认SD/MMC 相关驱动模块已全部编入内核,不需再额外执行加载命令。
插入卡片上电启动,可以在U-boot下,通过fat相关指令查看卡片内容。 启动平台至kernel后,会自扫卡识别产生响应节点:/dev/mmcblk0和/dev/mmcblk0p1。
Uboot下卡片不支持热插拔操作,kernel下支持热插拔。在kernel下插入 SD 卡,就可以对 SD卡进行相关的操作。 具体操作请参见“3.3 操作示例”
4.3. 操作示例¶
SD 卡的读写操作示例如下。
初始化及应用:
步骤1. 检查分区信息
若没有显示出 p1,表示SD卡还没有分区, 请在Linux下用 fdisk 工具进行分区或是在windows系统上将SD卡进行格式化之后,进入步骤 2。
若有显示分区信息 p1,则表示 SD卡已经被检测到,并已进行过分区,可进入步骤 2进行挂载。
步骤2. 挂载
~ $ mount /dev/mmcblk1pX /mnt/sd ,此命令会将SD卡上第X个分区挂载至/mnt/sd目录
4.4. 操作中需要注意的问题¶
需确保SD卡与卡槽硬件脚位接触良好,如若接触不良,有可能会出现检测错误或读写数据错误相关错误信息,并导致读写失败。
每次插入 SD 卡后,都需要做一次挂载操作,才能读写 SD 卡;如果SD 卡已经挂载到文件系统,拔卡前则必须做一次卸载(umount)操作,否则有可能在下次插入SD卡后看不到SD卡分区。另,异常拔卡亦需要进行卸载动作。
必须确保 SD 卡已经创建分区,并将该分区格式化为 FAT或FAT32文件系统(LINUX下通过 fdisk命令,Windows下使用磁盘管理工具)。
在正常操作过程中不能进行的操作:
读写 SD 卡时不要拔卡,否则会打印一些异常信息,并且可能会导致卡中文件或文件系统被破坏。
若当前目录是处于挂载目录之下如/mnt/sd 时,则无法进行卸载操作,必须离开当前目录如/mnt/sd,才能进行卸载操作。
系统中读写挂载目录的进程没有完全结束前,不能进行卸载操作,必须完全结束操作挂载目录的任务才能正常卸载。
在操作过程中出现异常时的操作:
如果因为读写数据或其它不明原因导致文件系统被破坏,读写SD卡时可能会出现文件系统错误信息,这时需要进行卸载操作,拔卡,再次插卡并挂载,才能再次正常读写 SD 卡。
因为SD卡的注册,检测/注销过程需要一定的时间,因此拔卡后若再快速地插入卡,有可能会出现检测不到SD卡的现象。
如果在测试过程中异常拔卡,使用者需要按 ctrl+c 以回退出到kernel shell 下,否则会一直不停地打印异常信息。
SD 卡上有一个以上的分区时,可以通过挂载操作切换挂载不同的分区,但最后需确认挂载操作的次数与卸载操作次数相等,才能确保完全卸载所有的挂载分区。