搜索
查看: 36591|回复: 19

[分享] 【MCU实战经验】+ Nand Flash文件系统( FTL + FAT32)

  [复制链接]

该用户从未签到

4

主题

228

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-13
发表于 2014-4-1 23:04:43 | 显示全部楼层 |阅读模式

【ST MCU实战经验】之Nand Flash文件系统解决方案


背景
研究生阶段在一家公司实习,主要做一款USB设备的底层驱动,类似BSP,当时有一个需求是设备的USB驱动不需要光盘来安装,而是将USB驱动存放在设备的存储空间内。
当设备通过USB连接电脑时能将存储设备内的Nand Flash当做一个U盘来使用,这样可以直接打开U盘来安装USB驱动。为什么选择Nand Flash来作为存储器而不是选择Nor Flash呢,
因为Nand Flash容量大,相对便宜,适合作为存储器,当前我们的手机、MP3、固态硬盘等存储设备都是使用的Nand Flash。在这里接触了Nand Flash 和FTL。

因为实习的原因,后续在毕业设计时直接使用Nand Flash的FTL结合FAT32文件来作为毕业设计课题,由于个人对STM32比较了解、熟悉,同时STM32F103及其后续版本的100 pin引脚以上芯片都支持
FSMC接口,因此硬件平台选择了STM32F4.

芯片选型:STM32F417ZET6
选型原因
1、STM32F4支持FSMC总线,支持Nand Flash驱动接口,由于FTL软件本身需要占用较多RAM资源 ,可以通过FSMC新增一块SRAM。(STM32 100 pin以上芯片支持FSMC)
2、STM32F4支持USB device、OTG、Host,可以直接将设备接在电脑上模拟U盘的功能,也可以将U盘接在STM32芯片上,读写U盘的数据;

项目难点介绍
1、Nand Flash的工艺不能保证NAND的存储块在其生命周期中保持性能的可靠,在NAND的生产中及使用过程中都可能会产生坏块
2、因此需要添加FTL功能实现坏块管理、存储块映射,将不连续的物理块转换成像磁盘一样连续的逻辑块
3、FAT文件系统是不均衡磨损,Nand Flash寿命有限,需要通过FTL来均衡Nand Flash的磨损,
4、需要移植当前现有的FAT文件系统,当时选择了FATFS
5、USB 方面的调试,虽然ST有官方的USB库,但是USB的调试相对比较困难,不能jtag单步调试,只能通过串口来查看。

FTL的实现原理
FTL需要在RAM中建立一个缓冲区,写数据时首先将数据写到缓冲区中,一段时间后再将数据汇总后再写入Nand Flash中,避面频繁的写Nand Flash,
这样可以延长Nand Flash的寿命。FAT表和数据区不能固定,要将它混着使用,从而FAT表达磨损分布到各个块中,不会某个块很快的坏了。


硬件电路
由于此硬件属于验证应用,所以板子电路很简单:1、STM32F4最小系统;2、USB OTG;3、USB转串口;4、Nand Flash和片外SRAM。硬件调试基本顺利,电路也是参考STM32F4官方评估板来实现的。
用官方例程验证硬件OK后,才开始软件测试。

软件调试

1、将串口需要用到的打印函数全部弄好;已备后面的调试用途;
2、包括FATFS移植及到Nand Flash上, 实现基本的文件读写功能;FATFS移植在网上有很多,Nand Flash 接口功能就是使用st自带的。 Nand Flash的驱动基本是一样的。没什么变化;
3、移植USB,实现将Nand Flash 枚举成一个U盘设备,可以通过PC机给Nand Flash拷贝;
以上三步基本花了1个多月的时间来完成。不算快也不算慢;
4、做FTL,在此步骤中ST官方历程中的FTL层,也参考了三星的官方参考文件、NFTL(Numonyx公司的,注Numonyx是Intel 和st的合资公司)以及网上搜到的effective flash translation layer。
这些算法各有所长,具体优势和劣势只做过简单的比较。
这段时间是漫长的等待,从最开始的VC模拟到板子上测试花了很长时间。

总结体会

1、FTL当前是一个难题,但是各大Nand Flash厂商都有自己的方案,Linux上也有成熟的应用方案,此处只是作为研究课题。
2、STM32的库函数写的挺好,技巧性较强,很好移植,尤其是usb那一块的代码写的很有层次感;
4、usb是一个难题,本人计划再好好研究下usb协议及驱动;

回复

使用道具 举报

该用户从未签到

14

主题

726

帖子

29

蝴蝶豆

金牌会员

最后登录
2020-4-19
发表于 2015-2-14 14:34:35 | 显示全部楼层
楼主有参考例程吗?对nand这块一直没弄好
回复 支持 反对

使用道具 举报

该用户从未签到

26

主题

871

帖子

0

蝴蝶豆

金牌会员

最后登录
2018-9-27
发表于 2015-2-14 20:37:01 | 显示全部楼层
顶……感谢分享!
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

576

帖子

1

蝴蝶豆

金牌会员

最后登录
2020-6-25
发表于 2015-2-14 21:19:13 | 显示全部楼层
谢谢分享
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2019-6-19
发表于 2015-5-3 22:45:12 | 显示全部楼层
ST有官方的FTL层吗?我怎么找不到,感谢告知
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

15

帖子

0

蝴蝶豆

初级会员

最后登录
2019-8-2
发表于 2015-10-28 17:03:32 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

39

主题

975

帖子

45

蝴蝶豆

论坛元老

最后登录
2021-3-21
发表于 2015-12-11 16:45:21 | 显示全部楼层
FTL真心不好找啊....
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

40

帖子

0

蝴蝶豆

中级会员

最后登录
2021-4-24
发表于 2016-11-25 16:34:24 | 显示全部楼层
官方没找到参考呢,官方参考在那里?
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

611

帖子

0

蝴蝶豆

高级会员

最后登录
2018-4-11
发表于 2016-12-5 08:56:23 | 显示全部楼层
感谢分享!
回复

使用道具 举报

该用户从未签到

10

主题

703

帖子

0

蝴蝶豆

金牌会员

最后登录
2018-6-15
发表于 2016-12-5 09:36:51 | 显示全部楼层
谢谢楼主分享               
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-24 03:11 , Processed in 0.182819 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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