一种基于norflash的嵌入式文件系统的制作方法

文档序号:14174960阅读:300来源:国知局

本发明涉及一种基于norflash的嵌入式文件系统。



背景技术:

嵌入式微处理器一般内存小(kb级),而norflash作为嵌入式系统的存储器件被广泛使用。通常在小型嵌入式系统中,由于norflash扇区块过大(常见的有64kb),而总存储扇区数不多,实际应用中不好移植fat等商用文件系统,并且此类文件系统常以整个扇区为一个存储单元,对于微处理器来说ram占用过大,norflash小文件利用不充分。因此针对这种应用的嵌入式系统中通常作法为:当有norflash存储应用数据时,一般由程序固定划定各扇区的使用功能,对于文件的存储,提前确定扇区的位置。这种存储没有灵活性,对同一扇区操作频繁,当选定扇区损坏时很难再正常工作,对文件的修改等存储管理非常不利。



技术实现要素:

为了克服现有技术的上述缺点,本发明提供了一种基于norflash的嵌入式文件系统,可以很容易实现嵌入式应用中,满足用户对大扇区norflash存储器中的文件存储管理的基本需要。对扇区损坏在文件操作时能即时发现,通过动态更换扇区;内存占用小无需缓冲一个扇区,扇区擦除使用平衡,能很好的满足小系统中对文件系统的需求。

本发明解决其技术问题所采用的技术方案是:一种基于norflash的嵌入式文件系统,包括如下内容:

一、扇区管理:每个扇区包含一个扇区头信息,所述扇区头信息包含扇区状态、扇区编号id、擦除次数、备份扇区id、备份扇区擦除次数、头结构校验信息;

二、文件管理:对所有文件和文件夹都进行编号,将文件目录与文件都连续存储在扇区头信息之后,文件分割为文件头信息部分和文件分片部分,所述文件头信息部分包含文件总长度信息,文件分片部分包含文件分片头信息。

与现有技术相比,本发明的积极效果是:本发明在嵌入式系统中对norflash建立了一个文件系统,此文件系统格式简单,易理解,对扇区和文件系统统一管理,实现扇区资源充分利用,擦除平衡。对于文件删除只修改标记,对于文件修改时重新分配扇区擦除原扇区,对于写操作失败的扇区进行坏区管理。文件系统通过专门设计的文件或文件夹头信息很容易构建目录结构和定位检索。具体表现如下:

(1)一个扇区可以存储多个文件或目录,实现大扇区空间的充分利用。通过解析每个扇区的各信息头长度很容易得到每个扇区的使用情况,在文件建立时只需要在扇区的空白区域写入文件和文件头信息。

(2)文件修改时内存占用小,无需缓冲扇区数据。文件删除时只是标记文件状态,当此扇区在需要复制到新扇区时对删除标识的文件不复制,而在此扇区擦除后真正删除文件。文件修改时分配一个新的扇区,并写入原文件所在扇区的id和擦除次数保存到新分配扇区的备份信息头中。将原文件所在扇区中除此文件外的所有有效文件先复制到新分配扇区中,将原文件中不需要修改的部分复制到新扇区中,写入新修改部分文件到新扇区中,构建新写入文件的头信息。删除原扇区并放入空闲扇区管理列表中。这一技术不再需要缓冲一块扇区内容做擦除后修改,使得ram占用小,扇区也不会被过度重复使用。

(3)每个扇区都存储有扇区的编号和擦除次数,对空闲扇区的管理进行排序,将擦除次数少的扇区放到队列头,分配时最先使用,实现擦除平衡。扇区写操作出现错误的扇区进行坏区管理,下次不再使用。

(4)文件目录存储pin码和访问权限控制属性,在访问目录下所有文件时都可以实现权限管理,pin码存储口令的变换数据。

本文件系统的操作接口简单易懂,提供了目录和文件遍历等常用功能接口,使用方便、灵活、可裁剪。文件系统的大小、norflash的特性和访问接口通过注册的形式在文件系统初始化时设定,可实现各种norflash在嵌入式系统上的移植,也可以轻松移植到其它存储器中。

本发明对嵌入式系统上管理存储器时提供一种良好的文件系统解决方案,可以在小型嵌入式系统中推广应用。

具体实施方式

一、本发明的设计原理:

文件系统设计包含扇区管理和文件管理两个核心业务。对于norflash的扇区操作,文件系统占用的空间尺寸,扇区块大小等信息在文件系统格式化或初始化时通过结构体注册到文件系统。

文件系统通过注册的norflash操作结构体获得norflash的芯片特性和操作函数接口,通过注册接口可以方便移植和更换norflash器件,管理norflash扇区。

(1)文件系统中扇区管理设计

每个扇区都包含一个扇区头结构信息,包含扇区状态(正常使用,损坏等),扇区编号id,擦除次数,备份扇区id(主要的数据是从哪个扇区进行复制过来的),备份扇区擦除次数,头结构校验等信息。文件系统在初始化时(或格式化时)在内存中建立扇区管理信息,包含在用、空闲、损坏、使用大小等信息。将空闲扇区以擦除次数进行排序,在分配扇区时保证永远只分配擦除次数最少的扇区,从而保证擦除平衡。扇区擦除时只保留头信息中的扇区编号并将擦除次数加1。

(2)文件系统存储格式设计

文件系统中对所有的文件或文件夹都以统一且唯一的id进行编号,文件目录与文件都连续存储在扇区中扇区头信息之后,目录文件夹存储不能跨越扇区。文件过大时可以跨越扇区,文件分割为包含文件头信息部分和其它文件分片部分,文件头信息部分包含文件总长度信息,文件分片部分包含文件分片头信息(文件id,文件偏移,文件分片长度和校验等)。具体有4种头信息,每种头信息都存储在扇区头信息之后,所有头信息和存储数据都设计校验信息。当一个扇区扫描完所有的头信息后,除得到此扇区存储的信息外,还可得到扇区使用空间情况,用来在新建文件或文件夹时分配空间。

1)根目录文件夹

格式化时创建的文件,除文件编号固定和文件夹存储格式属性为根目录外,其它信息格式与普通文件夹没有任何差别,其父目录id等于自己的文件id。

2)普通文件

包含id、父目录文件id、名称、文件总长度、当前扇区占用长度(当占用长度不等于总长度时表明文件有分片)、删除或修改属性、文件属性(目录、文件或文件分片)、权限属性、校验、创建时间、修改时间等头结构和文件数据信息的校验等信息;

3)目录文件

目录文件的结构与文件类似,相对于文件又包含有目录访问认证信息(pin码),口令校验次数等,同时没有文件的数据存储部分。

4)文件分片

当一个文件过大不能存放在当前扇区时,就需要分片存储,对于每个文件分片信息都包含有当前分片的文件id、父目录文件id、存储文件数据在文件中的偏移、当前分片在本扇区中存储所占的空间和存储的大小、以及文件当前数据和分片头结构的校验等信息。

(3)文件系统运行设计

文件系统在格式化时将所有扇区进行擦除。分配一个空闲扇区创建根目录文件。文件系统初始化后,文件系统建立所有扇区的管理链表,获得操作norflash控制结构,取得整个扇区的使用情况和当前文件系统的空间使用情况等信息。文件系统中对于几个关键操作的设计如下:

1)文件和目录文件的创建

创建新的目录时文件系统查找当前可用扇区中有足够空间可以存储目录结构的扇区,建立目录结构到当前扇区已经使用空间后面,维护更新当前扇区的使用情况。对于文件建立也是一样,需要先判断文件系统是否有足够空间后才进行操作,对需要分片时重新申请新的扇区空间存储分片部分。

2)文件的读取操作

文件读取需要先打开文件所对应的目录文件,并且获取相应操作权限。文件读取时先打开文件,打开文件时文件系统在父目录中定位到文件所在的扇区,同时获取文件头信息、文件长度、文件在扇区中的存储偏移,对于分片文件文件系统将获取所有的分片头信息的存储位置、长度、偏移等。文件读取时根据读取位置可以很方便的定位到所在扇区位置,直接调用norflash的读取注册函数完成数据读取。

3)文件和目录文件修改操作

文件和目录文件修改需要先打开其父目录文件,并且获取相应操作权限。然后打开对应的文件。

当需要修改文件和目录文件(主要是修改pin口令和更新pin口令校验出错次数)时,先分配一个空闲扇区,将当前扇区中除修改文件和删除文件外的所有文件复制到新扇区中,然后将当前文件中不需要修改部分复制到新扇区,最后更新修改部分和校验信息到新扇区,完成这一操作后将原有扇区进行擦除管理(擦除扇区,更新扇区头信息,回收扇区,将扇区根据擦除次数放到空闲队列中)。对于新分配扇区如果写操作失败,进行多次尝试仍失败时标注此扇区损坏,并重新分配扇区进行处理。

4)文件和目录文件的删除

文件删除时,只需要定位到文件系统中的文件头和文件分片头信息,将当前文件状态修改为删除状态。目录文件删除时(根目录不可以删除,在格式化时自动重新创建),需要将目录文件下的所有文件和目录文件以及其本身的状态都修改为删除状态。当一个扇区中所有的文件都删除后文件系统对此扇区进行擦除管理。

5)文件和目录文件权限

文件和目录文件都有权限设计,当目录文件有读写权限需要pin码时,此文件夹下面的所有文件都继承这一属性。当目录文件pin码通过验证后才可以访问目录文件下的文件。对于文件来说除需要校验目录权限外,自己打开时也附带读写模式,对于以只读方式打开的文件不能进行写操作。只有写模式打开且有写权限属性时才可以写。

二、本发明的实现要点:

本技术是一种基于norflash的嵌入式文件系统实现方法,主要涉及norflash扇区管理和文件系统管理两个关键技术的结合。

(1)norflash扇区管理:在每个扇区头保存有当前扇区编号,擦除次数,使用状态,备份扇区编号(主要的数据是从哪个扇区进行复制过来的),备份扇区的擦除次数。文件系统在初始化(或格式化时),对所有扇区建立管理信息。

(2)文件系统管理:提供基本的文件系统功能,具体有格式化、初始化、目录操作(创建、打开、口令认证(可选)、口令修改(可选)、关闭、删除、遍历等)、文件操作(创建、打开、读取、修改、删除等)。

(3)文件系统的设计:

1)整个文件系统在格式化时创建根目录,初始化时对所有扇区进行管理维护,向文件系统注册norflash的操作接口和扇区大小、文件系统大小等属性;

2)文件目录与文件都连续存储在扇区中扇区头信息之后,每个文件目录和文件都包含占用长度、删除或修改属性、文件属性(目录、文件或文件分片)、权限属性、唯一的编号id、名称、校验、以及父目录文件id等头信息和文件数据信息等;

3)文件目录不能占用两个扇区,文件可以占用两个或多个扇区,但文件的头信息必须放一个扇区中,其它扇区的分片都有文件分片信息头;

4)文件系统从每个扇区的信息头开始扫描每个文件或文件目录的长度来得到下一个文件或文件目录的开始位置,得到每个扇区的空间使用情况。文件直到所有扇区扫描完成来构建初始化文件系统信息,找到根目录,实现文件系统对各扇区的有效管理;

5)文件系统通过从根目录开始扫描,每个文件的id和父目录文件id来构建完整的文件系统目录结构,实现查找文件和文件目录的目标。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1