OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9581|回复: 26

FATFS管理nandflash存储图片

[复制链接]

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-3-19 16:28:02 | 显示全部楼层 |阅读模式
10金钱
如题哦,从ucos,到lwip,到摄像头,到指纹,到sdram,一步步的太艰苦,现在到了nandflash这块,之后还有emwin,回归主题,问如何用FATFS管理nandflash存储图片,我获得的图片方式是一行一行的缓存在sdram,sdram中有完整的图片,这个管理系统麻烦大神告诉我一下大概怎么使用就行啦,详细的我会继续研究,就是第一次接触,想听听大神建议及思路,如果不用文件管理系统,我的图片每行是480个字节,分辨率是480*320,用的是原子的f767核心板上的nandflash,29f4g一页flash是2k+64字节,那样一页存4行数据,用80页就能存一张图,但是擦除只能按block擦除,咦有点不对劲,不必担心多余擦除的问题,我用2个block存一张图片,擦除也就擦除2个block,这样空间虽然浪费太多,不知可行不可行。

最佳答案

查看完整内容[请看2#楼]

你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程。
qq1950361006,互帮互助,共同进步。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-3-19 16:28:03 | 显示全部楼层
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-19 16:42:22 | 显示全部楼层
先自己给自己顶一个,顺便问下如何添加小尾巴
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-20 08:52:39 | 显示全部楼层
正点原子 发表于 2018-3-19 16:28
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程 ...

好的好的,我会下载视频教程好好看一下,还有手册指南
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-20 10:07:40 | 显示全部楼层
正点原子 发表于 2018-3-19 16:28
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程 ...

原子哥,再问个问题,这个函数,数据传输是8位额,可不可以改成16位传输的[mw_shl_code=c,true]u8 FTL_WriteSectors(u8 *pBuffer,u32 SectorNo,u16 SectorSize,u32 SectorCount)
{
    u8 flag=0;
        u16 temp;
    u32 i=0;
        u16 wsecs;                //D′ò3′óD¡
        u32 wlen;                //D′èë3¤¶è
    u32 LBNNo;      //Âß¼-¿éoÅ
    u32 PBNNo;      //Îïàí¿éoÅ
    u32 PhyPageNo;  //Îïàíò3oÅ
    u32 PageOffset; //ò3ÄúÆ«òÆμØÖ·
    u32 BlockOffset;//¿éÄúÆ«òÆμØÖ·
        u32 markdpbn=0XFFFFFFFF;                //±ê¼ÇáËμÄÎïàí¿é±àoÅ  
        for(i=0;i<SectorCount;i++)
    {
        LBNNo=(SectorNo+i)/(nand_dev.block_pagenum*(nand_dev.page_mainsize/SectorSize));//&#184;ù&#190;Y&#194;&#223;&#188;-éè&#199;&#248;o&#197;oíéè&#199;&#248;′óD&#161;&#188;&#198;&#203;&#227;3&#246;&#194;&#223;&#188;-&#191;éo&#197;
        PBNNo=FTL_LBNToPBN(LBNNo);                                        //&#189;&#171;&#194;&#223;&#188;-&#191;é×a&#187;&#187;&#206;a&#206;&#239;àí&#191;é
        if(PBNNo>=nand_dev.block_totalnum)return 1;        //&#206;&#239;àí&#191;éo&#197;′óóúNAND FLASHμ&#196;×ü&#191;éêy,&#212;òê§°ü.
        BlockOffset=((SectorNo+i)%(nand_dev.block_pagenum*(nand_dev.page_mainsize/SectorSize)))*SectorSize;//&#188;&#198;&#203;&#227;&#191;é&#196;ú&#198;&#171;ò&#198;
        PhyPageNo=PBNNo*nand_dev.block_pagenum+BlockOffset/nand_dev.page_mainsize;        //&#188;&#198;&#203;&#227;3&#246;&#206;&#239;àíò3o&#197;
        PageOffset=BlockOffset%nand_dev.page_mainsize;                                                                //&#188;&#198;&#203;&#227;3&#246;ò3&#196;ú&#198;&#171;ò&#198;μ&#216;&#214;·
                temp=nand_dev.page_mainsize-PageOffset;        //page&#196;úê£óà×&#214;&#189;úêy
                temp/=SectorSize;                                                //&#191;éò&#212;á&#172;D&#248;D′è&#235;μ&#196;sectorêy
                wsecs=SectorCount-i;                                        //&#187;1ê£&#182;àéù&#184;&#246;sectoròaD′
                if(wsecs>=temp)wsecs=temp;                                //′óóú&#191;éá&#172;D&#248;D′è&#235;μ&#196;sectorêy,&#212;òD′è&#235;temp&#184;&#246;éè&#199;&#248;  
                wlen=wsecs*SectorSize;                                        //&#195;&#191;′&#206;D′wsecs&#184;&#246;sector  
                //&#182;á3&#246;D′è&#235;′óD&#161;μ&#196;&#196;úèY&#197;D&#182;&#207;ê&#199;·&#241;è&#171;&#206;a0XFF
                flag=NAND_ReadPageComp(PhyPageNo,PageOffset,0XFFFFFFFF,wlen/4,&temp);                //&#182;áò&#187;&#184;&#246;wlen/4′óD&#161;&#184;&#246;êy&#190;Y,2¢ó&#235;0XFFFFFFFF&#182;&#212;±è
                if(flag)return 2;                                                //&#182;áD′′í&#206;ó£&#172;&#187;μ&#191;é
                if(temp==(wlen/4)) flag=NAND_WritePage(PhyPageNo,PageOffset,pBuffer,wlen);        //è&#171;&#206;a0XFF,&#191;éò&#212;&#214;±&#189;óD′êy&#190;Y
                else flag=1;                                                        //2&#187;è&#171;ê&#199;0XFF,&#212;òáí×÷′|àí
                if(flag==0&&(markdpbn!=PBNNo))                        //è&#171;ê&#199;0XFF,&#199;òD′è&#235;3é1|,&#199;ò±ê&#188;&#199;á&#203;μ&#196;&#206;&#239;àí&#191;éó&#235;μ±&#199;°&#206;&#239;àí&#191;é2&#187;í&#172;
                {
                        flag=FTL_UsedBlockMark(PBNNo);                //±ê&#188;&#199;′&#203;&#191;éò&#209;&#190;-ê1ó&#195;  
                        markdpbn=PBNNo;                                                //±ê&#188;&#199;íê3é,±ê&#188;&#199;&#191;é=μ±&#199;°&#191;é,·à&#214;1&#214;&#216;&#184;′±ê&#188;&#199;
                }
                if(flag)//2&#187;è&#171;&#206;a0XFF/±ê&#188;&#199;ê§°ü£&#172;&#189;&#171;êy&#190;YD′μ&#189;áíò&#187;&#184;&#246;&#191;é   
        {
                        temp=((u32)nand_dev.block_pagenum*nand_dev.page_mainsize-BlockOffset)/SectorSize;//&#188;&#198;&#203;&#227;&#213;&#251;&#184;&#246;block&#187;1ê£&#207;&#194;&#182;àéù&#184;&#246;SECTOR&#191;éò&#212;D′è&#235;
                        wsecs=SectorCount-i;                                //&#187;1ê£&#182;àéù&#184;&#246;sectoròaD′
                        if(wsecs>=temp)wsecs=temp;                        //′óóú&#191;éá&#172;D&#248;D′è&#235;μ&#196;sectorêy,&#212;òD′è&#235;temp&#184;&#246;éè&#199;&#248;
                        wlen=wsecs*SectorSize;                                //&#195;&#191;′&#206;D′wsecs&#184;&#246;sector   
            flag=FTL_CopyAndWriteToBlock(PhyPageNo,PageOffset,pBuffer,wlen);//&#191;&#189;±′μ&#189;áííaò&#187;&#184;&#246;block,2¢D′è&#235;êy&#190;Y
            if(flag)return 3;//ê§°ü
        }
                i+=wsecs-1;
                pBuffer+=wlen;//êy&#190;Y&#187;o3&#229;&#199;&#248;&#214;&#184;&#213;&#235;&#198;&#171;ò&#198;
    }
    return 0;   
}[/mw_shl_code]
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-21 16:17:58 | 显示全部楼层
正点原子 发表于 2018-3-19 16:28
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程 ...

原子哥,现在用你们的FTL层可以成功存储图片啦,能存400张,亲测了50张,剩下的应该差不多,没有用到文件系统,感谢原子哥
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-21 18:18:16 | 显示全部楼层
正点原子 发表于 2018-3-19 16:28
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程 ...

原子哥,现在又遇到一个问题,就是在使用块擦除的时候,存nandflash里的数据复位在读就没有了,这么情况不知原子哥遇到过没@正点原子
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-22 09:47:43 | 显示全部楼层
【解决客户问题】使用STM32F767,通过FATFS往nand flash写文本文件测试
http://openedv.com/forum.php?mod ... 1&fromuid=85165
(出处: OpenEdv-开源电子网)
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-22 13:43:18 | 显示全部楼层
上午测试半天,单独使用文件系统的时候应该是没有毛病了,但是在使用文件系统加上lwip之后,系统一运行,就是提示硬件保护hardful这玩意,应该是申请的内存啥的冲突,暂时不研究附上历程,还是昨天的一个问题,我用10块区域去寸一张图片,循环存5张,超了就自动擦除将要写的10块数据,然后在写上最新的数据,但是这样复位之后数据就没掉了,而且擦除之后也不知道是写没写上,,但是不擦除,只覆盖,就没有问题,所以想问下大神们这个问题怎么解决,虽然不抱希望,还是问问,万一有大神知道,提示一点就够我研究半天的啦

NAND创建test创建文件夹历程.rar

6.87 MB, 下载次数: 611

qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

2

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2018-1-4
在线时间
101 小时
发表于 2018-3-22 16:55:14 | 显示全部楼层
楼主,你能把你用NANDFLASH存图片的程序给我参考一下吗?真的十分感谢,你的小小提醒可能抵我好久的白费功夫
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2016-12-22
在线时间
52 小时
发表于 2018-3-22 23:15:00 | 显示全部楼层
学习一下!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-3-23 01:31:58 | 显示全部楼层
kbq1950361006 发表于 2018-3-22 13:43
上午测试半天,单独使用文件系统的时候应该是没有毛病了,但是在使用文件系统加上lwip之后,系统一运行,就 ...

1,16位传输,没必要,我们提供的函数是u8类型的数组,长度不限,你要传16位,强制转换一下,就可以解决。
2,我们例程是用fatfs管理nand的,你不要自己调用底层函数去擦除,会把文件系统都给擦了!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-23 10:08:26 | 显示全部楼层
正点原子 发表于 2018-3-23 01:31
1,16位传输,没必要,我们提供的函数是u8类型的数组,长度不限,你要传16位,强制转换一下,就可以解决。 ...

是的,我昨天下午发现,自己一旦调用块擦除,在复位的时候就会进入nand格式化,然后啥都没了,目前是把格式化的地方去掉了,原子哥我最后没用文件系统,因为我这里用ucosII+LWIP,和文件系统有冲突,单独跑文件系统程序没问题,移植过来就错误,应该是内存,我现在就用你们的FTL层函数,初步实现了图片存储功能,我想在存到一定数量图片的时候,存储地址返回来重新存,如果不将重新存储位置的数据擦除,就特别慢,影响效果,所以我就用了块擦除,但是现在问题出现在块擦除这里,并不是我指定位置想擦除的,不知原子哥有提示建议没,感激不尽
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-23 10:09:57 | 显示全部楼层
本帖最后由 kbq1950361006 于 2018-3-23 10:12 编辑
HONG2011 发表于 2018-3-22 16:55
楼主,你能把你用NANDFLASH存图片的程序给我参考一下吗?真的十分感谢,你的小小提醒可能抵我好久的白费功 ...
存:
[mw_shl_code=c,true]  for(i=0;i<320;i++)   
{               
   res=netcam_fifo_read(&tbuf);
   delay_us(100);
   FTL_WriteSectors((u8*)tbuf,i+320*(j+1),NAND_ECC_SECTOR_SIZE,1);
}[/mw_shl_code]
取:
[mw_shl_code=c,true]               
for(i=0;i<320;i++)                                
{               
  netcam_fifo_read(&tbuf);
  FTL_ReadSectors((u8*)tbuf,i+320*(m+1),NAND_ECC_SECTOR_SIZE,1);
  LTDC_Color_Fill(0,i,479,i,(u16*)tbuf);
}  [/mw_shl_code]

注意内存分配,否则硬件保护
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-23 15:38:43 | 显示全部楼层
额,这个速度,我是提不上来了,详细看了下写nandflash流程,不用我特意去擦除,特意擦除反而起到不好的效果,因为他们写的块不是连续的,在遇到坏块和有数据的情况下,系统会子弄转移数据,这就不一定跑到哪里去了,所以不研究擦除块了,这样就会导致空间在存好一些图片在返回重新存储到有数据的地方时,函数执行的效率会大大降低,大大的影响了效果,暂时先在想想别的办法吧
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-23 19:01:30 来自手机 | 显示全部楼层
如果你写数据是规范的,可以自己写目录区的内容,新建个已知大小图片文件指向你存储好的数据空间,这样用win磁盘修复,帮你把链表恢复,就能用win直接操作文件了
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
868
金钱
868
注册时间
2017-6-18
在线时间
168 小时
发表于 2018-3-24 11:15:15 来自手机 | 显示全部楼层
用文件系统就行了, 不要使用旁门左道
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-26 09:09:34 | 显示全部楼层
孟亮 发表于 2018-3-23 19:01
如果你写数据是规范的,可以自己写目录区的内容,新建个已知大小图片文件指向你存储好的数据空间,这样用wi ...

大神,我不是很懂你说的感觉有点难度,可以研究一下,但是我现在问题就出现在链表上了,        NAND_EraseBlock(FTL_LBNToPBN((384*(j+1))/128));                               
        NAND_EraseBlock(FTL_LBNToPBN((384*(j+1))/128)+1);                               
        NAND_EraseBlock(FTL_LBNToPBN((384*(j+1))/128)+2);
上面三条语句是快擦出函数,我不知道为什么一调用这个函数,在初始化的时候,链表就会出现问题,然后检测好块就几个,然后就强制给我擦除全盘了,虽然我可以把擦除全盘注释掉,但是FTL_LBNToPBN();这个块转换函数就不对了,所以问题不能就那么逃避,得找到原因才能更好控制,请求大神解惑,就是块擦除函数一用,复位就检测不到好块了
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-26 09:12:47 | 显示全部楼层
wlq19911021 发表于 2018-3-24 11:15
用文件系统就行了, 不要使用旁门左道

函数用的是原子的FTL层函数,文件系统用和我的用的LWIP冲突,不知为何,不能同时使用,要不我也准备用文件系统,管理还清晰
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-26 14:13:44 | 显示全部楼层
kbq1950361006 发表于 2018-3-26 09:09
大神,我不是很懂你说的感觉有点难度,可以研究一下,但是我现在问题就出现在链表上了,        NAND_EraseBlock ...

就这3条来推断也没法下手呀。。。。建议单步跟踪看看,或者跟一下FatFs的链表动作,对比你生成链表的逻辑来找问题。或者简单点,你把链表手动设置为文件起始块到磁盘最后块,在目录区把文件大小设置精确,这样也可以读文件。只不过每次都会提示磁盘需要修复。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-26 16:32:03 | 显示全部楼层
FTL_CheckBadBlock(FTL_LBNToPBN((384*(j+1))/128));
NAND_ReadSpare((FTL_LBNToPBN((384*(j+1))/128))*nand_dev.block_pagenum,2,ff,2);
NAND_EraseBlock(FTL_LBNToPBN((384*(j+1))/128));  OSTimeDlyHMSM(0,0,0,20);
  NAND_WriteSpare((FTL_LBNToPBN((384*(j+1))/128))*nand_dev.block_pagenum,2,ff,2);
       
问题已解决,在使用块擦除之后,会将块内所有数据全清,这样在spare区的一些指示数据就没了,系统就会出现误判,以为擦除之前的块才是好块,之后就没有块了,所以在擦除块之前,先读取出块的spare,在擦除,之后再赋值还原回去,这个问题,纠结困扰了4天,蓝瘦香菇,不过还好最后解决,楼上几位大神说的方法也许是更好一些的,但是我还是渣渣新手不是很理解,继续学习,继续专研                                                         
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-26 16:33:09 | 显示全部楼层
孟亮 发表于 2018-3-26 14:13
就这3条来推断也没法下手呀。。。。建议单步跟踪看看,或者跟一下FatFs的链表动作,对比你生成链表的逻辑 ...

大神,问题解决掉了,虽然不是很懂,但是大概就是擦除数据吧链表的序列什么的全弄没了,然后之后的块就查不出来,所以导致很多系统错误,现在问题解决啦,谢谢大神指点
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-26 16:35:39 | 显示全部楼层
kbq1950361006 发表于 2018-3-26 16:33
大神,问题解决掉了,虽然不是很懂,但是大概就是擦除数据吧链表的序列什么的全弄没了,然后之后的块就查 ...

小仙还没飞升上神~~~
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-4-24 11:23:54 | 显示全部楼层
正点原子 发表于 2018-3-23 01:31
1,16位传输,没必要,我们提供的函数是u8类型的数组,长度不限,你要传16位,强制转换一下,就可以解决。 ...

原子哥,之前没用FATFS系统,做事情好麻烦,现在想在试试文件系统,但是在移植后测试会出现图片的错误,然后有时就进入hardfault了,不知道是什么原因,请教原子哥,还有个问题就是摄像头读出来的数据是一行一行的,如何存在文件系统里是一张图片的格式,这个不知道怎么处理的,也麻烦原子哥指点一下思路,谢谢,小弟感激不尽
@SV143O1XI4_@PA5SF3QP_W.png
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-12-24
在线时间
3 小时
发表于 2018-12-27 10:49:16 | 显示全部楼层
正点原子 发表于 2018-3-23 01:31
1,16位传输,没必要,我们提供的函数是u8类型的数组,长度不限,你要传16位,强制转换一下,就可以解决。 ...

Hi ,原子哥。对于你们 FTL的代码和教程,我有个疑惑,当FATFS 重复写同一个sector时,那这个sector对应nandflash page里面原先的数据如何处理?是直接进行覆盖吗?需不需要对比下原有数据和重复写入的数据,然后进行合并后写入数据?
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-12-24
在线时间
3 小时
发表于 2018-12-27 10:49:50 | 显示全部楼层
正点原子 发表于 2018-3-23 01:31
1,16位传输,没必要,我们提供的函数是u8类型的数组,长度不限,你要传16位,强制转换一下,就可以解决。 ...

Hi ,原子哥。对于你们 FTL的代码和教程,我有个疑惑,当FATFS 重复写同一个sector时,那这个sector对应nandflash page里面原先的数据如何处理?是直接进行覆盖吗?需不需要对比下原有数据和重复写入的数据,然后进行合并后写入数据?

我在调试时发现FATFS会重复写一个sector。
回复

使用道具 举报

4

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2020-10-27
在线时间
16 小时
发表于 2021-1-15 14:30:28 | 显示全部楼层
正点原子 发表于 2018-3-19 16:28
你用我们提供的代码就行了。 我们提供的FTL层,就支持FATFS管理nandflash,原理什么的,我也都讲了,看教程 ...

你好,原子哥  没找到有讲nandflash的视频啊  能给个链接吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 13:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表