flash盘的fat结构分析
flash 盘的fat 结构
flash 硬盘与普通的磁头、柱面式介质不一样。在开发u 盘的过程中,使用flash 作为存储介质。它有其特定的结构特点。
以16m 的三星k9f2808u0a-ycb0 flash 为例,它有1024 个block,每个block 有32个page,每个page 有512+16=528 个字节。
flash 的结构
flash 的读写有其自身特点:1)必须以page 为单位进行读写;2)写之前必须先擦除原
有内容;3)擦除操作必须对block 进行,即一次至少擦除一个block 的内容。
针对这种情况,将flash 的一个page 定为1 个扇区,将其2 个block,64 个扇区定为
一个簇,这样,簇的容量刚好为512*64=32k,满足fat16 对簇大小的要求。
fat 分配空间的时候,是按簇来分配的,但是其给出的地址却是lba(logical block
address),即它只给出一个扇区号,比如对此flash 而言,若给出lba 为0x40,实代表簇1
的扇区1。因此需要将logical block address 转换为物理地址,这样,才可以对数据进行存
取操作。根据我们定义的结构,转换公式为:
flash 的block = logical block address/0x20
flash 的page = logical block address %0x20
实际上,如果定义每个簇为32 个扇区是最好的,因为这样物理结构和逻辑结构刚好一
致。但是这也无防,因为不管logical block address 给出什么值,只要按上述公式,总可以
得到物理上正确的block 和page,再使用flash 的读写命令读取对应的block 和page 就可
以了,读的问题复杂一些,在后面介绍。
因此簇和扇区的概念只是在bpb 中给出存储介质信息的时候告之系统就可以了,我们
只要做好lba 与物理地址间的转换就可以了。
由于做为u 盘的flash 不要求启动,因此可以没有mbr 区,只包含dbr、fat、dir
和data 四个区。
因此,flash 的前两个block 的内容如下:
lba block/page 长度 内容说明
0 0,0 512 字节 mbr=bpb+excutable code+55aa(查看内容)
1~2 0,1~0,2 1024 字fat 区(第一份fat)
节
3~4 0,3~0,4 1024字节 fat 区备份(第二份fat)
5~39h目录区(在bpb 中调整目录项数,使其刚好占尽本簇)
40h~ 数据区(因目录区占尽一个簇,故数据区始于新簇首扇)
当host 发出read 命令后,flash 读写操作即告开始,host 首先读取mbr,得到有关存储介质的有关信息,诸如扇区长度、每簇扇区数以及总扇区数等内容,以便知道此盘有多大。如果读取正确,会接着读取文件分配表,借以在pc 机上的可移动盘符中显示文件目录,并可以复制、删除或是创建文件。系统自动将这些命令都转换成read 或write 两种命令,通过usb 的read 或write 命令块描述符来从flash 中相应扇区读取数据,或是将特定长度的数据写入flash 相应簇中。
flash 的读写
针对flash 读写的特点,特别是其可随机读,但无法随机写的问题,需要通过设置缓冲
区来解决。在与usb host 进行数据交换的过程中,最小的单位是扇区:512 字节。由于flash
在写之前必须先擦除,而一擦又必须擦一个block,因此在擦除某block 之前必须保存同一
个block 中有关扇区的数据。因此,如果每收到一个扇区的内容就进行一次擦、保存、写的
操作,系统任务将十分繁重,无法及时响应usb host 端的请求。
因此,在系统中设置32k 的缓冲区(arm7 系统具有2m sdram,因此内存足够,如果在8051 平台上,则需要另外想办法),每完成一次数据传输后,记下本次要写的开始扇区和总扇区数,将本次要写的数据所涉及的扇区以外的数据从flash 中读出来,存放在缓冲区中对应位置,然后擦除一个block,再将缓冲区中内容一次全部重新写入flash。
华为nova9系列的这些功能很实用,但你不一定了解
COHDA支持真实世界测试领域 5G Advanced网络技术演进白皮书2.0发布
普莱信打破封装设备多个领域国外垄断局面
逆导晶闸管(RCT)是什么?
摩托车里程表可使用双极霍尔传感器AH402F,兼容SS360
Flash盘的FAT结构分析
电子标签辅助拣货系统在工业生产行业的未来可期
四通道RS-422差动线路驱动器,速率最高10Mbps,常用于电机编码器
奇数分频器的设计
江苏移动成功开通全球首个基于O-RAN架构的4G室分云基站
5G即将到来浙江提前布局抢占5G发展先机,勇立5G发展潮头
多款十代酷睿移动版参数曝光 i3-10300/i3-10320直接灭掉七代准旗舰i7-7700
2016 NIDays隆重开幕:立足当下,着眼未来,共谋下一场科技革命
不只京东方AMOLED 四川已规划8条新型显示生产线
ABC三车齐驱,物联网发展将超出你的想象!
介绍一个飞向太空的RISC-V处理器
Avx推出可代替两个独立电容的多阳极电容
人工智能正从研究实验走向应用与生产 AI计算系统设计与优化愈发重要
WIFI无线网络技术详细分析
DAB DATA CHANNEL数据通道测试解决方案