FAT/FAT32 曾经是 windows下主流文件格式,虽然FAT已经这么多年了,也见识到一些缺点,但熟悉FAT,还是对文件系统认识有很大帮助。
我所使用的 是正点原子的 阿尔法 开发板,核心板上是 Nand-Flash,而非 EMMC存储芯片。
这里通过对 SD卡进行文件操作命令来使用。
一般来说,需要具备一些认识:
1. 文件存在 flash或硬盘里,还是一个个字节进行存储的,存储介子本身不负责具体内容。如果要对硬盘的数据进行识别,必须需要一定格式,还需要一个驱动程序进行识别。
2. 文件格式最主要作用:格式化管理,快速查找文件。
IMX6ULL 烧写系统时,是把EMMC或SD卡做了三个分区:
第一个分区: uboot (这个是无法识别的)
第二个分区:存放系统镜像,即Linux zImage+设备树文件(.dtb)。是FAT格式的
第三个分区:存放根文件系统的,EXT4格式的。
FAT格式文件操作命令,即针对 FAT格式的文件系统的操作。
fatinfo 命令令用于查询指定 MMC 设备分区的文件系统信息,格式如下:
fatinfo []
例如,我们要查询 SD卡的 分区 0 的文件系统信息,命令如下:
=> fatinfo mmc 0:0
** Unable to use mmc 0:0 for fatinfo **
可以看出,分区0 是查看失败。因为之前说过,SD的第一个分区存放 uboot的,是裸机程序,没有文件系统格式。
查询 SD卡的 分区 1 的文件系统信息,命令如下:
=> fatinfo mmc 0:1
Interface: MMC
Device 0: Vendor: Man 000003 Snr 9193d501 Rev: 15.13 Prod: SD32G
Type: Removable Hard Disk
Capacity: 30448.0 MB = 29.7 GB (62357504 x 512)
Filesystem: FAT32 "NO NAME "
=>
可以看出,SD卡的分区1即第二个分区,存放的是 FAT格式系统文件。
fatls [] [directory]
=> fatls mmc 0:1
system volume information/
0 file(s), 1 dir(s)
fstype :
例如,查看 SD卡的第 1 个分区。因为分区 0 存放的 uboot,并且分区 0 没有格式化,所以,文件系统格式未知。如下:
=> fstype mmc 0:0
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
查看 SD卡的第 2 个分区,以下可以看出SD的第 2 个分区的格式是FAT。
结果如下:
=> fstype mmc 0:1
fat