sd卡与FAT32文件系统
sd卡与FAT32文件系统
先把sd卡格式化,然后新建几个文件放在里面,用于分析,sd卡中文件的存储方式。
使用工具winhex,打开磁盘sd卡。
先分析一下sd卡的第一个扇区,其中的内容为DBR(DOS BOOT RECORD c操作系统引导记录区)
DBR中BPB部分才是这一区域的核心部分,对于FAT32的实现意义很大。
每个红线部分是一个字段,要知道是什么意思,对照表看看就可以啦:
上面的长度是只占的字节数,现在就对照分析一下,
每个扇区字节数:是00 02,属于小端存数,读得时候为0x02 00,也就是512字节。
每簇的扇区数:是0x08,就是包含8个扇区,大小为 8*512 字节 = 4kB。
保留扇区数:是26 00,就是0x0026,保留38个扇区,你会看到fat表放在第38个扇区,前面的空间就只
包含了DBR,没有跟文件有关的东西,都是与sd卡本身有关的信息。
fat表数:是02,就是2个,这是fat32文件系统的特色,2个中有一个是备份的。
磁道扇区数:3f 00 就是0x003f,63,一个磁道所含的扇区数为63
磁头数:ff 00 就是0x00ff,255
sd卡所含的总扇区数: 00 a0 3a 00 就是0x003aa000 共有3842048个扇区
fat表扇区数:a1 0e 00 00,就是0x0ea1,3745个扇区
根目录簇号:02 00 00 00,就是2号,其实就是实际存储位置是fat表后面的第一个簇,8个扇区。用于存储根目录。
下面还有一个信息不是很重要。
下面分析fat表:
fat表示从第38个扇区开始,然后占空间3745个扇区。为什么占这么大呢,首先fat表中每4个字节描述一个簇,一个簇中有8个扇区,sd卡可用扇区数是3834520。
(3834520/8)*4/512=3744.6484375,约为3745个扇区。可用扇区数是可以查啊。winhex中的详述技术报告:
接下来看看fat表中的内容吧:
fat表是用来表示一个文件占了多大空间的,都是以簇为单位。哪怕你的文件只有一个字节,也是占一个簇,4kB的空间。或许你会觉得很浪费,不过想想,分得越细,越难查找,所以需要折中。我在sd卡中新建一个文件夹是SEUIC,SEUIC中新建VIM.txt(大小是10.02kB,占空间12KB,就是3个簇),根目录下还有一个文件TEST.txt(大小17个字节,占4KB)。那么fat表怎么表示的呢?
前8个字节表示这里是fat表的开始。后面的红线表示,每出现FF FF FF 0F都表示一个文件的结束,每四个字节为一个簇项,用以标记次簇的下一个簇号。依次解释下,首先sd卡中存储的是根目录区,占一个簇,簇号是2。后面是一个文件夹目录文件(SEUIC),占一个簇,簇号3。后面是文件VIM.txt,占3个簇,这里就好玩了,第一个簇号是4,你看到的05,就是标记的下一个簇号,表示这两个簇共同记录了同一个文件,所以把他们链接起来。直至第6簇结束,表示文件共占3个簇。最后又是一个只占一个簇的文件(TEST.txt)。其实这里是看不出文件名的。这里只会记录文件在sd卡中的存储。然后在目录区中描述一个文件的时候,只要记录首簇号就可以了,很方便是不是。当你在一个文件中添加内容的时候,随便写在哪个簇,并不需要连续的,然后把簇号添加进上一个簇项里面,就完成任务了。
下面介绍目录区:
先计算目录区所在扇区,由fat表所在第一个扇区38,加上2个fat表所占扇区数就是3745*2(别忘了又一个备份的fat表)。结果是7528,winhex在详细技术报告中也说明这个扇区是第一个数据扇区。
要看懂每个字段的意思,还是要查表的:
一个目录项占32个字节,就是2行喽。可以看出SEUIC的属性是子目录,起始簇号是3,这里把目录当做文件管理,但是这样的文件大小是0;
对于SEUIC子目录下的文件这里是看不到的哦。TEST.txt文件属性是归档,就是文件,起始簇号是7,字节数为17.
那么再去找VIM.txt,首先定位SEUIC所在扇区,他的簇号是3,就是目录区所在扇区加8为7536。所以要找一个文件,是一层一层剥开来得。
好吧,现在去7536扇区看看:
可以看出,VIM.txt属性是归档,首簇号是4,大小为0x28da,10458字节。你可以右击文件属性看一下,肯定是对应的啊。
那么要看VIM中的内容直接去第4簇。我们去看一下TEST.txt文件吧,这个文件比较小,在第7簇,就是7538+4*8=7568.
内容就是this is a test!!! 好吧就这么多了。
在linux文件系统中,所要建立的文件索引节点所需的数据就是来自上面的32字节的数据,他记录了文件的名字,属性,大小,地址等信息。
还有就是,文件是一层一层向下找得,那么系统启动挂载sd卡的时候只需要把跟目录区拷贝到内存中就可以了。那么查找的时候,打开一个子目录,就可以找到这个目录下的文件信息了。所以把目录当做文件看待是很有好处的。因为文件本身在哪儿并不重要。
sd卡与FAT32文件系统相关推荐
- SD卡移植FAT32文件系统无MBR
问题:在研究SD卡和FAT32文件系统的时候,发现SD卡有的有MBR,有的没有MBR,这个为什么呢? 分析:MBR是主引导记录,是在给磁盘分区的时候建立的,我们的SD卡没有这个可能就是没有进行过分区操 ...
- 基于ATmega32的SD卡上FAT32文件系统数据读取
SD卡(secure digital memory card,安全数码卡)是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机.个人数码助理(PDA)和多媒体播放器等 ...
- 挂载镜像SD卡的FAT32文件系统分区到Linux中
首先使用fdisk –l命令查看sd卡的分区息 可以看到,sd卡有三个分区,第一个分区是FAT32系统,主要存放内核img文件和dtb文件,第二个分区是Linux系统分区,第三个分区格式未知,实际是U ...
- 【FatFs】基于STM32 SD卡移植FatFs文件系统
相关文章 <[SDIO]SDIO.SD卡.FatFs文件系统相关文章索引> 1.前言 FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统.它完全是由 ANSI C 语 ...
- 战舰V3适配oneos系列03:添加SD卡驱动及文件系统
战舰V3系列03:添加SD卡驱动及文件系统 本系列以 oneos2.3.0 提供的 STM32F103ZE 模板为基础,将 oneos 在战舰 V3 上运行起来,并逐步适配相关外设,计划周更 本系列相 ...
- STM32CubeMX系列09——SDIO(SD卡读写、SD卡移植FATFS文件系统)
文章目录 1. 准备工作 1.1. 简单扫盲 1.1.1. SD卡 1.1.2. TF卡 1.1.3. SDIO接口 1.2. 所用硬件及原理图 2. 创建工程 2.1. 选择主控 2.2. 系统配置 ...
- Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动——解决无法挂载SD卡的根文件系统
系列文章目录 Exynos4412 移植针对Samsung的Linux-6.1(一)下载.配置.编译Linux-6.1 Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动 ...
- openwrt挂载U盘或SD卡作为根文件系统
使用openwrt安装插件,发现flash太小,使用U盘或SD卡制作一个磁盘较大的根文件系统,用来安装较大的插件,如adguardhome #安装必要工具,Openwrt连接上互联网,使用ssh登陆o ...
- STM32CubeMX配置SD卡+DMA+Fatfs文件系统
STM32CubeMX配置SD卡+DMA+Fatfs文件系统 一.设备及软件 1.keil 2.STM32CubeMX 3.正点原子STM32F407探索者开发板 二.配置步骤 1.配置RCC外部晶振 ...
- 从sd卡启动之文件系统制作
在调试andriod的代码时候发现了一个问题.在andriod调试的时候无法进入常规的文件系统进行简单的操作.由于想要把alsa移植到210的开发板中,发现"/"文件系统是无法进行 ...
最新文章
- 硅谷大厂也看「名校学历」?Reddit小哥灵魂拷问引起热议
- 数据结构实验之串一:KMP简单应用
- 北斗导航 | 坐标变换矩阵(CTM)与欧拉角(Euler)互相转换:Matlab源代码
- 【转载】优酷网首席执行官兼创始人古永锵演讲
- maven 发布到仓库
- unity 全息交互ui_UI向3D投影全息界面的连续发展
- 自动打包_全自动打包机行业发展如何?全自动打包机行业发展现状分析
- 关于ics lab8 performance中的smooth
- 国际电信联盟:3GPP系标准成为唯一被认可的5G标准
- android系统下多媒体播放
- 【人机对话】对话的囧境?
- 分享一些第三方免费接口集
- 阅读-《金字塔原理》
- 供应链金融——研究结果总结
- 2018-2019赛季多校联合新生训练赛第三场题解和补题(中石油)
- java 字母大小写的转换_Java字母大小写转换的方法
- php写前端还是nodejs,javascript - 新手想在短期内写一个个人博客,是用php还是用nodejs?...
- python爬取腾讯新闻_Python采集腾讯新闻实例
- thinkphp 实现汉字转换成拼音
- CefSharp内核浏览器之C#与js的互相调用
热门文章
- 英语语法---名词性短语详解
- 计算机管理的事件id,事件查看器7035是什么意思_windows事件查看器常见ID代码含义详解...
- 介绍一个牛人的机器学习PPT
- 黄聪:css3实现图片划过一束光闪过效果(图片光影掠过效果)
- 如何解决u盘不能拷贝超过4G的大文件
- 贝叶斯算法(新闻分类任务)
- LeetCode之K sum problem
- 东北师范大学计算机研究生拟录取名单,东北师范大学2016年硕士研究生拟录取名单公示...
- vue 弹框只出来一半,另一半白屏遮挡了
- 无法复制文件到远程桌面的解决办法