Edit online

挂载 SD 卡

4 Nov 2024
Read time: 2 minute(s)

Luban-Lite 可以实现挂载 SD 卡(FAT32 格式),本节以一个 SD 卡只有一个分区为例,介绍挂载 SD 卡的详细步骤。

配置 SDMC 接口

进入 SDK 的 menuconfig 菜单,选中对应 SDMC 接口。

例如,对于 D211BBV-DEMO-V2.0 开发板,SD 卡对接 SDMC1 接口,则选中 SDMC1 接口并设置为使用,如下所示:

Board options  --->
    [*] Using SDMC1
        SDMC1 Parameter

设置自动挂载

target/<cpu>/<board>/board.c 中,找到 mount_table 数组,添加以下代码自动挂载 SD 卡:
const struct dfs_mount_tbl mount_table[] = {
    ...
    {"sd0p0", "/sdcard", "elm", 0, 0, 0}, // SD 卡首个分区
    {"sd0", "/sdcard", "elm", 0, 0, 0}, // 设备节点,一定存在
    ...
};
上述代码中:
  • sd0 通常为 SD 卡的设备节点。

  • sd0p0 通常为 SD 卡第一个分区,通常情况下也是唯一分区。

    如果 SD 卡有多个分区,则文件名需要递增,例如使用 sd0p1、sd0p2 … 。

  • 使用 Linux 中的 mkfs.vfat 命令直接格式化后的 SD 卡,可能只有 sd0,没有 sd0p0。

编译烧录

配置完成后,保存退出,编译、烧录程序。

编译烧录后,系统会自动挂载 SD 卡。

验证

  • 验证 SD 卡识别
    烧录完成后,断开电源,接入 SD 卡,上电,查看系统设备列表。
    注: 若使用手动挂载,则此步需额外执行 mountsd0/sdcardelmmount sd0p0 /sdcard elm
    当出现 sd0 和 sd0p0 设备时,表明系统已识别 SD 卡:
    aic /> list_device
    device           type         ref count
    -------- -------------------- ----------
    ...
    sd0      Block Device         0
    sd0p0    Block Device         1
    ...
    
    注:

    若使用手动挂载,则在此时执行 mount sd0 /sdcard elmmount sd0p0 /sdcard elm

  • 查看文件
    进入 sdcard 目录,查看文件列表。文件列表中出现 sdcard 表示挂载完成。
    aic /> cd sd
    aic /> cd sdcard
    aic /sdcard> ls
    Directory /sdcard:
    lvgl_data           <DIR>
    aicdoc.tar     89180160
    tools               <DIR>
    aic /sdcard>