你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
wkuang 发布时间:2014-4-1 23:04

【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协议及驱动;

收藏 5 评论19 发布时间:2014-4-1 23:04

举报

19个回答
jcx0324 回答时间:2015-2-14 14:34:35
楼主有参考例程吗?对nand这块一直没弄好
星辰一方 回答时间:2015-2-14 20:37:01
顶……感谢分享!
feel-376797 回答时间:2015-2-14 21:19:13
谢谢分享
kingpon 回答时间:2015-5-3 22:45:12
ST有官方的FTL层吗?我怎么找不到,感谢告知
Thinkdo.Noto 回答时间:2015-10-28 17:03:32
wofei1314 回答时间:2015-12-11 16:45:21
FTL真心不好找啊....
xql2008 回答时间:2016-11-25 16:34:24
官方没找到参考呢,官方参考在那里?
andypanfan 回答时间:2016-12-5 08:56:23
感谢分享!
jackten 回答时间:2016-12-5 09:36:51
谢谢楼主分享               
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版