发明名称 一种嵌入式系统中基于使用描述表的数据操作方法
摘要 本发明采用一种嵌入式系统中基于使用描述表的数据操作方法,该方法是利用FLASH、FRAM和SDRAM(或者DDR)三种存储器构成的一个嵌入式系统内存完成的,该方法包括步关键数据初始化、新增关键数据操作、删除关键数据、关键数据恢复四个步骤。采用本发明所述的技术方案优点在于:根据FRAM中的关键数据使用描述表的状态来把关键数据增加到FLASH中或者从FLASH中删除,由于采用先备份数据再增加或删除数据的操作方法,即便在数据操作时系统出现异常,系统也可以恢复到数据操作前的状态,从而保证了关键数据的安全性和系统的可靠性。
申请公布号 CN102981926A 申请公布日期 2013.03.20
申请号 CN201110259660.8 申请日期 2011.09.05
申请人 上海华魏光纤传感技术有限公司 发明人 黄正
分类号 G06F11/14(2006.01)I;G06F12/02(2006.01)I 主分类号 G06F11/14(2006.01)I
代理机构 代理人
主权项 一种嵌入式系统中基于使用描述表的数据操作方法,所述数据操作方法是利用FLASH、FRAM和SDRAM三种存储器构成的一个嵌入式系统内存完成的,其特征在于:该方法包括以下四个步骤:步骤一:关键数据初始化在系统设计时,把FLASH划分成如关键数据区、记录数据区、操作系统区、数据库区等多个空间,每个区包括至少一个SECTOR;进一步的,对FLASH所有的SECTOR进行编号,特别地,保留一个SECTOR,用来作为数据转储(数据备份)操作;进一步的,把关键数据区划分为N个关键数据空间子块,每个关键数据空间子块的大小为一条关键数据量的大小;进一步的,对所述关键数据空间子块进行编号,编号依次从1、2...到N;在FRAM里面建立一张关键数据使用描述表,开辟一个空间作为关键数据转储操作的标记区;进一步的,所述关键数据使用描述表用以描述FLASH中每条关键数据的使用情况,如果已经有有效数据写入的,就是有效的,反之如果是空白的,则是无效的(不可用);进一步的,所述关键数据使用描述表用位(bit)表示,每个位对应一条关键数据;当某一条关键数据已经登记(录入)时,表明这条关键数据已经占用了某个FLASH关键数据空间子块,这时在关键数据使用描述表相应的位置置1;否则,那些尚未被登记(即无效)的关键数据空间子块,其关键数据使用描述表对应的位置则置0;进一步的,所述关键数据转储操作的标记区中存放两个字节型的标记A和B,以及发生转储操作的FLASH的SECTOR编号;在SDRAM中开辟一个空间,空间大小跟FLASH中关键数据区大小一样,且FRAM中关键数据使用描述表中的每一位都对应着FLASH和SDRAM中关键数据区的一个关键数据空间子块,FLASH的每一个关键数据空间子块和SDRAM中的每一个关键数据空间子块一一对应;步骤二:新增关键数据当一条新的关键数据准备好之后,先读取FRAM中的关键数据使用描述表,根据这张表找出FLASH中任何一个尚未被使用的关键数据空间子块i,并可算出其所在FLASH中的扇区号,假设其扇区号为k;然后执行关键数据增加操作:第一步,擦除FLASH中用于备份的SECTOR;第二步,设置FRAM中的转储标记,其中设置A=0,B=1,SECTOR编号=k;第三步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM,然后把这部分数据写入FLASH中用于备份的SECTOR中,并做校验,这一步叫做转储;第四步,如果转储成功,则设置FRAM中的转储标记,其中设置A=1,B=1;如果系统发生异常,则FRAM中的转储标记A=0,B=1不会改变;第五步,在SDRAM的关键数据区中找到编号为i关键数据子块,把要增加的关键数据写入这个关键数据子块空间;第六步,设置FRAM中的转储标记,其中设置A=1,B=0;第七步,擦除FLASH中编号为k的SECTOR;第八步,把SDRAM中与FLASH编号为k的SECTOR相对应的数据块(一个SECTOR大小的数据块)写入FLASH中编号为k的SECTOR中,并做校验;第九步,如果第八步写入成功,则设置FRAM中的转储标记,其中设置A=1,B=1;如果系统发生异常,则设置FRAM中的转储标记A=1,B=0,SECTOR编号=k,不会改变;第十步,设置FRAM中的关键数据使用描述表的第i位为1,表明FLASH中与此相对应的关键数据空间子块已经有效;步骤三:删除关键数据当要删除一条已经登记(已存在于FLASH中)的关键数据时,先找出这条关键数据在FLASH中的位置,例如其位置在编号为k的SECTOR中,所在的关键数据空间子块编号为i;删除操作如下:第一步,设置FRAM中的转储标记,其中设置A=0,B=1,SECTOR编号=k;第二步,擦除FLASH中用于备份的SECTOR;第三步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM,然后把这部分数据写入FLASH中用于备份的SECTOR中,并做校验,完成转储;第四步,如果转储成功,则设置FRAM中的转储标记,其中设置A=1,B=1;如果系统发生异常,则FRAM中的转储标记A=0,B=1不会改变;第五步,在FRAM中的关键数据使用描述表里找出与要删除的编号为 i的关键数据空间子块相对应的位置,设置该位为0;步骤四:关键数据恢复若系统在新增关键数据操作和删除关键数据操作时发生异常故障,导致关键数据丢失,待系统重新上电或者复位后,关键数据恢复步骤如下:第一步,读取备份SECTOR的数据到SDRAM中,获得备份数据,此时FRAM中的转储标记没有改变,即A=1,B=0,SECTOR编号=k;第二步,擦除FLASH中编号为k的SECTOR;第三步,把SDRAM中由上述第一步获取的备份数据写入FLASH中编号为k的SECTOR中,并做校验;第四步,如果第三步写入成功,则设置FRAM中的转储标记,A=1,B=1;如果系统发生异常,则FRAM中的转储标记A=1,B=0,SECTOR编号=k,不会改变。
地址 201700 上海市青浦区白鹤镇赵中路31弄2号云峰大楼701室B