打印

NANDFLASH FATFS 格式化nandflash后,flash空间变小了很多

[复制链接]
5308|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mo_yu|  楼主 | 2013-3-14 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

NANDFLASH   FATFS  格式化nandflash后,flash空间变小了很多,nand  是2Gb的,现在通过 f_getfree  得到的空间是15MB,
FATFS fs;
        FIL fl;
        FATFS *pfs;
        DWORD clust;
        unsigned int r,w,i;
        FRESULT  res;       
        //display_page(0,0);
        res=f_mount(0,&fs);
        printf("f_mount=%x \n\r",res);      
        // for format
        res=f_mkfs(0,1,2048);                //MUST Format for New NANDFLASH !!!
        printf("f_mkfs=%x \n\r",res);

        // for
        pfs=&fs;
        res = f_getfree("/", &clust, &pfs);
        printf("f_getfree=%x \n\r",res);
        printf("\n\r%lu MB total drive space." "\n\r%lu MB available.\n\r",(DWORD)(pfs-      >max_clust - 2) * pfs->csize /2/1024,clust * pfs->csize /2/1024);
       
沙发
mo_yu|  楼主 | 2013-3-14 10:35 | 只看该作者
打印出的数据:

Nand Flash ID:0xec         0xf1         0x0         0x95f_mount=0

f_mkfs=0


f_getfree=0


15 MB total drive space.

15 MB available.

f_open=4

f_read=9

f_open=0

f_write=0

f_write=0


使用特权

评论回复
板凳
mo_yu|  楼主 | 2013-3-14 11:21 | 只看该作者
求救啊,自己再顶。。。

使用特权

评论回复
地板
mo_yu|  楼主 | 2013-3-14 14:30 | 只看该作者
再顶。。。

使用特权

评论回复
5
jlass| | 2013-3-14 16:21 | 只看该作者
估计是被你分区了吧,你去查一下f_mkfs后面跟的一个参数是什么意思。

使用特权

评论回复
6
mo_yu|  楼主 | 2013-3-14 16:38 | 只看该作者
jlass 发表于 2013-3-14 16:21
估计是被你分区了吧,你去查一下f_mkfs后面跟的一个参数是什么意思。

f_mkfs  函数的三个参数,分别是  /* 逻辑驱动器号 */  /* 分区规则 */  /* 分配单元大小 */ ,我设置成 res=f_mkfs(0,1,2048); 应该是没问题的吧

使用特权

评论回复
7
cjhk| | 2013-3-14 20:58 | 只看该作者
看看是否是编译时  编译器加入了其他的代码导致代码量增加  呵呵

使用特权

评论回复
8
jlass| | 2013-3-15 08:56 | 只看该作者
我还是觉得应该是被分成了多个区,然后你只格式化了第一个15M的,后面的没处理

因为平时都是用脚本文件的,没具体用过这些个函数,所以也看不出问题。

使用特权

评论回复
9
mo_yu|  楼主 | 2013-3-15 10:50 | 只看该作者
jlass 发表于 2013-3-15 08:56
我还是觉得应该是被分成了多个区,然后你只格式化了第一个15M的,后面的没处理

因为平时都是用脚本 ...

我再好好研究研究FATFS的源码吧,3Q。。。

使用特权

评论回复
10
mo_yu|  楼主 | 2013-3-18 10:35 | 只看该作者
大概找到问题了,应该是分了两个区,一个低区,一个高区,低区用来存储数据,高区 备份,大小相同,我现在通过f_getfree 得到的空间大小正好是低区的空间大小,  应该是这样的,虽然还不是十分理解。。。

使用特权

评论回复
11
mo_yu|  楼主 | 2013-3-18 10:48 | 只看该作者
大概找到问题了,应该是分了两个区,一个低区,一个高区,低区用来存储数据,高区 备份,大小相同,我现在通过f_getfree 得到的空间大小正好是低区的空间大小,  应该是这样的,虽然还不是十分理解。。。

使用特权

评论回复
12
xg_qing| | 2013-3-18 17:25 | 只看该作者
FATFS挂载NandFlash不合适吧,Nand有位翻转和坏块问题,通常要做ECC与磨损均衡,Fatfs并没有实现这些。不怕哪天跑着跑着文件系统就挂掉了?

使用特权

评论回复
13
mo_yu|  楼主 | 2013-3-19 09:48 | 只看该作者
xg_qing 发表于 2013-3-18 17:25
FATFS挂载NandFlash不合适吧,Nand有位翻转和坏块问题,通常要做ECC与磨损均衡,Fatfs并没有实现这些。不怕 ...

你说的很对,nand挂载文件系统  确实不合适,也挺耗RAM的,呵呵,就是想自己玩一玩,好多大神自己写坏块管理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

33

帖子

2

粉丝