镁光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 网络配图
手机混用闪存到底是真是假?教你查手机闪存型号
[PConline 技巧]最近,网上传言某手机混用闪存,将UFS 3.0和UFS 3.1的闪存混用在了同一型号的机器上,买不同容量的手机,闪存协议不一样。光从这个描述来看,这做法相当不厚道,消费者买手机等于抽奖。但这到底是不是真的?很多朋友也只是有所耳闻,但却不知道如何验证。今天,就给大家分享一些方法。
方法一:拨号面板输入指令查询
这是适用于部分ROM的方法,例如某些版本的MIUI、EMUI等ROM就可以使用。在拨号界面中,输入“*#*#284#*#*”,系统就会开始生成Debug报告,等待Debug报告生成完毕,整个过程应该不到一分钟。
输入*#*#284#*#*
这个Debug报告包含很多文件,以MIUI为例,这些文件处于手机内部存储的“MIUI\debug_log”目录下。开启这个目录,找到“bugreport-日期时间”文件名格式的zip包,开启这个zip包。
MIUI中的Debug报告
在这个zip包当中,还包含着另一个zip包,它的文件名是“bugreport-设备名-安卓版本-日期时间”。
其中的bugreport压缩包
打开这个zip包,里面有一个和这个zip包同名的txt文件,开启即可。
开启这个txt文件
这个txt文件中,搜索“ffu”的字串,很容易就可以找到闪存型号的信息。例如笔者手中的这部手机,它的闪存型号是“KLUCG4J1ED-B0C1”,制造商是三星。
其中可以找到闪存具体型号
方法二:系统Bugreport查询
这个方法适用于大部分的安卓手机。首先,需要开启安卓机的开发者选项,在设置菜单的系统信息界面,不断点击“版本号”即可开启。
接着,设置界面就多了“开发者模式”的选项,这个选项通常位于“系统”下。进入开发者选项,可以看到“错误报告”的功能,点击后,选择生成报告。
开发者模式下生成bugreport
将bugreport保存到存储空间,或者发送到其他地方
等待一段时间后,系统通知栏就会弹出“已获取错误报告”的信息。点开它,看到了警告信息后,将它保存到系统目录当中。错误报告是一个文件名为“bugreport-设备名-安卓版本-日期时间”的zip包
接下来的操作就和方法一差不多了。在这个zip包里面,找到同名的txt文件,然后在其中搜索“ffu”,就能找到闪存型号。
但也要注意,现在某些厂商默认并不将闪存的相关信息写入Bugreport当中,或者是搜索的关键词不同(例如有的手机要搜“ufs_product_name”),这需要大家亲自尝试了。
方法三:终端命令行查询
安卓系统基于Linux内核,因此想要确认安卓机的一些信息,也可以通过Linux中常用的终端来进行。
首先下载安装一个终端App,这类App非常丰富,这里就不特别提供了,大家可以自行搜寻安装。
在终端中输入以下命令行:
cat /proc/scsi/scsi
之后,终端就会呈现出闪存的制造商、具体型号等信息了。
在终端,输入命令行也可以查看到闪存具体型号
不过,这个方法并非什么机器都可以用,某些厂家已经屏蔽了相关信息的调用,就算输入命令也不会返回任何信息,这就看不到闪存型号的信息了。
某手机真的混用UFS 3.0和UFS 3.1闪存了吗?
找到了闪存型号后,要确认对应规格就很容易了,直接通过搜索引擎,或者制造商的官网查找即可。
这次某些朋友是买到了某手机的256G容量的型号,因为闪存跑分略低,被怀疑是UFS 3.0,和宣传的UFS 3.1不符。据了解,对应的闪存型号为“SDINFDK4-256G”,我们就以它为例子,来鉴定一下到底这是什么闪存规格。
网络上受争议的某手机256G版闪存型号
从搜索引擎中,很容易就找到了该闪存的官方规格文件,这里把链接也提供给大家。
西数/闪迪闪存规格文件:https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/embedded-flash/brochure/brochure-western-digital-eis-mobile.pdf
从文件中,很容易就找到了“SDINFDK4-256G”的对应规格。可见这就是UFS 3.1的闪存,宣传并没有错谬。
其实是货真价实的UFS 3.1
至于和128G版本的性能差异,是由于闪存的性能不仅仅和协议有关,NAND也是重要的决定因素——正如同样是PCIe 4.0的SSD,不同型号性能也有高下之分。
总结
总的来说,作为手机中的重要部件,闪存的确很大程度上决定了手机的体验。如果你对闪存型号有疑惑,不妨试试上文的方法,相信可以帮到大家。
相关问答
镁光 是哪个国家的?美国的。镁光(Micron)是内存的品牌商,全球排名第二。但镁光身为世界第二大内存颗粒制造商。产品在国内却比较少见。这是因为镁光很少将自己的优质颗粒卖给...
镁光 2300和三星pm981a?镁光2300和三星PM981a都是高性能的NVMe固态硬盘,它们的读写速度都非常快,适合用于高负载的工作场景。相比而言,镁光2300在连续读写速度上略微领先于PM981a,但...
micron是什么公司?Micron(美国镁光)半导体是全球第三大内存芯片厂,是全球著名的半导体存储器方案供应商,是美国500强企业之一。美光科技有限公司(MicronTechnology,Inc.)...
半岛平台官方网站(官方)手机APP下载IOS//网页通用版入口英特尔520系列120GB固态硬盘特尔固态硬盘520可提供高达80,000次的4K随机写入IOPS(每秒输入输出操作)性能以及高达50,000次的4K随机读取IOPS性能,...
固态硬盘做系统盘哪个牌子 型号 好? - hWLwg0WNv 的回答 - 懂得首先,和你解释一下SLC和MLC的使用区别。技术区别有点复杂。在这里也不是一时半会能说明白。SLC是被广泛的使用在企业、军工业的FLASH,在固态硬盘这...
新存科技和长江存储哪个好?1、长江存储科技有限责任公司长江存储是一家专注于3DNAND闪存设计制造一体化的IDM集成电路企业,产品主要包括3DNAND闪存晶圆及颗粒,嵌入式存储芯片以及消...
金百达的固态硬盘怎么样?很不错对于一块SSD而言,最为关键的就是闪存颗粒和主控芯片的选择。金百达KP230使用了最新的3dNAND闪存颗粒,通过型号查询可以看到是镁光的B16a,没想到这次金...
为什么提起7nm制程只说台积电三星英特尔而不提华为高通?主要是因为芯片制造商是台积电、三星与英特尔三家为主要的。华为与高通仅是芯片的设计公司,并不是制造厂家。所以说制程与设计公司关系不大,你设计出来,生产不...
明年Intel的3D XPoint内存推出,国内上百亿建设内存工厂会不会打水漂?首先来简单介绍一下3Dxpoint,该储存芯片将兼顾NAND的非易失性,高密度和DRAN的低延迟,超高耐用性,超高速率,预计单块模组的容量是512GB,双路服务器可组6TB...首...
870evo和870qvo哪个好?三星860QVOSSD。它采用三星高密度4-bitMLCNAND闪存技术,三星860EVO=3bitmlc=TLC,镁光MX500直接慧荣配tlc的,英特尔660P也是TLC的,所以综...