CN105426317B - 一种往Flash中存放用户数据的存储方法及读取方法 - Google Patents
一种往Flash中存放用户数据的存储方法及读取方法 Download PDFInfo
- Publication number
- CN105426317B CN105426317B CN201510715503.1A CN201510715503A CN105426317B CN 105426317 B CN105426317 B CN 105426317B CN 201510715503 A CN201510715503 A CN 201510715503A CN 105426317 B CN105426317 B CN 105426317B
- Authority
- CN
- China
- Prior art keywords
- data
- user
- size
- length
- flash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及一种往Flash中存放用户数据的存储方法及读取方法,其特征在于:将要存储的长度固定的N个用户数据打包成数据包,每个数据包从前到后依次包括帖头、N个用户数据和校验码,数据包在Flash中的存储方式是按顺序存储的。本发明采用的是一次性擦除一个块,然后把块分区,按区依次存放用户数据,等存满了用户数据后,再次擦除,再次按区依次存放数据的方法,依此循环,大大提高了flash的使用寿命。与现有技术相比,本发明的优点在于:本发明提供的方法能很好避免用户数据存储存在偶发性丢失或者避免存储单元提前失效、还能正确快速识别最后一次存储的用户数据。
Description
技术领域
本发明涉及一种往Flash中存放用户数据的存储方法及读取方法。
背景技术
家电控制板常常需要保存一些用户数据,比如说控制目标温度、工作模式等等。早期都用EEPROM来储存用户数据,EEPROM具有存储速度快,重复擦写次数多(高达100万次)的优点,但是价格昂贵。随着MCU工艺技术的发展,MCU的ROM(以下简称Flash)空间越来越大,而且制作成本低廉。Flash的缺点是擦除速度慢,重复擦写的次数少,绝大多数都在1万次以下。因为Flash空间大,这恰恰拟补擦写次数少的问题;比如将2byte的用户数据存储到2K的Flash空间里,就能写1000万次(2k*1万/2)。由于Flash便宜(MCU自带的ROM空间,产品控制程序用不完部分可以用来做用户数据存储),很多设计工程师为了节约成本开始用Flash做用户数据存储,但是经过实践,发现有用户数据存储存在偶发性丢失,设计出来的产品也偶然遭到用户的投诉;也有些在用户使用一两年后,存储永久失效,造成产品批量问题。诸多原因都可以引起存储不良和失效:很多工程师采用擦除一次,保存一次的方法,这样严重影响了Flash的使用寿命(只能擦除1万次),在用户使用一段时间后存储失效;还有些工程师采用开环存储,没有闭环验证过程,保存的数据是否正确没有得到验证,得出来的数据有可能是错误的数据;也有些工程师对同一个空间只保存一次,由于MCU内部增压电路可能受干扰,出现瞬间烧录电压过低时,单次烧录无法确保对Flash单元烧录成功;更重要的是,Flash空间存在“坏道”(部分存储空间坏了),很多工程师不懂得如何识别和避开“坏道”。没有正确的数据保存,正确的数据读取就无从谈起。正是这些原因,使得绝大部分工程师至今还在使用外部EEPROM做数据保存,造成了极大的资源浪费。
发明内容
本发明所要解决的技术问题是针对上述现有技术提供一种往Flash中存放用户数据的存储方法及读取方法,该方法能很好避免用户数据存储过程中数据偶发性丢失的问题;该方法能很好解决用户数据存储过程中数据Flash使用时间不长的问题;该方法能正确的识别和避开“坏道”;该方法还能在众多已经保存的用户数据中正确识别最后一次存储的用户数据。
本发明解决上述技术问题所采用的第一种技术方案为:一种往Flash中存放用户数据的存储方法及读取方法,用于将电器终端控制板需要保存的具有固定长度的用户数据存放至电器终端控制板中单片机自带的Flash空间中,其特征在于:将要存储的长度固定的N个用户数据按照以下方式打包成数据包,每个数据包从前到后依次包括帖头、N个用户数据和校验码;将单片机自带的Flash空间中的空闲部分按照地址顺序分为若干存储块,不同的存储块块保存不同类型的数据,对于数据单一的情况,可以只分1个存储块,再把其中的存储块按数据包的长度分若干区;
前述打包后的数据包往Flash中以区为单位按循序依次存放,其存储方法为:
首先定义一个数组变量user_data[data_size],其中data_size=帧头长度+用户数据长度N+校验码长度,单位byte,使user_data[0]=帖头,然后把长度固定的N个用户数据保存到user_data[1]~user_data[N]中,N=data_size-2,user_data[data_size-1]=校验码;再定义一个指向const的指针unsigned char const*write_addr,使Write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对的数据包存储前先对存储块a按循序以区为单位来查“空”,查空“空”,只要对每个区的帧头查询即可,而帧头刚好是每个区的首地址,按循序查到第一个“空”的区首地址后(即该区的帧头为“空”),开始写入打包好的数据包,待写数据的操作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,则执行再次写入操作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,最多允许更换X个区执行写入操作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦“空”后的值为0xff;
步骤1、使P=block_a,block_a为存储块a的首地址;
步骤2、判断P是否小于block_a_end,block_a_end为存储块的尾地址,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]==帖头,且P[data_size]==0xff?如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、求P[0]~P[data_size-2]的校验码;
步骤5、判断P[data_size-1]是否等于校验码?如是执行步骤6,如不是,初始化用户数据,置保存用户数据标志位=true,结束;
步骤6、把用户数据调出来,保存至RAM中,结束。
本发明解决上述技术问题所采用的第二种技术方案为:一种往Flash中存放用户数据的存储方法及读取方法,用于将电器终端控制板需要保存的可变长度用户数据存放至电器终端控制板中单片机自带的Flash空间中,其特征在于:将要存储的长度不固定的M个用户数据按照以下方式打包成数据,M为大于0的自然数,每个数据包从前到后依次包括帖头、N个用户数据、预留字长度Y、帧尾和校验码;Y大于等于0,数据包的总长度data_size=预定的可能出现的最长用户数据个数N+3,N大于等于M,即Y=data_size-(N+3);将单片机自带的Flash空间中的空闲部分按照地址顺序分为若干存储块,不同的块保存不同类型的数据,对于数据单一的情况,只分一个存储块,再把其中1个存储块按长度data_size分若干区;
前述打包后的数据包往Flash中存放的存储方法为:
首先定义一个数组变量user_data[data_size],其中data_size=帧头长度+N+预留字长度Y+帧尾长度+校验码长度,即data_size>=(N+3),单位byte,使user_data[0]=帖头,然后把长度为M的用户数据保存到user_data[1]~user_data[N]中,如果data_size大于N+3则长度为Y的预留字:user_data[N+1]~user_data[data_size-3]都清零;如果data_size等于N+3,则预留字长度Y=0,user_data[data_size-2]=帖尾,user_data[data_size-1]=校验码;再定义一个指向const的指针unsigned char const*write_addr,使Write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对的数据包存储前先对存储块a按循序以区为单位来查“空”,查空“空”,只要对每个区的帧头查询即可,而帧头刚好是每个区的首地址,按循序查到第一个“空”的区首地址后(即该区的帧头为“空”),开始写入打包好的数据包,待写数据的操作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,则执行再次写入操作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,最多允许更换X个区执行写入操作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦空后的值为0xff;
步骤1、使P=block_a,block_a为存储块a的首地址;
步骤2、判断P是否小于block_a_end,block_a_end为存储块a的尾地址,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]==帖头,且P[data_size]==0xff?如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、判断P[data_size-2]==帖尾?如是,执行步骤5,如不是,执行步骤7;
步骤5、求P[0]~P[data_size-2]的校验码;
步骤6、判断P[data_size-1]是否等于校验码?如是执行步骤8,如不是,执行步骤7;
步骤7、初始化用户数据,置保存用户数据标志位=true,结束;
步骤8、把用户数据调出来,保存至RAM中,结束。
由于数据包的长度是data_size,故数据包在Flash中保存的偏移地址是从0到(data_size-1),所以&P[0]和&P[data_size]是两个不同的数据包保存区的首地址,如果这两个区都保存着用户数据,那么会出现P[0]=P[data_size]=帖头;如果前一个区是用户数据,后一个区是“空”(“空”=0xff),那么就会出现P[0]=帖头,P[data_size]=0xff,这时前一个区正是用户最后一次保存的数据;就这样,帖头起到了快速查阅最后一次保存的数据包的位置。
本发明采用的是一次性擦除一个块,然后把块分区,按区依次存放用户数据,等存满了用户数据后,再次擦除,再次按区依次存放数据的方法,依此循环,大大提高了flash的使用寿命。与现有技术相比,本发明的优点在于:本发明提供的方法能很好避免用户数据存储存在偶发性丢失或者避免存储单元提前失效、还能正确快速识别最后一次存储的用户数据。
附图说明
图1为本发明实施例中Flash存储空间示意图;
图2为本发明实施例中用户数据进行读取方法流程图;
图3为本发明实施例中用户数据进行保存方法流程图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
实施例一
本实施例中往Flash中存放用户数据的存储方法及读取方法,用于将电器终端控制板需要保存的具有固定长度的用户数据存放至电器终端控制板中单片机自带的Flash空间中,将要存储的长度固定的N个用户数据按照以下方式打包成数据,每个数据包从前到后依次包括帖头、N个用户数据和校验码;当用户用户数据长度不固定时,每个数据包从前到后依次包括帖头、M个用户数据、预留字、帖尾和校验码;M在预定范围内变化,M小于等于预定的最长用户数据的长度N,帖头或帖尾可以用做数据链的完整性判断,我们约定存储的数据包长度都是固定的,所以我们约定1byte长度帖头,1byte长度帖尾,帖头和帖尾内容由用户自己定义,也可以只要其中一个,校验码采用循环冗余校验码CRC,采用8位就可以了,多项式采用X8+X4+X3+1;在应用中为了提高效率CRC采用查表方式求得;将单片机自带的Flash空间中的空闲部分按照地址顺序分为若干存储块,参见图1所示;
对于数据包为帖头、固定长度N个用户数据和校验码格式,前述打包后的数据包往Flash中存放的存储方法为:
首先定义一个数组变量user_data[data_size],其中data_size=帧头长度+用户数据长度N+校验码长度,单位byte,使user_data[0]=帖头,然后把长度固定的N个用户数据保存到user_data[1]~user_data[N]中,N=data_size-2,user_data[data_size-1]=校验码;再定义一个指向const的指针unsigned char const*write_addr,使write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对新的数据包进行存储前先对存储块a按区来查空,查空时,只要对每个区的帧头查询即可,而帧头刚好是每个区的首地址,当查到第一个空的区首地址后,即该区的帧头为空,开始写入打包好的数据包,待写数据的操作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,则执行再次写入操作;如果写入动作执行了M次仍未成功,则查找下一个空区,再执行上述写入操作,最多允许更换X个区执行写入操作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;本实施例中,M=5,X=50;
具体步骤为:
步骤(1)、判断是否允许调用用户数据存储函数,即:判断用户数据保存标志位bsave=true?若是,执行步骤(2),若不是,结束;
步骤(2)、令user_data[0]=帖头;然后再把用户数据保存到user_data[1]~user_data[N]中;
步骤(3)、求数据包的校验码;
步骤(4)、令user_data[data_size-1]=校验码;
步骤(5)、令write_addr=block_a,block_a为存储块a首地址,block_a_end为存储块a的尾地址;
步骤(6)、换区计数器y清零,即y=0;
步骤(7)、判断y<50?若是,执行步骤(8),若不是结束;
步骤(8)、判断write_addr<(block_a_end-data_size)?若是,执行步骤(9),若不是,执行步骤(10);
步骤(9)、判断write_addr指向的区为空?如是,执行步骤(10),如不是,将地址指针指向下一个区,即write_addr+=data_size,然后执行步骤(8);
步骤(10)、判断(write_addr==block_a)?,
或者(write_addr>(block_a_end-data_size)))?,如是,执行步骤(11),若不是,执行步骤(13);
步骤(11)、擦除block_a~block_a_end区;即首次保存用户数据或者地址溢出时将存储块a擦“空”一次;
步骤(12)、令write_addr=block_a;
步骤(13)、将同一个区写入次数n清零,即n=0;
步骤(14)、判断同一区写入的次数n是否小于5,如是,执行步骤(15),如不是,令y++,write_addr+=data_size,然后返回步骤(7);
步骤(15)、将数组user_data[]写入write_addr指向的Flash空间中;
步骤(16)、验证是否写入成功,如是,结束,如不是,令n++,返回步骤(14)。
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦“空”后的值为0xff;
步骤1、使P=block_a;
步骤2、判断P是否小于block_a_end,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]==帖头,且P[data_size]==0xff?如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、求P[0]~P[data_size-2]的校验码;
步骤5、判断P[data_size-1]是否等于校验码?如是执行步骤6,如不是,初始化用户数据,置保存用户数据标志位=true,结束;
步骤6、把用户数据调出来,保存至RAM中,结束。
对于数据包为帖头、可变长度用户数据M、帖尾和校验码格式,前述打包后的数据包往Flash中存放的存储方法为:
首先定义一个数组变量user_data[data_size],data_size=预定的最大的用户个数N+3,使user_data[0]=帖头,然后把长度可变的M个用户数据保存到user_data[1]~user_data[N]中,user_data[data_size-2]=帖尾,user_data[data_size-1]=校验码,其余的清零;再定义一个指向const的指针unsigned char const*write_addr,使Write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对新的数据包进行存储前先对存储块a按区来查“空”,查到第一个首地址最接近存储块a的首地址的“空”区后,开始写入打包好的数据包,待写数据的动作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,执行再次写入动作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,最多允许更换X个区执行写入动作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;本实施例中,M=5,X=50;具体写入操作原理与上述详细步骤相同;
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦空后的值为0xff;
步骤1、使P=block_a;
步骤2、判断P是否小于block_a_end,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]==帖头,且P[data_size]==0xff?如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、判断P[data_size-2]==帖尾?如是,执行步骤5,如不是,执行步骤7;
步骤5、求P[0]~P[data_size-2]的校验码;
步骤6、判断P[data_size-1]是否等于校验码?如是执行步骤8,如不是,执行步骤7;
步骤7、初始化用户数据,置保存用户数据标志位=true,结束;
步骤8、把用户数据调出来,保存至RAM中,结束。
Claims (2)
1.一种往Flash中存放用户数据的存储和读取方法,用于将电器终端控制板需要保存的具有固定长度的用户数据存放至电器终端控制板中单片机自带的Flash空间中,其特征在于:将要存储的长度固定的N个用户数据按照以下方式打包成数据包,每个数据包从前到后依次包括帖头、N个用户数据和校验码;将单片机自带的Flash空间中的空闲部分按照地址顺序分为若干存储块,不同的块保存不同类型的数据,对于数据单一的情况,只分一个存储块,再把其中1个存储块按长度data_size分若干区;
前述打包后的数据包往Flash中存放的存储方法为:
首先定义一个数组变量user_data[data_size],其中data_size=帧头长度+N+校验码长度,单位byte,使user_data[0]=帖头,然后把长度固定的N个用户数据保存到user_data[1]~user_data[N]中,N=data_size-2,user_data[data_size-1]=校验码;再定义一个指向const的指针unsigned char const*write_addr,使Write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对新的数据包进行存储前先对存储块a按区来查“空”,查“空”时,只要对每个区的帧头查询即可,而帧头刚好是每个区的首地址,当查到第一个“空”的区首地址后,即该区的帧头为“空”,开始写入打包好的数据包,待写数据的操作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,则执行再次写入操作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,最多允许更换X个区执行写入操作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦空后的值为0xff;
步骤1、使P=block_a,block_a为存储块a的首地址;
步骤2、判断P是否小于block_a_end,block_a_end为存储块a的尾地址,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]是否等于帖头,且P[data_size]是否等于0xff,如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、求P[0]~P[data_size-2]的校验码;
步骤5、判断P[data_size-1]是否等于校验码,如是执行步骤6,如不是,初始化用户数据,置保存用户数据标志位=true,结束;
步骤6、把用户数据调出来,保存至RAM中,结束。
2.一种往Flash中存放用户数据的存储和读取方法,用于将电器终端控制板需要保存的可变长度用户数据存放至电器终端控制板中单片机自带的Flash空间中,其特征在于:将要存储的长度可变的M个用户数据按照以下方式打包成数据,M为大于0的自然数,每个数据包从前到后依次包括帖头、N个用户数据、预留字、帖尾和校验码,Y大于等于0,数据包的长度=预定的最大用户数据个数N+3,N大于等于M,Y=data_size-(N+3),最后凑成一个固定长度的数据包;将单片机自带的Flash空间中的空闲部分按照地址顺序分为若干存储块,不同的块保存不同类型的数据,对于数据单一的情况,只分一个存储块,再把其中的存储块按长度data_size分若干区;
前述打包后的数据包往Flash中存放的存储方法为:
首先定义一个数组变量user_data[data_size],其中data_size=帧头长度+N+预留字长度Y+帧尾长度+校验码长度,即data_size>=(N+3),单位byte,使user_data[0]=帖头,然后把长度为M的用户数据保存到user_data[1]~user_data[N]中,如果data_size大于N+3则长度为Y的预留字:user_data[N+1]~user_data[data_size-3]都清零;如果data_size等于N+3,则预留字长度Y=0,user_data[data_size-2]=帖尾,user_data[data_size-1]=校验码;再定义一个指向const的指针unsigned char const*write_addr,使Write_addr指向存储块a首地址,将存储块a的存储空间以data_size为长度分为若干区,对的数据包存储前先对存储块a按循序以区为单位来查“空”,查空“空”,只要对每个区的帧头查询即可,而帧头刚好是每个区的首地址,按循序查到第一个“空”的区首地址后(即该区的帧头为“空”),开始写入打包好的数据包,待写数据的操作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,则执行再次写入操作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,最多允许更换X个区执行写入操作,如果X个区都无法写入成功,则认为存储块a损坏,退出存储操作;
对Flash中存放的用户数据进行读取的读取方法为:
设置一个指向const的指针unsigned char const*P,设单片机自带的Flash空间擦空后的值为0xff;
步骤1、使P=block_a,block_a为存储块a的首地址;
步骤2、判断P是否小于block_a_end,block_a_end为存储块a的尾地址,如是,执行步骤3,如不是,结束;
步骤3、判断P[0]是否等于帖头,且P[data_size]是否等于0xff,如是,执行步骤4,如不是,令P+=data_size,并返回步骤2;
步骤4、判断P[data_size-2]是否等于帖尾,如是,执行步骤5,如不是,执行步骤7;
步骤5、求P[0]~P[data_size-2]的校验码;
步骤6、判断P[data_size-1]是否等于校验码,如是执行步骤8,如不是,执行步骤7;
步骤7、初始化用户数据,置保存用户数据标志位=true,结束;
步骤8、把用户数据调出来,保存至RAM中,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510715503.1A CN105426317B (zh) | 2015-10-29 | 2015-10-29 | 一种往Flash中存放用户数据的存储方法及读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510715503.1A CN105426317B (zh) | 2015-10-29 | 2015-10-29 | 一种往Flash中存放用户数据的存储方法及读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105426317A CN105426317A (zh) | 2016-03-23 |
CN105426317B true CN105426317B (zh) | 2018-10-23 |
Family
ID=55504534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510715503.1A Active CN105426317B (zh) | 2015-10-29 | 2015-10-29 | 一种往Flash中存放用户数据的存储方法及读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426317B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629927A (zh) * | 2017-03-23 | 2018-10-09 | 惠尔丰(中国)信息系统有限公司 | 一种低内存打印机的内存的优化方法 |
CN107329693A (zh) * | 2017-06-09 | 2017-11-07 | 苏州贝艾尔净化科技有限公司 | 新风系统微控制器及其存取数据的方法 |
CN107463507B (zh) * | 2017-07-14 | 2020-05-08 | 惠州市天泽盈丰物联网科技股份有限公司 | 记录指针处理方法 |
CN108228095B (zh) * | 2017-12-15 | 2021-02-09 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于Flash进行实时信息记录的方法 |
CN112965919B (zh) * | 2021-03-24 | 2023-06-06 | 深圳友讯达科技股份有限公司 | 一种电能表数据分钟冻结方法、存储介质及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051522A (zh) * | 2006-04-04 | 2007-10-10 | 北京锐科天智科技有限责任公司 | 存储器使用寿命提高方法及硬件装置 |
CN102455973A (zh) * | 2010-10-19 | 2012-05-16 | 厦门华侨电子股份有限公司 | 一种利用Flash芯片剩余空间设置数据区擦写数据的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI233616B (en) * | 2004-05-06 | 2005-06-01 | Carry Computer Eng Co Ltd | Silicon storage media and controller thereof, controlling method thereof, and data frame based storage media |
-
2015
- 2015-10-29 CN CN201510715503.1A patent/CN105426317B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051522A (zh) * | 2006-04-04 | 2007-10-10 | 北京锐科天智科技有限责任公司 | 存储器使用寿命提高方法及硬件装置 |
CN102455973A (zh) * | 2010-10-19 | 2012-05-16 | 厦门华侨电子股份有限公司 | 一种利用Flash芯片剩余空间设置数据区擦写数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105426317A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105426317B (zh) | 一种往Flash中存放用户数据的存储方法及读取方法 | |
US8683113B2 (en) | Concurrently searching multiple devices of a non-volatile semiconductor memory | |
US7716396B1 (en) | Multi-reader multi-writer circular buffer memory | |
CN103440205B (zh) | 一种机顶盒数据存储方法及装置 | |
CN109597582A (zh) | 一种数据处理方法及相关设备 | |
CN105527508A (zh) | 一种评估智能卡芯片cpu抗干扰能力的测试装置及方法 | |
CN103514063B (zh) | 一种flash数据处理方法以及装置 | |
CN108762670A (zh) | 一种ssd固件中数据块的管理方法、系统及装置 | |
CN106528441B (zh) | 仿真eeprom的数据处理方法、装置及电子设备 | |
CN105094742B (zh) | 一种写数据的方法和设备 | |
CN110058819A (zh) | 基于可变缓存管理机制的主机命令处理方法和装置 | |
CN109933479B (zh) | 故障模拟与仿真方法以及相关设备 | |
JP4329937B2 (ja) | パーシスタントメモリに書き込む際のエラーを検出する方法および装置 | |
CN110727399A (zh) | 存储阵列管理方法及装置 | |
CN104375871A (zh) | 一种基于eMMC加速系统开机的方法和装置 | |
US9666290B2 (en) | Flash memory counter | |
CN105159601A (zh) | 一种提高Flash擦写寿命的方法 | |
CN103064656A (zh) | 通信终端中使用单分区Flash作为存储器的方法 | |
US8209475B2 (en) | Write timeout control methods for flash memory and memory devices using the same | |
CN109614349B (zh) | 一种基于绑定机制的缓存管理方法 | |
CN107608809B (zh) | 异常处理方法及装置 | |
US9293216B2 (en) | Semiconductor device and method of searching for erasure count in semiconductor memory | |
CN104778973B (zh) | 一种基于CPLD的外部flash数据存储接口应用方法 | |
CN103761191B (zh) | 一种非易失性存储器的固定数据格式读写方法 | |
CN115269447A (zh) | 闪存设备的数据读取方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 315327 Ningbo Province, Hangzhou Bay New District, the town of the East Yuan Xiang Village Industrial Park, No. two weft Road, No. 758 Applicant after: Zhejiang zhuoao Polytron Technologies Inc Address before: Two road 315327 Zhejiang province Andong town of Cixi City Industrial Zone No. 758 weft Applicant before: Ningbo ZuoAo Electronics Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |