当前位置: 首页>新闻资讯>技术问答

T113如何读取TF卡文件

SD NAND-贴片式TF卡-贴片式SD卡-免费测试2025-11-113

全志 T113 是一款高性能的嵌入式处理器,通常运行 Linux 操作系统。因此,读取 TF 卡文件的过程就是在 Linux 系统下挂载和使用块设备的标准流程。

整个过程可以分为以下几个步骤:

第一步:硬件连接与确认

  1. 硬件连接:确保 TF 卡座正确连接到 T113 的 SDC0SDC1 控制器引脚上。这通常在核心板和底板设计时就已经确定。

  2. 电源管理:确保为 TF 卡座提供了稳定的电源(3.3V)。

第二步:内核驱动配置

要让 Linux 系统识别 TF 卡,必须先确保内核配置正确。

  1. 启用 SD/MMC 主机控制器驱动
    在内核配置中,需要启用 T113 的 SD/MMC 控制器驱动。

Device Drivers
  -> MMC/SD/SDIO card support
    -> Sunxi SD/MMC Host Controller support

通常,全志官方 SDK 默认已经配置好。

启用文件系统支持
根据你 TF 卡的文件系统格式(如 FAT32, ext4 等),启用相应的内核选项。

File systems
  -> DOS/FAT/NT Filesystems
    -> MSDOS fs support
    -> VFAT (Windows-95) fs support
  -> The Extended 4 (ext4) filesystem

  • 编译内核:配置好后,重新编译内核并烧录到 T113 设备中。

第三步:系统启动与设备节点生成

当系统启动时,如果驱动加载成功,你会在内核日志中看到类似以下的信息:

$ dmesg | grep mmc
mmc0: host does not support reading read-only switch, assuming write-enable
mmc0: new high speed SDHC card at address 1234
mmcblk0: mmc0:1234 SA16G 14.8 GiB
mmcblk0: p1

这表示系统识别到了一个 SDHC 卡(mmc0),其容量为 16G,并且系统为其创建了一个块设备节点 mmcblk0,同时检测到了第一个分区 mmcblk0p1

/dev/ 目录下,你会看到对应的设备节点:

  • /dev/mmcblk0:整个 TF 卡

  • /dev/mmcblk0p1:TF 卡的第一个分区(通常就是你格式化的那个分区)

第四步:挂载文件系统

要访问文件,你需要将 TF 卡的分区挂载到 Linux 文件系统树的一个目录上(这个目录称为挂载点)。

1. 手动挂载(用于测试和调试)

  • 创建挂载点

mkdir /mnt/sdcard

挂载 TF 卡
假设你的 TF 卡是 FAT32 格式,并且设备节点是 /dev/mmcblk0p1

mount -t vfat /dev/mmcblk0p1 /mnt/sdcard

如果是 ext4 格式,则使用:

mount -t ext4 /dev/mmcblk0p1 /mnt/sdcard

验证挂载
使用 df -h 命令查看挂载情况。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1   15G  1.2G   14G   8% /mnt/sdcard

现在,你就可以通过 /mnt/sdcard 目录访问 TF 卡里的文件了。

ls /mnt/sdcard
cp /mnt/sdcard/myfile.txt /home/

卸载 TF 卡
在安全移除 TF 卡之前,务必先卸载。

umount /mnt/sdcard

自动挂载(用于产品化)

在产品中,我们通常希望系统启动时能自动挂载 TF 卡。有几种方法:

  • 修改 /etc/fstab 文件
    fstab 文件中添加一行,告诉系统在启动时自动挂载。

# 设备           挂载点       文件系统  参数      备份  检查
/dev/mmcblk0p1   /mnt/sdcard  vfat    defaults  0     0

  • 重启后,TF 卡就会自动挂载到 /mnt/sdcard

  • 使用 udev 规则(更灵活)
    可以创建一个 udev 规则,当系统检测到 TF 卡插入时,自动执行挂载命令。这种方式更复杂,但可以处理热插拔。

  • 使用 Systemd Mount 单元
    在现代 Linux 发行版中,这是推荐的方式。你需要创建一个 .mount 文件来定义挂载。

第五步:在应用程序中读写文件

一旦成功挂载,在你的应用程序中,就可以像操作普通目录一样,使用标准的文件 I/O 函数来读写 TF 卡上的文件。

C 语言示例:

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *file;
    char buffer[100];

    // 写入文件
    file = fopen("/mnt/sdcard/test.txt", "w");
    if (file == NULL) {
        perror("Error opening file for writing");
        return 1;
    }
    fprintf(file, "Hello, T113 and TF Card! ");
    fclose(file);

    // 读取文件
    file = fopen("/mnt/sdcard/test.txt", "r");
    if (file == NULL) {
        perror("Error opening file for reading");
        return 1;
    }
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }
    fclose(file);

    return 0;
}

Shell 脚本示例:

#!/bin/sh
# 备份日志到 TF 卡
cp /var/log/messages /mnt/sdcard/backup_log_$(date +%Y%m%d).txt
echo "Backup completed."

常见问题与排查

  1. 找不到 /dev/mmcblk0p1 设备节点

    • 检查 dmesg 查看内核是否识别到卡。

    • 检查硬件连接和电源。

    • 确认内核配置是否正确。

  2. 挂载失败 "Mount failed"

    • 确保挂载点目录 /mnt/sdcard 存在。

    • 可能是内核不支持该文件系统,请重新配置内核。

    • 检查 -t 参数指定的文件系统类型是否正确。可以用 blkid /dev/mmcblk0p1 命令查看分区的实际文件系统类型。

    • 错误信息:wrong fs type, bad option, bad superblock

    • 错误信息:mounting /dev/mmcblk0p1 on /mnt/sdcard failed: Invalid argument

    • 错误信息:mounting /dev/mmcblk0p1 on /mnt/sdcard failed: Permission denied

  3. 文件权限问题

    • 如果挂载为 FAT32(vfat),所有文件的权限都取决于挂载时使用的 umaskuidgid 参数。例如,要让普通用户可读写,可以这样挂载:

mount -t vfat -o uid=1000,gid=1000,umask=000 /dev/mmcblk0p1 /mnt/sdcard

总结

对全志 T113 来说,读取 TF 卡文件是一个标准的 Linux 外设管理过程:
硬件正确 -> 驱动加载 -> 生成设备节点 -> 挂载到目录 -> 像访问普通文件夹一样访问文件

根据你的开发环境(使用的是全志官方 Tina Linux、Buildroot 还是其他发行版),具体的配置路径可能略有不同,但核心原理完全一致。

热门标签:SD NAND FLASH 贴片式TF卡 贴片式SD卡 SD FLASH NAND FLASH


SD NAND-贴片式TF卡-贴片式SD卡-免费测试

深圳市芯存者科技有限公司

联系我们

电话:176-6539-0767

Q Q:135-0379-986

邮箱:1350379986@qq.com

地址:深圳市南山区后海大道1021号C座

商务咨询
商务咨询
技术支持
技术支持