赶早继续~
每个扇区512字节,我创建一个2M的文件。开始的时候我不知道一个簇几个扇区,后来调试程序的时候才看到内部数组,一个簇2个扇区。我是模拟NAND FLASH。一个page512字节,每个块有32个page,2M的文件有了128个块。文件的第一块用来作为系统块。所以扇区大小要扣除系统块。
写完diskio.c,就开始写测试代码。
首先必须创建一个文件,并赋予一定大小。我是通过读写来测试的。
1、调用f_mount函数。 一般挂载不会出现什么问题。
2、开始的时候我没调用f_mkfs(0,0,0),直接打开文件。打开文件会一直失败。
3、深入研究下fopen。fatfs文件系统有对象的概念。chk_mounted用来检查文件系统对象是否有效。调试遇到的问题就卡在fmt = check_fs(fs, bsect = 0);/* Check sector 0 if it is a VBR */。 该函数是用来加载引导记录并且检测是否为FAT映射表(应该是这个意思)。
static
BYTE check_fs ( /* 0:The FAT BR, 1:Valid BR but not an FAT, 2:Not a BR, 3:Disk error */
FATFS *fs,
/* File system object */
DWORD sect
/* Sector# (lba) to check if it is an FAT boot record or not */
)
{
if (disk_read(fs->drv, fs->win, sect, 1) != RES_OK)/* Load boot record */
return 3;
if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)/* Check record signature (always placed at offset 510 even if the sector size is >512) */
return 2;
if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146)/* Check "FAT" string */
return 0;
if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)
return 0;
return 1;
}
先来说说return 3的2种场景吧:
1)、创建一个空文件,没有赋予大小,没有格式化
2)、后来听老大说,可以创建一个img文件。就自己去网上找了相关资料。成功的创建了一个FAT12/16 的2M大小img文件。经测试,执行fopen成功。但是fwrite和fread是失败的。我自己考虑了下,应该是文件操作不能直接对img文件进行读写。
如果是return 2,那么就是你没有格式化文件。
上图为测试结果。
测试结果我直接用UE工具打开载体文件。
在0x00010000H处有数据进入。
fat文件系统分区解读,查看链接:http://199818.blog.51cto.com/189818/32679
分享到:
相关推荐
一步步教你移植FatFS文件系统 FatFS文件系统详解
移植Fatfs文件系统读写SD卡的Keil工程
在STM32中移植FATFS文件系统,CSDN教程地址:https://blog.csdn.net/qq_44062900/article/details/116502334
你的产品不支持文件系统? Out了! 快来看看FatFS 是一个快速轻量级的嵌入式产品文件系统, 经测试,稳定,高效。 帮助你快速移植到你的产品中。 FatFs轻量级文件系统源码.zip FatFs文件系统的移植.PDF
stm32f103通过spi2接力个2M flash,型号AT45DB,作为盘符,在MDK上编译运行通过。(保护原作者权利,声明是网上下载的,自己稍微做下改动)
关于FatFs文件系统的移植要点,可以借鉴!
FATFS文件系统复制文件和文件夹
SdCard移植FATFS文件系统,Stm32单片机可在SdCard中新建文件,新建文件夹,写入文件,读取文件,删除文件等各种文件操作
在STM32中移植FATFS文件系统.doc
在STM32中移植FATFS文件系统方案.docx
FatFs文件系统的移植 ...integer.h是文件系统所用到的数据类型的定义,tff.c和tff.h是Tiny的文件系统层和文件系统的API层,还有一个00readme.txt简要的介绍了FatFSHE FatFs/Tiny,包括他们所支持的API,怎么配置等等。
工程1: 使用STC15单片机硬件SPI读取SD卡对应地址的内容。无文件系统,可使用SD卡作为外部数据大容量存储设备。...工程2: 使用STC15单片机硬件SPI挂在fatfs文件系统,读取txt的内容。可方便得用与文件存储与读取。
02 (SPI模拟时序)FATFS文件系统移植(目录文件基本测试) 03 (SPI模拟时序)FATFS文件系统_截屏保存BMP图片与BMP图片解码显示 代码介绍对应的博客: (SD卡) ...
STM32例程之FATFS文件系统SPI方式移植笔记源码下载 STM32_8 纬图虚拟仪器论坛
STM32F407移植FATFS文件系统(版本 R0.09b)到SD卡通过硬件SPI总线
stm32+UCOS-II + FATFS 文件系统移植
详细讲解了fatfs文件系统的基础和深入只是,帮助你学习和掌握使用技巧,并且有详细的移植教程,教你移植到单片机上
将FATFS移植到Windows,版本是FATFS 0.12,底层使用C语言库函数fread,fwrite,fopen实现,容易理解
最新版本FATFS文件系统,0.11a版本,大家多多支持