白立朋,雷晶晶,邓积微,李秋红
(湖南大学物理与微电子科学学院微纳技术研究中心,长沙 410082)
随着各种数据采集设备的小型化、普及化,各种数据信息的采集变得更加方便。但是由于成本因素以及设备小型化带来的限制,一般来说其数据处理能力有限。人们希望在方便地采集信息的同时,也可以更加便捷地对采集到的数据信息进行保存、删除等操作。
为满足便携设备对采集数据管理的要求,本文以可编程存储器AT24C256和单片机AT89C52为硬件基础,提出了一种新的建立文件系统的方法。此方法使得对数据的管理更加灵活,适用于数据处理能力和存储空间有限的情况。
AT24C256是Atmel公司生产的32 KB串行电可擦除的可编程存储器。内部共有256页,每页64字节存储空间,存储单元地址为16位。[1]其与Atmel公司生产的AT89C52的接口电路如图1所示。AT24C256的SCL和SDA引脚与AT89C52的读写信号相连。本文仅使用一个AT24C256芯片,所以其片选端A0、A1接地。
图1 AT24C256应用电路
文件系统的实现基于以下考虑:便携设备数据处理能力有限;存储空间有限。
顺序存储法可以有效地利用现有的存储空间,但是涉及大量的数据操作,数据处理能力有限的单片机在速度上很难满足其要求。一般的分区数据管理模式采用树形目录组织,由文件信息指向存储地址信息,再由存储地址信息指向实际数据存储区[2-3]。而在本文的分区数据管理模式中,舍弃了对地址信息的存储,将AT24C256分成了两个部分:第一部分是文件存储区,其功能是存储文件名等信息,用于目录查询;第二部分是数据存储区,其功能是存储与文件名对应的具体数据。
本文将文件存储区分成了32个子文件存储区,分别编号为0~31;同时,数据存储区也被分成了32个子数据存储区,分别编号为0~31。按照编号的顺序,每个子文件存储区与相同编号的子数据存储区相对应,通过数学计算得到它们的对应关系。图2表示了从子文件存储区对应到子数据存储区的过程。
图2 子文件存储区对应到子数据存储区的过程
文件系统的建立方法在已有的类似文件系统的基础上进了如下的改进:
①只有文件存储区和数据存储区两个分区。
②子文件存储区的实际物理地址与子数据存储区的实际物理地址直接相对应,不需要在子文件存储区内存储地址信息,节省了存储地址信息所需要的空间,尤其对于存储空间有限的便携设备而言较有意义。
在分区数据管理模式中:文件存储区占用AT24C256的第一页64字节的存储空间,每个文件的信息(如文件名等)存储在2个字节中(可以根据实际需要来改变其存储空间的大小)。这样,文件存储区内共32个子文件存储区,正好占用了芯片的第一页存储空间。数据存储区占用剩余的255页,与文件存储区相对应,也分为32个子数据存储区。其中前31个子数据存储区的存储空间大小为1 KB,第32个子数据存储区的存储空间为960字节。
首先扫描文件存储区,如果扫描到的子文件存储区为空,则写入文件名等信息;然后通过数学计算得到相对应的子数据存储区的首地址,再将待存储的数据写入子数据存储区。当一个子数据存储区的空间无法满足一个文件的存储要求时,继续扫描文件存储区,遇到下一个空子文件存储区后,写入文件名等信息,然后计算得到相对应的子数据存储区的首地址,继续写入剩余的数据。也就是说,在数据存储上可以实现物理存储地址的不连续存储。数据存储流程如图3所示。
通过下面的地址计算公式,可直接在函数中计算出相应的子数据存储区首地址:add_data=add/2*1024+64;
每个子文件存储区占2字节,所以add/2为子文件存储区的编号。每个子数据区空间大小为1 024字节,而数据存储区是从第64个存储单元开始的,所以add/2*1 024+64为相应子数据存储区的首地址。
数据存储函数如下:
此方法不需要对地址信息的写入与读取操作,因而有更高的效率,并节省了相应的存储空间。尤其是在多次存储和读出不同文件的数据时,效率上的优势将会更加明显。
图3 数据存储流程
首先在文件存储区找到要读取的文件名,然后通过数学计算得到相对应的子数据存储区首地址,再依次将数据读出。如果数据是不连续存储的,则在读完一个子数据存储区的数据后,继续扫描后面的子文件存储区找到相应的子数据存储区地址,继续将数据读出,直到将数据全部读出为止。
首先在文件存储区找到要删除的文件名并将其删除,然后通过数学计算得到相对应的子数据存储区首地址,再将其中的数据全部删除。如果数据是不连续存储的,则在删除完一个子数据存储区的数据后,继续扫描后面的子文件存储区找到相应的子数据存储区地址,继续删除操作,直到将数据全部删除为止。
本文在已有的文件系统建立方法的基础上进行了改进。与顺序存储方式相比,在存储和读取数据的速度上有明显的优势,而与已有的分区数据管理模式相比,最大的特点是省去一般分区数据管理模式中的地址信息存储区。具体有如下优点:
①在存储和读取文件的数量较大时,速度上的优势更明显。
②由于节省了地址信息存储区,使得相应的存储空间节省出来。因为每个子数据存储区都会对应一个地址信息存储区,所以这一优势在划分出更多子数据存储区的情况下更加明显。
③程序实现上更为简单。
虽然具有以上优点,但是此模式依然没有克服分区数据管理模式的缺点:不能有效地利用存储空间;存储文件的数量受到限制。所以仍然需要探索新的算法来建立文件系统,以满足在数据处理能力有限的情况下对于效率和存储空间利用率的要求。
[1]Atmel.AT24C256芯片手册.
[2]周明建.AT24C512中数据的文件系统化管理[J].单片机与嵌入式系统应用,2004(10):47-49.
[3]单传伟,张东来.串行EEPROM中数据文件系统的建立[J].微计算机信息,2006(22):288-290.