FATFS在norflash上移植

很早以前在stm32上做SD卡驱动时,移植过FATFS,但当时比较毛躁,做完例程就没去分析了,现在工作中要用到了,才又来细细看一遍。

首先下载到FATFS源码,把doc目录打开,好好看下文档

然后打开ff.h,修改里面的数据类型,我之前把ff.h直接包含到了我的项目总头文件里面,由于有些数据类型不兼容,导致了项目崩溃。最后没时间去看这些数据类型,就单独建了个C文件,把文件系统相关的操作都放在这里操作,以免影响其他部分。

ffcong.h中设置VOLUMES为1,FF_MAX_SS以及FF_MIN_SS都为一个擦除单位的大小,我是4096.其他不了解的要么不管,要么可看doc来设置。如果需要格式化norflash,那也要使能f_mkfs.

如果flash已经由系统初始化完成了,那diskio.c中initialize和status函数直接返回0,read和write就把buffer中的数据按指定大小存入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:/m5311.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);
}

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值