OpenEdv-开源电子网

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

NAND FLASH挂载FATFS文件系统失败,返回错误13,格式化也是失败

[复制链接]

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-8-24
在线时间
8 小时
发表于 2018-1-23 18:47:48 | 显示全部楼层 |阅读模式
自己做的STM32F429IGT6板,选择了MT29F8G08ABABA作为NAND FLASH芯片,挂载在STM32F429IGT6的BANK3上。我根据芯片手册重写了正点原子的NAND文件,成功完成NAND初始化,读取到了正确的ID。FATFS文件系统手动移植官网0.13版本的,已经成功挂载了W25Q256和SD卡,并成功在SD卡中读出了文件。现在有如下几个问题:
一、在NAND文件内,对NAND的初始化,在定义NAND_HandleTypeDef类型结构体NAND_Handler的时候,其中的NAND_Handler.Init.ECCPageSize=FMC_NAND_ECC_PAGE_SIZE_512BYTE;这里,定义ECC页的大小,是根据什么来定义的?是根据实际NAND一个Page的main区大小来定义还是根据其他的什么?


                Nand_Device.Page_TotalSize = 4320;                               
                Nand_Device.Page_MainSize = 4096;                               
                Nand_Device.Page_SpareSize = 224;                               
                Nand_Device.PageNum_inOneBlock = 128;               
                Nand_Device.BlockNum_inOnePlane = 1024;       
                Nand_Device.BlockTotalNumber = 2048;                       

以上为根据芯片手册定义的NAND信息结构体

二、在0.13版本的FATFS文件中,格式化函数多了两个参数
FRESULT f_mkfs (
        const TCHAR* path,        /* Logical drive number */
        BYTE opt,                        /* Format option */
        DWORD au,                        /* Size of allocation unit (cluster) [byte] */
        void* work,                        /* Pointer to working buffer (null: use heap memory) */
        UINT len                        /* Size of working buffer [byte] */
)

最后的两个参数是操作内存所需要的数据缓存空间和缓存空间大小嘛?我挂载W25Q256用的格式化函数result = f_mkfs("1:",1,4096,FATFS_DataBuff,FF_MAX_SS);是成功格式化的。

三、NAND部分函数除了根据不同芯片改写了芯片信息的结构体,以及ECC计算页大小不明白对应什么之外,其他都根据正点原子的代码几乎是重写。软件中间层FTL文件一一对应地复制了正点原子的对应文件代码,在FATFS文件系统的diskio文件内,FTL部分一点都没改。LUT表正常创建,但是总是在调用挂载NAND和格式化NAND的函数之后,一定会进入ECC更正函数,也就是NAND_ECC_Correction();内,计算出来的eccchk根据debug显示是0。
在串口助手上打印出来的信息为:
err hd,rd:0x0,0xFFFFFFFF
eccnum,eccstart:1,0
PageNum,ColNum:0,0

后来尝试了单独调用NAND文件内的读写函数,写入27个字节,读出27个字节通过串口打印,没有任何错误。在这之后,没有进行擦除,再次尝试挂载和格式化,串口打印信息为:
err hd,rd:0xf0cc,0xFFFFFFFF
eccnum,eccstart:1,0
PageNum,ColNum:0,0
还是显示2bit以上的错误,无法更正。现在我不太明白为什么。而且在擦除NAND的块的函数中,因为一个块有128个页,所以BlockNum<<=7;将块地址转化为页地址
想请问大家有什么可以尝试解决的办法,附件是相关的代码,主函数和工程没有包含其中。谢谢

STM32F429IGT6-ROM.zip

2.2 MB, 下载次数: 143

相关代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
320
金钱
320
注册时间
2017-7-5
在线时间
96 小时
发表于 2018-2-10 19:46:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-3-19 16:05:55 | 显示全部楼层
顶起,最近也需要用到这个,可怜的我第一次用,还要用到文件管理系统,慢慢消化吧
qq1950361006,互帮互助,共同进步。
回复 支持 反对

使用道具 举报

2

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2015-1-7
在线时间
41 小时
发表于 2018-5-25 18:37:10 | 显示全部楼层
楼主的问题解决了没,我遇到一样的问题呢,分享一下
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-6-25
在线时间
11 小时
发表于 2018-9-14 20:50:21 | 显示全部楼层
我也是这个问题   res=f_mount(&n,"2:",1);程序好像是死到某个地方   LED灯也不闪烁


但我改为res=f_mount(fs[2],"2:",1);  就是原来的代码就可以运行了      n在之前我是定义了的   这是为什么?
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2018-1-17
在线时间
23 小时
发表于 2019-8-22 18:05:10 | 显示全部楼层
为什么你FATFS中配置  16*8个BLOCK呢?一页擦除4K字节,你现在定义了512字节为一个sector,
FLASH_BLOCK_SIZE源码中设置为8,你代码中如下设置,这里不知道会不会有影响。
#define FLASH_BLOCK_SIZE           16*8  

f_mkfs函数使用不成功,可能是FATFS没有配置好(自己的判断),我也碰到了类似问题(格式化FLASH成功,格式化NAND不行)

我自己用了一个FATFS  R0.13C版本(2018.10.14发布的),里面的f_mkfs函数也是和你上述一样,较例程多了两个形参,我是这样操作的
u8 work[FF_MAX_SS];
res = f_mkfs ("2:",1, 4096,work,sizeof(work));
该res返回值是 0 ,是ok的,但是当我添加修改盘符名字的时候
res = f_setlabel((const TCHAR *)"2:NANDDISK");        返回值为0x0D,也就是13,没有有效的盘符。
自己使用USB读卡器程序,电脑每次都需要格式化NAND(在使用 f_mkfs函数后),格式化然后copy东西到NAND,
用FATFS是可以读操作里面的文件的(即f_open和f_read正常使用)。就是f_mkfs和f_setlabel不能用。

回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-7-30
在线时间
8 小时
发表于 2019-9-2 16:07:02 | 显示全部楼层
楼主,此问题解决没? 我现在有个类似项目要做, 也碰到类似问题。
回复 支持 反对

使用道具 举报

108

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2016-6-29
在线时间
165 小时
发表于 2020-12-7 15:36:19 | 显示全部楼层
楼主挂载成功没啊  求交流啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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