硬件
硬件芯片
NorFlash: winbond 25Q128JVSIQ 128M
下载FatFS源码
首先下载到FATFS源码,把doc目录打开,好好看下文档
修改数据类型
然后打开ff.h,修改里面的数据类型,我之前把ff.h直接包含到了我的项目总头文件里面,由于有些数据类型不兼容,导致了项目崩溃。
最后没时间去看这些数据类型,就单独建了个C文件,把文件系统相关的操作都放在这里操作,以免影响其他部分。
修改配置
ffcong.h中设置VOLUMES为1,FF_MAX_SS以及FF_MIN_SS都为一个擦除单位的大小,我是4096.其他不了解的要么不管,要么可看doc来设置。
格式化NorFlash
如果需要格式化norflash,那也要使能f_mkfs.
如果flash已经由系统初始化完成了,那diskio.c中initialize和status函数直接返回0,read和write就把buffer中的数据按指定大小存入flash即可。
修改diskio.c与Flash对接
ioctl中注意返回sector的数量和block_size的大小,sector我返回128,因为我总大小只有512K。block_size返回1就行了。
最后是示例程序:如果norflash第一次使用,先f_mkfs,如果flash较小,则不创建分区表,mkfs的时候传入sfd参数即可
FATFS myfat;
FIL filtest;
void fat_app_test()
{
int res;
res = f_mount(&myfat,"0:",1);
opencpu_printf("mount res:%d\n",res);
res = f_open(&filtest,"0:/test.txt",FA_CREATE_NEW|FA_WRITE|FA_READ);
opencpu_printf("open:%d\n",res);
f_write(&filtest, "Hello,World!", 12, &res);
res = f_size(&filtest);
opencpu_printf("file size:%d\n",res);
f_close(&filtest);
}