扇区(sector):flash可操作的最小单元,通常指我们擦除的最小单元大小,以sd nand举例,通常最小为512Byte块(block) 以及 簇(cluster):其实这是两个相同的概念,只是由于历史原因,在不同系统上的不同称呼,在windows中称簇,而在linux中称块。一个簇/块由多个扇区组成,由于一个扇区的空间较小,因此文件...
发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、spi nor flash等众多存储设备,同时基于此文件系统的文件亦能被电脑正常读取。 2. 基础概念 在研究文件系统之前,我们需要首先弄清楚关于内存这块的几个基本概念: 2.1.区分 扇区、块、簇的概念 ...
发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、spi nor flash等众多存储设备,同时基于此文件系统的文件亦能被电脑正常读取。 2. 基础概念 在研究文件系统之前,我们需要首先弄清楚关于内存这块的几个基本概念: 2.1.区分 扇区、块、簇的概念 ...
在FAT32系统上新增FSInfo数据结构的原因是:在FAT12/16系统上,想要知道flash上剩余的簇数需要扫描整个FAT区才能计算出来,但随着flash容量的不断扩大,扫描花费的时长越来越长,为了避免扫描浪费过多的时间,因此在FAT32系统上增加了FSInfo结构,用于记录flash上剩余的簇数。 FSInfo数据结构如下: 注意:当扇区大小大于512字节...
为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper;这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这两个对照表太大,太占用内部flash,所以,一般将它们做成一个.bin的文件,叫做UNIGBK.BIN,将这个文件烧录到外部FLASH中,然后需要转换的时候,读外部FLASH中的这个...
因此针对上述问题,一群大佬们便开始设计文件系统这样一个东西,用来管理硬盘/flash上的数据信息,像我们电脑上打开文件夹,访问里面的文件,这其实就是基于文件系统访问电脑硬盘上数据的一个操作。 发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、...
FATFS中的NAND FLASH的簇和扇区 最近使用FATFS读写NANDFLASH,研究了一下小型文件系统的中的簇和扇区的具体含义,簇是文件系统使用的单位,扇区是物理介质(FLASH)使用的单位。 比如现在使用文件系统FAT32创建一个文件,FAT32初始化为4K一个簇。FLASH的一个扇区为1K。新建的文件大小为1K,那实际文件系统要为他分配1个簇...
disk_status函数只有一个参数pdrv,表示物理盘号。一般使用switch来进行分支判断,因为我们目前只有SPI FLASH芯片,所以将其他分支都删除掉,只留下SPI FLASH芯片这一个分支,在这个分支下直接调用FLASH芯片驱动函数中的W25QXX_ReadID()函数来获取设备ID并判断是否正确,正确的话函数返回正常的标志,错误的话返回错误标志。
diskio.c 文件是FatFs 移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法,FatFs 有且仅有它需要用到与SPI Flash 芯片相关的函数。diskio.h 定义了 FatFs 用到的宏,以及diskio.c 文件内与底层硬件接口相关的函数声明。 00history.txt 介绍了FatFs 的版本更新情况。 00readme.txt 说明了当前...
diskio.c文件是FatFs移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法, FatFs有且仅有它需要用到与SPI Flash芯片相关的函数。 diskio.h定义了FatFs用到的宏,以及diskio.c文件内与底层硬件接口相关的函数声明。 00history.txt介绍了FatFs的版本更新情况。 00readme.txt说明了当前目录下 diskio...