资讯
HOME
资讯
正文内容
u盘驱动nand 镁光nandflash MT29F32G08+STM32通用IO口驱动,实现fatfs文件系统
发布时间 : 2024-10-13
作者 : 小编
访问数量 : 23
扫码分享至微信

镁光nandflash MT29F32G08+STM32通用IO口驱动,实现fatfs文件系统

真的挺久没有写文章了,一是太忙了,二是素材也少。

这不最近使用镁光的MT29F32G08型号的nandflash,使用STM32作为控制器,但是我所用的STM32是不带FMC的,我也是想偷懒站在前人的肩膀上,但是网上没有找到STM32通用IO口读写MT29F32G08的,SDN啥的上去看了一下,且不说例程能不能用,都要充值,要办会员,大家都懂的,所以只能自己写了(咱就不明白了,有些人总是拿着一些开源的东西,自己改吧改吧,扔到网站上赚米,真的是良心大大滴坏了)。

驱动用的是网上下载的一个通用驱动nand_MT29F_lld,FTL层移植的原子哥的,这里展示一下STM32通用IO口读写MT29F32G08以及fatfs和USB模拟U盘的一些关键程序。

图1STM32通用IO驱动MT29F32G08

图2 通用驱动nand_MT29F_lld

图3,移植原子哥的FTL层

图4,fatfs移植,修改user_diskio.c的读扇区函数

图5,fatfs移植,修改user_diskio.c的写扇区函数

图6,fatfs移植,修改user_diskio.c的IO控制函数

图7,USB模拟U盘,修改usbd_storage_if.c文件的读函数

图8,USB模拟U盘,修改usbd_storage_if.c文件的写函数

接下来就是用文件系统存储数据了,我这里数据量比较大,一秒钟15hz,每一条记录32字节,凑够1024字节写一次csv文件。每个文件最大写32M,写满就生成新的文件继续写,每次上电遍历目录写的文件总数,生成对应的文件名。好了,继续截图~~

上电先生成新的文件名,并打开文件。

图9,上电生成新的csv文件

使用两个buffer轮流写入数据,写满32M就关闭当前文件,并生成新的csv文件继续写,文件总数超过1500个就在不再继续写,差不多存满了。

图10 上电期间不停写入数据

检测到USB插入,就关闭当前正在写 的文件,卸载文件系统。可以把写好的文件拷贝出来。

图11 检测到USB插入

设备已经运行了一会了,看看目录下面的文件和内容吧~

图12 log显示USB已经插入

打开我的电脑

图13 正常识别U盘

看看目录

图14 目录下文件

看看文件内容

图15 文件内容

看到文件格式内容都对,符合设计需求。

到这里就结束了,但是,凡事总有个但是,我这个系统没有备用电源,所以当系统断电而我正好还在写文件的时候,这个文件就会被破坏,打不开,而当fatfs在更新目录表信息,发生断电的话,那就是文件系统损坏了,下一次上电只能重新格式化,从头开始了,以前保存的数据都会丢了。对于这个问题,我暂时还没想到解决办法(在没有备电的情况下)。如果有人有招,就提出来我试试吧。

图16 网络配图

什么是NAND 型 Flash 存储器?

前言

NAND Flash 和 NOR Flash是现在市场上两种主要的闪存技术。Intel于1988年首先开发出 NOR Flash 技术,彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面。紧接着,1989年,东芝公司发表了 NAND Flash 结构,后者的单元电路尺寸几乎只是 NOR 器件的一半,可以在给定的芯片尺寸内提供更高的容量,也就相应地降低了价格。

1.NAND Flash ROM

NAND Flash ROM 应该是目前最热门的存储芯片了。因为我们生活中经常使用的电子产品都会涉及到它。比如你买手机,肯定会考虑64GB,还是256GB?买笔记本是买256GB,还是512GB容量的硬盘呢?(目前电脑大部分采用了基于 NAND Flash 产品的固态硬盘)。

2.NOR Flash ROM

NOR Flash ROM 的特点是以字节为单位随机存取。这样,应用程序可以直接在 Flash ROM 中执行,不必再把程序代码预先读到 RAM 中。NOR Flash ROM 的接口简单,与通常的扩展存储器一样,可以直接连接到处理器的外围总线上。

与 NOR Flash ROM 相比, NAND Flash ROM 以页(行)为单位随机存取,在容量、使用寿命和成本方面有较大优势。但是它的读出速度稍慢,编程较为复杂,因此大多作为数据存储器使用。嵌入式产品中包括数码相机、MP3 随身听记忆卡、体积小巧的U盘等均采用 NAND Flash ROM 。

在存储结构上,NAND Flash 内部采用非线性宏单元模式,全部存储单元被划分为若干个块(类似于硬盘的,一般为8 KB),这也是擦除操作的基本单位。进而,每个块又分为若干个大小为512 B的页,每页的存储容量与硬盘每个扇区的容量相同。也就是说,每页都有512条位线,每条位线连接一个存储元。此时,要修改 NAND 芯片中一个字节,就必须重写整个数据块。当Flash 存储器的容量不同时,其块数量以及组成块的页的数量都将不同。相应地,地址信息包括了列地址、块地址以及相应的页面地址。这些地址通过8位总线分组传输,需要多个时钟周期。当容量增大时,地址信息增加,那么就需要占用更多的寻址周期,寻址时间也就越长。这导致NAND Flash的地址传输开销大,因此并不适合于频繁、小数据量访问的应用。

相比较而言,NAND 型 Flash 存储器具有更高的存储密度、更快的写人速度、更低的价格以及更好的擦写耐用性等优点,非常适用于大量数据的存储。但由于NAND Flash的接口和操作都相对复杂,位交换操作频繁,因此通常还要采用错误探测/错误纠正(EDC/ECC)算法来保护关键性数据。

例如深圳雷龙有限公司的 CSNP32GCR01-AOW 芯片。

一.免驱动使用。SD NAND内置了针对NAND Flash的坏块管理,平均读写,动态和静态的EDC/ECC等算法。

二.性能更稳定。由于NAND Flash内部是先擦后写机制,如果软件处理不当,在突然掉电的时候就会导致数据丢失。而SD NAND内部自带的垃圾回收等机制可以很好的规避这个问题。因此CS创世的二代产品才会通过10K次的随机掉电测试。

三.尺寸更小。目前SD NAND 是68mm 大小,8个pin脚,相比Raw NAND的1220mm大小,48个pin脚,采用SD NAND可以做出更小巧的产品,而且也能节省CPU宝贵的GPIO口(这点对于MCU单片机来说更是重要)

四.SD NAND可选容量更多。目前有128MB/512MB/4GB容量。而SLC 的Raw NAND 主流容量128MB,512MB已经少见,供货周期也很长;单颗4GB的Raw NAND基本都是MLC或者TLC NAND的晶圆,管理起来更复杂。

不用写驱动程序自带坏块管理的 NAND Flash(贴片式TF卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8 封装,标准SDIO接口,兼容SPI,兼容拔插式TF卡/SD卡,可替代普通 TF卡/SD 卡,尺寸 6.2x8mm ,内置平均读写算法,通过1万次随机掉电测试耐高低温,机贴手贴都非常方便,速度级别Class10(读取速度 23.5MB/S 写入速度 12.3MB/S )标准的 SD2.0 协议普通的SD卡可直接驱动,支持TF卡启动的 SOC 都可以用 SD NAND。

SD NAND原理图如下:

相关问答

U盘 内的存储颗粒是否可以用来制作固态硬盘?-ZOL问答

好像主要的区别是主控不同存储颗粒都是NANDflash(mlctlcslc)(存储颗粒还有一个Intel的NORflash没有人用)所以坏的ssd的存储颗粒还可以再做U盘(前提存储颗粒没坏...

如何将一个手机内存芯片改造成 u盘 ?

你好,1、这个难度很大。2、首先要找一个和它针脚一致的半成品U盘。3、然后将手机内存芯片用热风枪取下,再焊接上半成品U盘。4、这不但需要设备还需要技术,一般...

经常格式化 U盘 ,会不会对 U盘 不好? - 懂得

对于1楼的回答。大部分没有问题,但是,有几处存在错误。1,完全同意1楼观点。2,格式化(高级格式化)确实是软件层面的操作。但是,u盘的储存原理和硬盘...

固态硬盘中的 NAND 闪存颗粒为什么又分为原片、黑片、白片?

现在不少厂商选择白片,一来,原厂没有那么大产能供应;二来,价格优势,选择有保障的白片NAND,虽然售出的SSD返修率偏高,凭藉价格优势,有一定的销量。总结:...这种S...

U盘 是由什么组成的?

此控制器含有一个RISC的微处理器及一些ROM(Read-OnlyMemory)与RAM(RandomAccessMemory)。NAND闪存芯片------用以存储数据。NAND闪存也常...

【nandflash和norflash的区别正确的是a,nor的读速度比 nand ...

[最佳回答]U盘的是NAND.因为nandflash存储比较大,写入速度和清除速度都比nor快,所以经常用在U盘和智能手机中充当硬盘的角色(eMMC),内存就是DRAM了。norf...

linux内核, 驱动 ,应用程三者的概念和之间的关系-ZOL问答

最后,从编程角度来看,Linux内核就是一个调用库,应用程序通过调用Linux提供的API函数来实现操作,Linux内核通过与驱动通信实现对硬件的有效管理。具体的编程细节...

闪迪 U盘 咋样?

闪迪是一家知名的存储设备制造商,其U盘以高品质和可靠性而闻名。闪迪U盘具有快速的数据传输速度和稳定的性能,适用于各种存储需求。它们采用先进的闪存技术,具...

nand flash详解?

Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速...

固态硬盘3D颗粒是什么?有什么区别呢?

很高兴能够回答您的问题!您说的3D颗粒应该是指“3DNAND闪存堆叠技术”,它是一种芯片封装技术,并非颗粒!接下来带大家一起了解一下“3DNAND闪存堆叠技术“...N...

 2013福建高考状元  李景伟 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部