AT24C512中数据的文件系统化管理
个字节;每一个字节接收完毕后,AT24C512则照样输出一个零应答信号。
(4)读操作
读操作有当前地址读、随机读、读串三种方式。其初始化过程基本与写操作相同,只是在设备选择字中的最低位要改成读而已。在当前地址读操作方式时,内部数据的地址将保持在最后的读写操作地址加1上,直到读到最后字节后又回到最开始的位置。而随机读操作之前先要向AT24C512写入一个字节地址,然后才能读。读串操作既可以是当前地址读,也可以是随机地址读。当单片机接收到一个数据字后,会回应一个应答信号。AT24C512在接收到应答信号后会将地址加1,接着输出下一个字节。当单片机接收到数据但不送应答信号时,读过程结束。
2文件系统构成
为了有效地管理AT24C512中的数据,笔者仿效PC机中的文件管理机制,为AT24C512构造了一个简单的文件系统。考虑到测控系统的实时性要求和硬件资源的有限性,采用了二级树形目录组织。
为了管理数据方便,把AT24C512的物理空间划分为1024个逻辑页,每页64字节。按照文件系统的需要,把AT24C512的全部空间划分为三部分:数据区,占用最后的960页;页面分配区
,占用中间的30页;目录区,占用前面的24页。
(1)数据区
AT24C512最后面的960页作为数据区,其序号从0开始编号。该区作为文件数据的存储区域,在存放文件数据时,从该区内分配若干页,每次存储一页。
(2)页面分配区
页面分配区记录了数据区每一页的分配情况。该区中每2字节组成一个记录项,共有960个记录项(30×64/2)。记录项从0开始编号,每一个记录项对应着数据区相应页的使用情况。
在实际应用中,一个文件的数据往往大于64字节,这样一个文件的数据区中需占用多个页。但随着文件的增删,数据区的空闲空间出现不连续的状况,因而数据区的分配并不能保证连续,而是根据当前数据区的使用情况来决定某一部分文件内容应该放在哪一页上。为了把这些分散的数据有机连接起来,把记录项按照链表的形式组织起来,每个文件对应着一个链表,链表中每个结点为一个记录项,记录项的内容为下一个记录项的编号,最后一个记录项的内容为0FFFFH,表示链表结束。把这些记录项对应的页面连接起来就构成了一个文件的完整数据。
另外,如果记录项的内容为0EEEEH,表示其对应的数据页未分配。
(3)目录区
目录区用来存储文件的主要信息。根据这些信息可以知道文件名、文件生成的日期以及文件的数据在数据区中的存储首地址。文件目录项的结构如下:
①文件名。文件名由4字节双BCD码构成,在生成该文件时由键盘输入数字(硬件上键盘只提供了数字键)作为文件名,并由程序自动把它们转换成双BCD码。在需要显示时,再把它们分解成8字节单BCD码供显示。
②文件生成日期。占用4字节,按照双BCD码的格式存储,如20H、04H,03H、20H则表示2004年3月20日。日期可由键盘输入或通过时钟芯片获取。
③文件首地址。指示在给该文件分配空间进,分配给它的第一个数据页的序号,即它对应的链表的第一个记录项的编号。
目录区共占用24页。由于每个文件 《AT24C512中数据的文件系统化管理(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/167885.html
(4)读操作
读操作有当前地址读、随机读、读串三种方式。其初始化过程基本与写操作相同,只是在设备选择字中的最低位要改成读而已。在当前地址读操作方式时,内部数据的地址将保持在最后的读写操作地址加1上,直到读到最后字节后又回到最开始的位置。而随机读操作之前先要向AT24C512写入一个字节地址,然后才能读。读串操作既可以是当前地址读,也可以是随机地址读。当单片机接收到一个数据字后,会回应一个应答信号。AT24C512在接收到应答信号后会将地址加1,接着输出下一个字节。当单片机接收到数据但不送应答信号时,读过程结束。
2文件系统构成
为了有效地管理AT24C512中的数据,笔者仿效PC机中的文件管理机制,为AT24C512构造了一个简单的文件系统。考虑到测控系统的实时性要求和硬件资源的有限性,采用了二级树形目录组织。
为了管理数据方便,把AT24C512的物理空间划分为1024个逻辑页,每页64字节。按照文件系统的需要,把AT24C512的全部空间划分为三部分:数据区,占用最后的960页;页面分配区
,占用中间的30页;目录区,占用前面的24页。
(1)数据区
AT24C512最后面的960页作为数据区,其序号从0开始编号。该区作为文件数据的存储区域,在存放文件数据时,从该区内分配若干页,每次存储一页。
(2)页面分配区
页面分配区记录了数据区每一页的分配情况。该区中每2字节组成一个记录项,共有960个记录项(30×64/2)。记录项从0开始编号,每一个记录项对应着数据区相应页的使用情况。
在实际应用中,一个文件的数据往往大于64字节,这样一个文件的数据区中需占用多个页。但随着文件的增删,数据区的空闲空间出现不连续的状况,因而数据区的分配并不能保证连续,而是根据当前数据区的使用情况来决定某一部分文件内容应该放在哪一页上。为了把这些分散的数据有机连接起来,把记录项按照链表的形式组织起来,每个文件对应着一个链表,链表中每个结点为一个记录项,记录项的内容为下一个记录项的编号,最后一个记录项的内容为0FFFFH,表示链表结束。把这些记录项对应的页面连接起来就构成了一个文件的完整数据。
另外,如果记录项的内容为0EEEEH,表示其对应的数据页未分配。
(3)目录区
目录区用来存储文件的主要信息。根据这些信息可以知道文件名、文件生成的日期以及文件的数据在数据区中的存储首地址。文件目录项的结构如下:
①文件名。文件名由4字节双BCD码构成,在生成该文件时由键盘输入数字(硬件上键盘只提供了数字键)作为文件名,并由程序自动把它们转换成双BCD码。在需要显示时,再把它们分解成8字节单BCD码供显示。
②文件生成日期。占用4字节,按照双BCD码的格式存储,如20H、04H,03H、20H则表示2004年3月20日。日期可由键盘输入或通过时钟芯片获取。
③文件首地址。指示在给该文件分配空间进,分配给它的第一个数据页的序号,即它对应的链表的第一个记录项的编号。
目录区共占用24页。由于每个文件 《AT24C512中数据的文件系统化管理(第2页)》