1.一种flash数据的保存方法,其特征在于,包括以下步骤:配置A、B两个扇区,将每个扇区分为n组;
读取A和B扇区中同一组数据的有效标记值,根据两个扇区中同一组数据的有效标记值寻找上次数据记录的位置;
结合特定组的有效标记值判断无效扇区,擦除无效扇区的数据;
新数据由上次数据记录的位置的下一组写入;
所述根据两个扇区中同一组数据的有效标记值寻找上次数据记录的位置,具体包括以下步骤:读取A扇区和B扇区的第一组数据的有效标记值;
根据两个第一组数据的有效标记值寻找上次数据记录的位置;
A扇区第一组数据记为A1,B扇区第一组数据记为B1;
分为读取A1和B1内的有效标记值,A1的有效标记值记为X,B1的有效标记值记为Y,同时,有效标记值的数值为0xFF时表征该组数据无效,有效标记值的数值为0x7F时表征该组数据有效;
若X、Y都等于0xFF,则表征A扇区和B扇区的数据均无效,默认An或Bn为上次数据记录的位置,下次读取数据时读取An或Bn的数据,An为A扇区的最后一组数据,Bn为B扇区的最后一组数据;
若X、Y都等于0x7F,则须再读取An内的有效标记值Z,若Z等于0xFF,则上次数据记录的位置在A1;若Z不等于0xFF,则上次数据记录的位置在B1;
若X等于0xFF,Y等于0x7F,则从B扇区的最后一组数据往前读取,寻找第一个有效标记值为0x7F的组数据Bt即为上次数据记录的位置,Bt表示为B扇区第t组的数据;
若X等于0x7F,Y等于0xFF,则从A扇区的最后一组数据往前读取,寻找第一个有效标记值为0x7F的组数据At即为上次数据记录的位置,At表示为A扇区第t组的数据。
2.根据权利要求1所述的flash数据的保存方法,其特征在于,还包括以下步骤:根据上次数据记录的位置,读取其下一组的数据;
判断读取的该组数据是否存在;
若数据存在,则表征上次掉电导致数据写入失败,并记录上次写入失败标记。
3.根据权利要求1所述的flash数据的保存方法,其特征在于,所述结合特定组的有效标记值判断无效扇区,擦除无效扇区的数据,具体包括以下步骤:当X、Y都等于0x7F,则须再读取An内的有效标记值Z,若Z等于0xFF,则擦除B扇区内所有数据;若Z不等于0xFF,则擦除A扇区内所有数据。
4.根据权利要求1或3所述的flash数据的保存方法,其特征在于,还包括以下步骤:判断上次掉电中是否存在擦除扇区失败;
若上次数据记录的位置在A扇区,则读取Bn的有效标记值;当Bn的有效标记值不等于
0xFF时,则重新擦除B扇区;
若上次数据记录的位置在B扇区,则读取An的有效标记值;当An的有效标记值不等于
0xFF时,则重新擦除A扇区。
5.根据权利要求2所述的flash数据的保存方法,其特征在于,还包括以下步骤:新数据写入操作时,解析上次写入失败标记的值;
若上次写入失败标记表征为失败时,则需跳过上次写入操作失败的组别;
若上次写入失败标记表征为成功时,则正常判断写入。
6.根据权利要求5所述的flash数据的保存方法,其特征在于,所述若上次写入失败标记表征为失败时,则需跳过上次写入操作失败的组别,具体包括以下步骤:若读取的组别为扇区的最后一组,则擦除另一扇区的数据,写入时,切换至刚擦除的扇区的第一组进行写入,写入完成后擦除之前写满的扇区;
若读取的组别为扇区的倒数第二组,则写入时,切换至另一扇区的第一组进行写入,写入完成后擦除之前写满的扇区;
若读取的组别为除上述两种情况外的任意一组,则写入读取组别的下一组;
除上述情况外,所述若上次写入失败标记表征为成功时,则正常判断写入,具体包括以下步骤:若读取的组别为扇区的最后一组,则写入时,切换至另一扇区的第一组进行写入,写完后擦除之前写满的扇区;
若读取的组别是不为最后一组的任意一组,则写入读取组别的下一组。
7.一种flash数据的保存系统,其特征在于,包括:配置模块,用于配置A、B两个扇区,将每个扇区分为n组;
寻找模块,用于读取A和B扇区中同一组数据的有效标记值,根据两个扇区中同一组数据的有效标记值寻找上次数据记录的位置;
所述根据两个扇区中同一组数据的有效标记值寻找上次数据记录的位置,具体包括以下步骤:读取A扇区和B扇区的第一组数据的有效标记值;
根据两个第一组数据的有效标记值寻找上次数据记录的位置;
A扇区第一组数据记为A1,B扇区第一组数据记为B1;
分为读取A1和B1内的有效标记值,A1的有效标记值记为X,B1的有效标记值记为Y,同时,有效标记值的数值为0xFF时表征该组数据无效,有效标记值的数值为0x7F时表征该组数据有效;
若X、Y都等于0xFF,则表征A扇区和B扇区的数据均无效,默认An或Bn为上次数据记录的位置,下次读取数据时读取An或Bn的数据,An为A扇区的最后一组数据,Bn为B扇区的最后一组数据;
若X、Y都等于0x7F,则须再读取An内的有效标记值Z,若Z等于0xFF,则上次数据记录的位置在A1;若Z不等于0xFF,则上次数据记录的位置在B1;
若X等于0xFF,Y等于0x7F,则从B扇区的最后一组数据往前读取,寻找第一个有效标记值为0x7F的组数据Bt即为上次数据记录的位置,Bt表示为B扇区第t组的数据;
若X等于0x7F,Y等于0xFF,则从A扇区的最后一组数据往前读取,寻找第一个有效标记值为0x7F的组数据At即为上次数据记录的位置,At表示为A扇区第t组的数据;
擦除模块,用于结合特定组的有效标记值判断无效扇区,擦除无效扇区的数据;及写入模块,用于新数据由上次数据记录的位置的下一组写入。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。