扇区(sector):flash可操作的最小单元,通常指我们擦除的最小单元大小,以sd nand举例,通常最小为512Byte块(block) 以及 簇(cluster):其实这是两个相同的概念,只是由于历史原因,在不同系统上的不同称呼,在windows中称簇,而在linux中称块。一个簇/块由多个扇区组成,由于一个扇区的空间较小,因此文件...
发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、spi nor flash等众多存储设备,同时基于此文件系统的文件亦能被电脑正常读取。 2. 基础概念 在研究文件系统之前,我们需要首先弄清楚关于内存这块的几个基本概念: 2.1.区分 扇区、块、簇的概念 ...
为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper;这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这两个对照表太大,太占用内部flash,所以,一般将它们做成一个.bin的文件,叫做UNIGBK.BIN,将这个文件烧录到外部FLASH中,然后需要转换的时候,读外部FLASH中的这个...
在FATFS中具体操作如下:簇的大小是根据使用者在格式化是通过函数f_mkfs()定的,文件需要操作的FLASH的扇区大小是根据ffconf.h中的参数定的(FF_MIN_SS和FF_MAX_SS这两个参数),如果需要操作多个硬盘且扇区大小不一样,FF_MIN_SS和FF_MAX_SS这两个参数的区间范围需要包括所有需要的扇区大小。并在函数disk_ioctl()...
diskio.c文件是FatFs移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法, FatFs有且仅有它需要用到与SPI Flash芯片相关的函数。 diskio.h定义了FatFs用到的宏,以及diskio.c文件内与底层硬件接口相关的函数声明。 00history.txt介绍了FatFs的版本更新情况。 00readme.txt说明了当前目录下 diskio...
因此针对上述问题,一群大佬们便开始设计文件系统这样一个东西,用来管理硬盘/flash上的数据信息,像我们电脑上打开文件夹,访问里面的文件,这其实就是基于文件系统访问电脑硬盘上数据的一个操作。 发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、...
本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、spi nor flash等众多存储设备,同时基于此文件系统的文件亦能被电脑正常读取。
因此针对上述问题,一群大佬们便开始设计文件系统这样一个东西,用来管理硬盘/flash上的数据信息,像我们电脑上打开文件夹,访问里面的文件,这其实就是基于文件系统访问电脑硬盘上数据的一个操作。 发展至今,文件系统已有众多版本,本文主要分享 关于FAT文件系统的详细设计, FAT文件系统适用于嵌入式设备,如SD卡、SD nand、...
4、在Bsp文件夹中添加外部flash的驱动文件(这部分文件可以看我的STM32_SPI读写外部Flash那一篇文章),并修改diskio.c和ffconf.h文件 diskio.c文件修改: /** * @brief Gets Disk Status * @param pdrv: Physical drive number (0..) * @retval DSTATUS: Operation status*/DSTATUS disk_status ( ...
diskio.c 文件是FatFs 移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法,FatFs 有且仅有它需要用到与SPI Flash 芯片相关的函数。diskio.h 定义了 FatFs 用到的宏,以及diskio.c 文件内与底层硬件接口相关的函数声明。 00history.txt 介绍了FatFs 的版本更新情况。