前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fat文件系统简介

fat文件系统简介

作者头像
哆哆jarvis
发布2022-11-21 09:19:38
1.8K0
发布2022-11-21 09:19:38
举报

Fat文件系统是sd卡常用的一种文件系统类型,在电脑上,我们可以把sd卡格式化成exfat类型或者ntfs类型。在linux系统里,我们可以用mkfs.vfat /dev/mmcblk0把sd卡格式化成fat文件系统类型,容量大于512M的默认会格式化成fat32,就是32位,除了fat32,还有fat12,fat16。 Fat文件系统是以簇为基本单元管理的,什么是簇? 簇其实就是一连串的扇区,我们知道sd卡在格式化完后,通常一个sector为512字节,所以我们以常见情况假设一个sector为512字节,用winhex读sd卡的信息,可以看到,格式化完的fat32默认一个簇是8K,一个sector是512字节,也就是一个簇是16个sector,所以簇的本质其实就是一串扇区。Fat文件系统限制了最大簇为32K。

Fat(file allocation table)

Fat文件系统有2个隐藏文件,就是fat1和fat2,这两个文件内容是一样的,fat2是fat1的备份。 如何阅读fat表? Fat表里4个字节为一个fat项,fat项的内容为下一个簇的簇号,所以fat表其实就是一个簇链。其中,fat表的第0项和第1项是固定值,根目录为第2项。关于fat表的值的含义:

Fdt

理解fdt对我们来说十分重要。从下面表格可以看到fdt表的内容,一个fat占32字节,其中包括簇号和文件名。在代码里对应的结构体是msdos_dir_entry

代码语言:javascript
复制
struct msdos_dir_entry {
 __u8 name[MSDOS_NAME];/* name and extension */
 __u8 attr;  /* attribute bits */
 __u8    lcase;  /* Case for base and extension */
 __u8 ctime_cs; /* Creation time, centiseconds (0-199) */
 __le16 ctime;  /* Creation time */
 __le16 cdate;  /* Creation date */
 __le16 adate;  /* Last access date */
 __le16 starthi; /* High 16 bits of cluster in FAT32 */
 __le16 time,date,start;/* time, date and first cluster */
 __le32 size;  /* file size (in bytes) */
};

簇号十分重要,我们需要通过簇号找到对应的扇区。除此之外,fdt还跟inode,dentry这些信息要关联起来。 介绍完fat文件系统两大基石:fat和fdt,下篇介绍fat文件系统查找,删除文件。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆jarvis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Fat(file allocation table)
  • Fdt
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档