Edit online

挂载 SD 卡

Read time: 2 minute(s)
Luban-Lite 中可以挂载 SD 卡 (FAT32 格式)。本节以一个 SD 卡只有一个分区为例,介绍挂载 SD 卡的详细步骤。
  1. 进入 SDK 的 menuconfig 菜单,选中对应 SDMC 接口进行配置。
    例如,对于 D211BBV-DEMO-V2.0 开发板,SD 卡对接 SDMC1 接口,则选中 SDMC1 接口并设置为使用,如下所示:
    Board options  --->
        [*] Using SDMC1
            SDMC1 Parameter
                 Select SDMC1 BUSWIDTH (sdmc 4-bit mode)  --->
    	     [*] Using SDcard hotplug detection      //热插拔检查
    	     (PC.6) sdcard hotplug gpio (NEW) 
    	     [ ] SDMC1 connect to a SDIO device
    	     (3) SDMC1 driver phase
    	     (0) SDMC1 sample phase
    	    (100000000) SDMC1 CMU clock frequency
  2. 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。

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

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

  4. 验证 SD 卡识别。
    1. 烧录完成后,断开电源,接入 SD 卡,上电,查看系统设备列表。

    2. 执行下列命令:
      注: 若使用手动挂载,则此步需额外执行 mountsd0/sdcardelmmount sd0p0 /sdcard elm
      list_device
      当出现 sd0 和 sd0p0 设备时,表明系统已识别 SD 卡:
      device           type         ref count
      -------- -------------------- ----------
      ...
      sd0      Block Device         0
      sd0p0    Block Device         1
      ...
  5. 执行下列命令进入 sdcard 目录,并查看文件列表。
    cd sd
    ls
    如文件列表中出现 sdcard,表示挂载完成。
    Directory /sdcard:
    lvgl_data           <DIR>
    aicdoc.tar     89180160
    tools               <DIR>