U盘的使用寿命到底有多大?
(1)U盘的由来
名词搜索:USB、NAND FLASH,ECC校验,FAT文件系统。
提示:因为是技术讨论,必然要提及一些专业名词,限于篇幅,我无法把一些很基本的名词都在博文里面解释清楚,不过我想这并不是一个问题,因为,外事不决问google,内事不决问baidu,大家都有办法找到这些名词的公认的解释的。
说起U盘,另外一个产品MP3不得不提。因为MP3也都具备U盘的数据存储功能,所以本文讨论的数据存储的问题,也都适用于MP3(当然是使用Flash的MP3)。SD卡跟U盘使用相同的存储介质,只是接口不同,后文谈到的文件读写原理,也是适用的。
一个新兴事物的诞生,必然会引发很多口水,专利之战,不仅与荣誉有关,更牵扯到巨大的商业利益。
技术人员一定要关心专利,这样才能保护自己的合法权益,当然,专利这个东西从他的诞生开始也是伴随着口水的。专利保护对于社会的进步是利大还是弊大?这个话题实在是太大了,我都不敢讨论的。
U盘的专利之战,现在公认的结果是朗科赢了。但是,市场上的情况,似乎还是百花齐放。但正因为是百花齐放,所以才造成了U盘产品的良莠不齐,才造成了消费者的困扰,才促使我写下这篇文章。
U盘,闪存盘,从名称上简单的讲,就是使用NAND FLASH为存储介质的数据存储设备,它利用USB接口和计算机相联接。
U盘的诞生,大概要从1998年算起吧,我99年才参加工作,对这个源头没有自己亲身的经历,所以就不能细说了。U盘刚出现在市场的时候,容量很低,价格也很贵,这个事情我是可以解释的,一个是新兴事物缺乏竞争,另外一个原因就是NAND FLASH那个时候由于工艺才开始发展,价格就很贵。
现在就不同了,经过10年的发展,NAND FLASH的单颗容量和价格已经能够被市场接受了。顺便说下,现在的SSD,固态硬盘,也是使用NAND FLASH作为存储介质的,主流容量已经达到520GB左右了,价格大概在2、3000元,你们可以计算下,现在的主流8G容量的U盘,其实成本已经很低了。
U盘的接口,USB,我不想多说了,反正支持USB2.0已经是主流了,都是标准参数,没啥好说的。
存储介质,NAND FLASH,原理大家自己在网上搜吧。我想说的是,NAND FLASH的发展有两个阶段,第一个阶段是小容量的颗粒封装,64MB以内的吧,他的最小读写单位Page是512Byte;后来发展到新阶段,large page,2KB。特别说明这个数据,是为了后面讲到FAT文件系统的时候,还能回想到这个数字。page是nand flash的读写单位,它还有一个概念block,是擦除的最小单位,针对large page,他的大小是128KB。
NAND FLASH必须先擦后写!哪怕是仅仅将某个bit从1改写为0,都必须在干净的page中写入!
我强调这一点,是因为我也曾有过这种偷懒的想法,当然,我仅仅是在试验阶段有过这种做法,后来做产品,我还是老老实实的用ECC校验了。
既然我有过这种冲动,那么我想肯定就会有其他的开发人员也会有这种想法,甚至不排除已经有人用在产品上了!
我必须告诫我的同行们,万事没有侥幸!不管“位翻转”的概率有多小,我们都不能忽略它的存在!只要NAND FLASH的data sheet一天没有取消ECC的说明,我们都应该严格按照产品的说明书来做事情!
一个人或一个组1、2周的测试时间,不能说明任何问题,要知道你的顾客是上百万的,他们的使用时间是几年,再小的概率,都会出现!
如果出现这种偷懒的做法,造成了产品质量的下降,我想,这是我们这个行业的“三聚氢胺”!
有了接口和存储介质,另外一个关键的部分就是读写控制芯片!硬盘、SD卡也是有读写控制器的,这就说明了一个问题,计算器主机的操作系统,是不会考虑到所有外部设备的特性的。自己的事情自己做,设备必须做好自己的事情。
我做过的用手机或者PDA实现U盘的产品方案,都是用软件来实现读写控制的。所以,我并不清楚U盘的读写控制芯片,是厂家自己设计的,还是说有半成品的设计方案供厂家选择。但是对于技术讨论来讲,这个并没有关系。
读写控制芯片是干什么的?简单一句话,就是将主机的逻辑读写请求转换成设备的物理读写擦动作。
这里面,才是U盘的关键。
我也在思索,这部分,我要讲到什么程度?技术的讨论会对别人产生什么样的影响? 我现在还没有具体的想法,也只能边写边看了。。。
(2)U盘的读写机制
名词搜索:FAT文件系统
USB接口是通用的,主机虽然能检测出插上的是mess storage类型的设备,但它不知道你是移动硬盘,还是U盘,也可以说他不想知道,他认为你们应该是能够遵循他的标准的。 所以,主机的行为,只是以主机为主,以他能够识别的方式来向USB设备发出查询和读写请求命令。
U盘是存储文件的,那么首先就要搞清楚一件事情,U盘使用什么样的文件系统?
U盘使用什么文件系统,这是由主机决定的,因为主机可以执行格式化U盘的动作,而这个格式化也就是确定文件系统的动作。
注意:MP3、手机、数码相机等设备不能随意连接到主机上进行格式化!因为这些设备自身的程序也是要访问当作U盘的文件分区的,他们生成时设定的文件系统,主机可以识别,但是主机格式化的文件系统,他们不一定能识别。
说起文件系统,就一定要先提FAT文件系统。FAT文件系统是微软公司对人类的一大贡献,微软曾经有要收取FAT文件系统专利费的想法,但因为应用范围太广泛了,实在是民愤太大,而不得不罢休,FAT文件系统不仅仅存在于我们熟知的计算机中,还包括DC、MP3、MP4、智能手机,甚至还有其他电子设备都有可能在使用FAT文件系统。
其他的文件系统,也要讲一下的,NTFS文件系统也是微软公司的,linux支持的更多,ext2、ext3、jffs2等等。每一种文件系统的起源,都有他的诞生背景和使命,为了解决某个问题,也许是容量、也许是独特的存储介质,都有他存在的价值。
FAT文件系统要从DOS时代的软盘说起,还记得1.4MB的软盘吧?我96年玩仙剑的时候,就是自己买了一盒软盘copy的压缩文件。那时候软盘上使用的就是FAT12文件系统,这也是FAT文件系统的第一个版本。后来,终于有了几百MB的硬盘了,那时候使用的是FAT16文件系统;再后来,我们有了32GB的硬盘了,用的就是FAT32文件系统了;现在,我们有
1TB的硬盘了,我们用的是。。。。。。NTFS文件系统。
简单说明下,FAT文件系统的发展就是因为存储分区容量不断扩大,为了更有效的管理存储单元,我们不得不一次次扩大文件系统的基本读写单位簇的数量。
文件系统简单介绍到这里,细节后面还会提到的。
我们先了解下主机读取U盘的流程。
主机查询到有mess storage设备插上后,先要识别设备的文件系统。主机发出读第一个sector MBR数据的命令,通过这些数据,主机可以知道设备有几个文件分区以及他们的具体信息。
然后主机通过读取每个分区的DBR和FAT表,就可以建立起树状的文件目录结构,就可以访问每个文件了。
写文件,包括修改、删除、新增文件的流程。
写文件,主要有三个步骤,修改FAT表项,修改目录项,修改数据簇。
记住一点,这里说到的FAT表项、目录项、数据簇都是主机的概念,也就是说主机发出的读写命令,都是基于主机逻辑的地址和数据,至于设备接受了主机的命令,如何执行,完全是设备自己的事情,只要能够符合主机的逻辑,就是正确的。
这就给了设备很大的发挥空间,表现如何,就看各自的了。
U盘的使用寿命到底有多大?
(1)U盘的由来
名词搜索:USB、NAND FLASH,ECC校验,FAT文件系统。
提示:因为是技术讨论,必然要提及一些专业名词,限于篇幅,我无法把一些很基本的名词都在博文里面解释清楚,不过我想这并不是一个问题,因为,外事不决问google,内事不决问baidu,大家都有办法找到这些名词的公认的解释的。
说起U盘,另外一个产品MP3不得不提。因为MP3也都具备U盘的数据存储功能,所以本文讨论的数据存储的问题,也都适用于MP3(当然是使用Flash的MP3)。SD卡跟U盘使用相同的存储介质,只是接口不同,后文谈到的文件读写原理,也是适用的。
一个新兴事物的诞生,必然会引发很多口水,专利之战,不仅与荣誉有关,更牵扯到巨大的商业利益。
技术人员一定要关心专利,这样才能保护自己的合法权益,当然,专利这个东西从他的诞生开始也是伴随着口水的。专利保护对于社会的进步是利大还是弊大?这个话题实在是太大了,我都不敢讨论的。
U盘的专利之战,现在公认的结果是朗科赢了。但是,市场上的情况,似乎还是百花齐放。但正因为是百花齐放,所以才造成了U盘产品的良莠不齐,才造成了消费者的困扰,才促使我写下这篇文章。
U盘,闪存盘,从名称上简单的讲,就是使用NAND FLASH为存储介质的数据存储设备,它利用USB接口和计算机相联接。
U盘的诞生,大概要从1998年算起吧,我99年才参加工作,对这个源头没有自己亲身的经历,所以就不能细说了。U盘刚出现在市场的时候,容量很低,价格也很贵,这个事情我是可以解释的,一个是新兴事物缺乏竞争,另外一个原因就是NAND FLASH那个时候由于工艺才开始发展,价格就很贵。
现在就不同了,经过10年的发展,NAND FLASH的单颗容量和价格已经能够被市场接受了。顺便说下,现在的SSD,固态硬盘,也是使用NAND FLASH作为存储介质的,主流容量已经达到520GB左右了,价格大概在2、3000元,你们可以计算下,现在的主流8G容量的U盘,其实成本已经很低了。
U盘的接口,USB,我不想多说了,反正支持USB2.0已经是主流了,都是标准参数,没啥好说的。
存储介质,NAND FLASH,原理大家自己在网上搜吧。我想说的是,NAND FLASH的发展有两个阶段,第一个阶段是小容量的颗粒封装,64MB以内的吧,他的最小读写单位Page是512Byte;后来发展到新阶段,large page,2KB。特别说明这个数据,是为了后面讲到FAT文件系统的时候,还能回想到这个数字。page是nand flash的读写单位,它还有一个概念block,是擦除的最小单位,针对large page,他的大小是128KB。
NAND FLASH必须先擦后写!哪怕是仅仅将某个bit从1改写为0,都必须在干净的page中写入!
我强调这一点,是因为我也曾有过这种偷懒的想法,当然,我仅仅是在试验阶段有过这种做法,后来做产品,我还是老老实实的用ECC校验了。
既然我有过这种冲动,那么我想肯定就会有其他的开发人员也会有这种想法,甚至不排除已经有人用在产品上了!
我必须告诫我的同行们,万事没有侥幸!不管“位翻转”的概率有多小,我们都不能忽略它的存在!只要NAND FLASH的data sheet一天没有取消ECC的说明,我们都应该严格按照产品的说明书来做事情!
一个人或一个组1、2周的测试时间,不能说明任何问题,要知道你的顾客是上百万的,他们的使用时间是几年,再小的概率,都会出现!
如果出现这种偷懒的做法,造成了产品质量的下降,我想,这是我们这个行业的“三聚氢胺”!
有了接口和存储介质,另外一个关键的部分就是读写控制芯片!硬盘、SD卡也是有读写控制器的,这就说明了一个问题,计算器主机的操作系统,是不会考虑到所有外部设备的特性的。自己的事情自己做,设备必须做好自己的事情。
我做过的用手机或者PDA实现U盘的产品方案,都是用软件来实现读写控制的。所以,我并不清楚U盘的读写控制芯片,是厂家自己设计的,还是说有半成品的设计方案供厂家选择。但是对于技术讨论来讲,这个并没有关系。
读写控制芯片是干什么的?简单一句话,就是将主机的逻辑读写请求转换成设备的物理读写擦动作。
这里面,才是U盘的关键。
我也在思索,这部分,我要讲到什么程度?技术的讨论会对别人产生什么样的影响? 我现在还没有具体的想法,也只能边写边看了。。。
(2)U盘的读写机制
名词搜索:FAT文件系统
USB接口是通用的,主机虽然能检测出插上的是mess storage类型的设备,但它不知道你是移动硬盘,还是U盘,也可以说他不想知道,他认为你们应该是能够遵循他的标准的。 所以,主机的行为,只是以主机为主,以他能够识别的方式来向USB设备发出查询和读写请求命令。
U盘是存储文件的,那么首先就要搞清楚一件事情,U盘使用什么样的文件系统?
U盘使用什么文件系统,这是由主机决定的,因为主机可以执行格式化U盘的动作,而这个格式化也就是确定文件系统的动作。
注意:MP3、手机、数码相机等设备不能随意连接到主机上进行格式化!因为这些设备自身的程序也是要访问当作U盘的文件分区的,他们生成时设定的文件系统,主机可以识别,但是主机格式化的文件系统,他们不一定能识别。
说起文件系统,就一定要先提FAT文件系统。FAT文件系统是微软公司对人类的一大贡献,微软曾经有要收取FAT文件系统专利费的想法,但因为应用范围太广泛了,实在是民愤太大,而不得不罢休,FAT文件系统不仅仅存在于我们熟知的计算机中,还包括DC、MP3、MP4、智能手机,甚至还有其他电子设备都有可能在使用FAT文件系统。
其他的文件系统,也要讲一下的,NTFS文件系统也是微软公司的,linux支持的更多,ext2、ext3、jffs2等等。每一种文件系统的起源,都有他的诞生背景和使命,为了解决某个问题,也许是容量、也许是独特的存储介质,都有他存在的价值。
FAT文件系统要从DOS时代的软盘说起,还记得1.4MB的软盘吧?我96年玩仙剑的时候,就是自己买了一盒软盘copy的压缩文件。那时候软盘上使用的就是FAT12文件系统,这也是FAT文件系统的第一个版本。后来,终于有了几百MB的硬盘了,那时候使用的是FAT16文件系统;再后来,我们有了32GB的硬盘了,用的就是FAT32文件系统了;现在,我们有
1TB的硬盘了,我们用的是。。。。。。NTFS文件系统。
简单说明下,FAT文件系统的发展就是因为存储分区容量不断扩大,为了更有效的管理存储单元,我们不得不一次次扩大文件系统的基本读写单位簇的数量。
文件系统简单介绍到这里,细节后面还会提到的。
我们先了解下主机读取U盘的流程。
主机查询到有mess storage设备插上后,先要识别设备的文件系统。主机发出读第一个sector MBR数据的命令,通过这些数据,主机可以知道设备有几个文件分区以及他们的具体信息。
然后主机通过读取每个分区的DBR和FAT表,就可以建立起树状的文件目录结构,就可以访问每个文件了。
写文件,包括修改、删除、新增文件的流程。
写文件,主要有三个步骤,修改FAT表项,修改目录项,修改数据簇。
记住一点,这里说到的FAT表项、目录项、数据簇都是主机的概念,也就是说主机发出的读写命令,都是基于主机逻辑的地址和数据,至于设备接受了主机的命令,如何执行,完全是设备自己的事情,只要能够符合主机的逻辑,就是正确的。
这就给了设备很大的发挥空间,表现如何,就看各自的了。