当前位置:首页 > 嵌入式 > 嵌入式硬件


汽车信息娱乐和远程电子信息处理系统需要从闪存器件中读写海量数据,因此这些器件必须能长期可靠、无错地保存数据。例如,嵌入到汽车导航系统中的闪存芯片必须在若干年的频繁使用条件下可靠工作。用户不希望丢失数据以及很长的启动时间,或者忍受很长的数据恢复时间。这些都对控制闪存芯片中数据的文件系统技术提出了非常严格的要求。

使问题更加复杂的是,汽车嵌入式设计必须使成本绝对最低。材料清单中通常不能增加管理电源波动或不受控关断的硬件,而这两种情况中的任何一种都会导致闪存损坏,并导致业务丢失。因此,闪存文件系统技术不能简单地提供高吞吐量的读/写功能;它还必须具有自恢复功能,并且在启动之后的若干毫秒之内能被完全访问。(参见“快速启动技术可以满足汽车信息娱乐/远程信息系统的需求”一文)

基于事务的文件系统

解决这些需求的方法之一是采用基于纯事务的模型。例如QNX嵌入式事务文件系统(ETFS)就遵循这种模型,完全是由事务组成。无论是文件系统的元数据还是用户数据的每一次写操作都是由一个“原子”事务组成。一个事务要么获得成功,要么就当成什么事也没有发生。

这种方法可以确保文件系统在电源故障的条件下也能完好无损,即使电源故障发生在闪存写入或块删除期间。为避免文件破坏,事务从来不会覆盖现有的“有效”数据。在文件升级中间的写入操作总是会写入到一个新的未用区域。因此如果这次操作因为突发事故或电源故障不能完成,现有的数据将保持不变。重新启动后,文件系统可以重新执行和正确完成写操作,这样就可以从可能损坏传统文件系统的状态中恢复过来。

事务文件系统可以通过处理设备中的事务日志来动态建立文件系统的层次结构。这种操作发生在系统启动之时,应设计成只有很少部分的数据需要读取和CRC校验。这样一来,文件系统可以获得高的数据完整性和快速的重启时间。例如QNX ETFS可以在数十毫秒内恢复,而传统的文件系统需要数百毫秒。

图1:这种车载导航系统是要求大容量可靠闪存文件系统(用于三维映射、动态路由等)的一个实例。

如图2所示,在纯粹基于事务的文件系统中,每个事务由头和用户数据组成。事务头被放在闪存阵列的空闲字节中。例如,一个具有2112字节页的NAND器件可以由64字节的头和2048字节的用户数据组成。事务头标识数据所属的文件以及其逻辑偏移,并包含一个序列号来确定事务的顺序。头部还包括CRC和ECC字段,用于误码检测和纠正。

图2:这张器件图表明了它相对于纯事务文件系统中物理媒介的独立性。

在系统启动时,文件系统扫描这些事务头来快速重构存储器中的文件系统结构。除了确保高的数据完整性和快速的重新启动时间,一个闪存文件系统还必须具有可以延长闪存寿命的特性,进而增加整个嵌入式系统的长期可靠性。这些特性包括读取性能劣化监测、动态和静态损耗平衡以及避免文件碎片的技术。

恢复丢失的比特

在NAND闪存块内的每一次读操作都会使保持数据位的电荷减弱。因而,在大约10万次读操作后闪存块就会丢失数据。为了解决这个问题,一个设计完善的文件系统会跟踪读操作,并在块的读次数达到极限之前标记出弱电荷块以便进行刷新。文件系统随后执行一次刷新操作,该操作将数据拷贝到一个新的闪存块,并擦除该弱块。这种擦除实现了对闪存块的再充电。

文件系统还应该对所有的读写操作执行ECC运算,以便从可能发生的任何单比特差错中恢复。然而,尽管ECC对于那些本身丢失了单个比特的闪存效果很好,但是对于在写操作期间因为电源故障而导致的很多比特损坏则无能为力。因此,文件系统应该对每个事务执行一次CRC检验,以快速检测出损坏的数据。如果CRC检测到一个错误,文件系统就可以使用ECC纠错功能将数据恢复到一个新块上,然后标记出弱电荷块以便擦除。

动态和静态损耗平衡

每个闪存块在其失效之前的擦除次数是有限的。在某些器件中,这个数字可以低到10万次擦除。为了解决这个问题,文件系统必须实现动态损耗平衡,它通过将擦除次数均匀地分散到设备中来延长闪存寿命。

差异可能很大:从没有损耗平衡几天就产生故障的使用情形到利用损耗平衡超过40年的情形。为实现动态损耗平衡,文件系统会跟踪每个块的擦除次数,然后优先使用那些较少使用的块。

通常,闪速存储器包含大量的静态文件,这些文件经常被读取,但不会再写入。这些文件占用的闪存块没有理由被擦除。如果闪存中大部分文件是静态的,剩余部分包含动态数据的块的损耗将戏剧性地加快。对于NAND存储器来说这方面的问题更大,因为NAND每个块的读次数相当有限。

因此,一个设计优秀的文件系统应提供静态损耗平衡功能,它将较少使用的静态块中的数据拷贝到过量使用的块中,从而实现块的平衡使用。这种方法可以让过量使用的块休息,因为它们现在存储的是静态数据,并将使用较少的静态块移动到动态块组中。

尽量减少文件碎片

文件碎片也是闪存器件的一个问题。然而,支持去碎片技术只是解决方案的一部分。因为NAND闪存具有有限的写次数,文件系统必须尽可能避免碎片产生,以延长闪存的寿命。

基于日志的文件系统经常受碎片的影响,因为对已有的文件进行刷新或写入会产生一个新的事务。为减少很多小事务产生的碎片,QNX ETFS使用写缓冲来将小的写入合并成大的写入事务。文件系统还能监视每个文件的碎片水平,并对那些已经严重碎片化的文件进行后台去碎片处理。这种后台活动应该总是能被用户活动占先,以便确保对正在进行去碎片处理的文件进行立刻访问。

正确的组合

完全可能构建一个能提供高吞吐量、高可靠性和快速启动时间的闪存文件系统。通过整合事务级的设计、成熟的纠错以及损耗平衡方法,闪存文件系统完全可以解决当前嵌入式汽车信息娱乐设备提出的复杂要求。





本文来源:QNX Software Systems公司 作者:QNX Software Systems公司 Randy Martin

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭