论文部分内容阅读
μClinux是当前最流行嵌入式操作系统之一。专门针对没有MMU的处理器而设计,其性能稳定、移植性好、功能强大。文件系统是μClinux操作系统中重要的组成部分,在大容量Flash成为嵌入式产品主要存储介质的情况下,更对μClinux文件系统提出了针对大容量数据频繁交换的新要求。
μClinux文件系统在Flash存储设备上的实现通常由VFS,具体文件系统,MTD和硬件驱动四部分组成。其中,VFS,MTD和硬件驱动的结构通常固定,而具体文件系统的选择却非常多。μClinux文件系统性能的差别主要体现在其所采用的具体文件系统上,实现μClinux文件系统的关键就是具体文件系统的实现。
目前,μClinux上最常用的具体文件系统是JFFS2,JFFS2采用了新的存储方式和独特的垃圾收集机制,可支持耗损平衡,具有和断电保护功能。但JFFS2设计之初默认嵌入式产品中Flash的容量并不大,在当前普遍使用大容量Flash存储设备的嵌入式系统中,存在着容错校验效果不理想和启动加载时间较长的缺陷。本文的研究重点是上述缺陷的改进办法。
针对JFFS2容错校验效果不佳的问题,本文分析了JFFS2中存储和校验方式的缺陷,提出重校验海明码的编码和校验机制。与常用的编码校验机制相比,该机制编解码速度快,数据纠错能力强。本文还根据数据精度要求的不同,提出分级存储的思想,对精度要求高的数据采用编码存储,其他数据普通存储,以节省存储空间,提高存取速度。最后,本文对JFFS2文件系统做了相应的修改,更改了JFFS2节点的存储结构和存取函数,达到增强JFFS2容错校验的效果。
针对文件加载时间较长的问题,本文通过重新定义新的结点类型,用来描述Flash擦除块的相关信息。这样,文件系统就可直接读取此类结点,建立相应的块内存映像。同时,考虑到常见的嵌入式设备在实际使用中对文件的读写操作相对较少,还可将建立索引结点分布图的操作尽量放到读写文件之前执行,以减少读取磁盘数据的次数,缩短文件加载时间。