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

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

[复制链接]
wkuang 发布时间:2014-4-1 23:04
. Q% N1 G/ q. B8 w$ ?6 p
【ST MCU实战经验】之Nand Flash文件系统解决方案: P+ R" U) ~' `$ f. q3 {+ E- A2 p/ i
; u) @( Y! R" U; W: o

- q' ?7 i1 e* h$ c% ]' l: V背景4 |; g. Z% c' f; C* T! X0 @
研究生阶段在一家公司实习,主要做一款USB设备的底层驱动,类似BSP,当时有一个需求是设备的USB驱动不需要光盘来安装,而是将USB驱动存放在设备的存储空间内。
" i4 \' N  t, V! \. Z* R1 C! i当设备通过USB连接电脑时能将存储设备内的Nand Flash当做一个U盘来使用,这样可以直接打开U盘来安装USB驱动。为什么选择Nand Flash来作为存储器而不是选择Nor Flash呢,5 ]( {7 C" Z  q
因为Nand Flash容量大,相对便宜,适合作为存储器,当前我们的手机、MP3、固态硬盘等存储设备都是使用的Nand Flash。在这里接触了Nand Flash 和FTL。* X- Z, u, x9 }
8 C# ?! P0 U4 k' d0 d
因为实习的原因,后续在毕业设计时直接使用Nand Flash的FTL结合FAT32文件来作为毕业设计课题,由于个人对STM32比较了解、熟悉,同时STM32F103及其后续版本的100 pin引脚以上芯片都支持
/ V: w( Z, E3 ]FSMC接口,因此硬件平台选择了STM32F4./ _6 m) ^" V2 q! }# u! J
# t( b( z( r3 l5 G, L, N
芯片选型:STM32F417ZET6
) o/ V* b* e( {/ M7 O! g选型原因3 }" e5 |  s2 V) H* t6 p5 p
1、STM32F4支持FSMC总线,支持Nand Flash驱动接口,由于FTL软件本身需要占用较多RAM资源 ,可以通过FSMC新增一块SRAM。(STM32 100 pin以上芯片支持FSMC)$ ]  ?& [6 L, X1 Y4 u
2、STM32F4支持USB device、OTG、Host,可以直接将设备接在电脑上模拟U盘的功能,也可以将U盘接在STM32芯片上,读写U盘的数据;
+ q1 X2 n) n' |! ]* V - f( A$ U" R! w7 O
项目难点介绍- m7 w+ C8 v! P0 y
1、Nand Flash的工艺不能保证NAND的存储块在其生命周期中保持性能的可靠,在NAND的生产中及使用过程中都可能会产生坏块
" Q5 D2 M& x3 i2、因此需要添加FTL功能实现坏块管理、存储块映射,将不连续的物理块转换成像磁盘一样连续的逻辑块
2 c) w) z5 w' {$ I" y3、FAT文件系统是不均衡磨损,Nand Flash寿命有限,需要通过FTL来均衡Nand Flash的磨损,
& v! O0 W5 S: F- `- v4、需要移植当前现有的FAT文件系统,当时选择了FATFS# ?6 g2 a& _( |  }8 m6 S7 U: R
5、USB 方面的调试,虽然ST有官方的USB库,但是USB的调试相对比较困难,不能jtag单步调试,只能通过串口来查看。
5 N$ j2 S! h+ D4 d/ s1 A' x
. m2 W% A3 x1 m; {3 AFTL的实现原理/ A& x- I/ I2 a  H1 B
FTL需要在RAM中建立一个缓冲区,写数据时首先将数据写到缓冲区中,一段时间后再将数据汇总后再写入Nand Flash中,避面频繁的写Nand Flash,
& `' m3 B1 `, }; m+ w. H+ X这样可以延长Nand Flash的寿命。FAT表和数据区不能固定,要将它混着使用,从而FAT表达磨损分布到各个块中,不会某个块很快的坏了。
) N/ k& s+ ~% P$ c4 a2 M) V& t! V
9 ^3 \9 z/ C2 E8 R2 p
9 A4 V7 D) O3 C% U( x硬件电路4 `4 F' u" H7 ^1 I$ H, t9 z/ ^( Q; f
由于此硬件属于验证应用,所以板子电路很简单:1、STM32F4最小系统;2、USB OTG;3、USB转串口;4、Nand Flash和片外SRAM。硬件调试基本顺利,电路也是参考STM32F4官方评估板来实现的。
: _7 F1 q& a7 k7 E0 |( k用官方例程验证硬件OK后,才开始软件测试。" a6 ~; Y; }4 p( ~- e, O

/ Z; o6 r! z/ W9 N1 {. I' w, ~; x软件调试
$ a2 Y- d. w& y$ t. `* f
1、将串口需要用到的打印函数全部弄好;已备后面的调试用途;5 T! i3 L, r+ ~6 G2 a: s
2、包括FATFS移植及到Nand Flash上, 实现基本的文件读写功能;FATFS移植在网上有很多,Nand Flash 接口功能就是使用st自带的。 Nand Flash的驱动基本是一样的。没什么变化;
# [7 P- \% r, N. X3、移植USB,实现将Nand Flash 枚举成一个U盘设备,可以通过PC机给Nand Flash拷贝;% Q/ ~+ w- c# l* Q
以上三步基本花了1个多月的时间来完成。不算快也不算慢;1 f" n6 S4 p/ l" c. y2 w
4、做FTL,在此步骤中ST官方历程中的FTL层,也参考了三星的官方参考文件、NFTL(Numonyx公司的,注Numonyx是Intel 和st的合资公司)以及网上搜到的effective flash translation layer。
! l- X' k3 @! i这些算法各有所长,具体优势和劣势只做过简单的比较。& E# D/ R" n, H6 L
这段时间是漫长的等待,从最开始的VC模拟到板子上测试花了很长时间。
: t1 }6 v! b. y& ^7 g7 b8 _! U & {, A1 L5 `( h5 G7 X8 |. g& e
总结体会

# D; F* v- p. a- d1、FTL当前是一个难题,但是各大Nand Flash厂商都有自己的方案,Linux上也有成熟的应用方案,此处只是作为研究课题。
7 G4 P; n( V5 p! u1 a6 D7 q) _2、STM32的库函数写的挺好,技巧性较强,很好移植,尤其是usb那一块的代码写的很有层次感;
7 {: I) G' r$ u& u$ K% c- U2 |+ q4、usb是一个难题,本人计划再好好研究下usb协议及驱动;
3 S: B* A9 ]3 e5 L" ~" S , r' @$ u" t+ S9 [* ]1 x! t2 j* O
收藏 6 评论20 发布时间:2014-4-1 23:04

举报

20个回答
tiger-419302 回答时间:2017-12-14 16:42:45
霹雳之火 发表于 2017-9-10 18:375 j6 Z/ D: i6 [( r; X
谢谢分享 有用
7 d' F1 _: P) Q! ^" [
有什么结果没,我看UM1653这个文档好像挺好的,但是没有配套源码,配套的板子也没有了
jackten 回答时间:2016-12-5 09:36:51
谢谢楼主分享               
zf55029970_3011 回答时间:2017-5-27 09:34:28
kingpon 发表于 2015-5-3 22:45- k  T) {. {+ X( B
ST有官方的FTL层吗?我怎么找不到,感谢告知
& Q. M8 d# w5 u9 U. o, b: O
臣 附议
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
感谢分享!
斜阳 回答时间:2016-12-5 10:16:09
楼主这是似乎不完整
5265325 回答时间:2016-12-5 11:41:59
zbber 回答时间:2016-12-5 12:43:14
ST有官方的FTL层吗?我怎么找不到,感谢告知
mon51 回答时间:2017-3-25 14:40:11
不知进度如何?
12下一页

所属标签

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