CN109558092A - 一种芯片内部flash存储方法及装置 - Google Patents
一种芯片内部flash存储方法及装置 Download PDFInfo
- Publication number
- CN109558092A CN109558092A CN201811543108.XA CN201811543108A CN109558092A CN 109558092 A CN109558092 A CN 109558092A CN 201811543108 A CN201811543108 A CN 201811543108A CN 109558092 A CN109558092 A CN 109558092A
- Authority
- CN
- China
- Prior art keywords
- flash
- sequence number
- function
- data
- program function
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种芯片内部flash存储方法,包括分别为flash内的各个程序函数添加对应的序列号并保存;接收flash操作指令后,确定flash操作指令对应的各个程序函数的序列号及执行顺序;flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,停止执行flash操作指令;若符合,执行待执行的程序函数;判断当前是否存在待执行的程序函数,若存在,重复上述检测操作,若不存在,flash操作指令执行完毕。本发明为程序函数标号来保证每步执行的程序函数均正确执行,尽可能避免了flash受到干扰时的执行错误,提高芯片内部flash的抗干扰能力及可靠性。本发明还公开了一种基于上述方法的装置、包含内部flash存储器的芯片及计算机可读存储介质。
Description
技术领域
本发明涉及flash存储器技术领域,特别是涉及一种芯片内部flash存储方法、装置、包含内部flash存储器的芯片及计算机可读存储介质。
背景技术
Flash存储器存储区别于外部存储器,成本较低。目前很多MCU开放了内部FLASH操作,针对不需要大量存储数据的方案,选择内部FLASH存储来减少产品成本。
但是由于同时flash内部数据存储的抗干扰性能不及外部存储器,特别是当外部环境比较恶劣时,MCU会复位和飞走。其中,程序飞走指的是程序的PC指针会指向代码区的任何地方,包括无效地址,使得发生错误的执行流程;程序复位也是同理,程序的PC指针会指向最初程序执行的地址,也会导致发生错误的执行流程。而当发生错误的执行流程时,flash程序执行会出现错误,使得出现数据存储错误或者擦写错误等情况,影响后续flash的正常使用;flash的抗干扰性差,使用的可靠性低。
因此,如何提供一种可靠性高的芯片内部flash存储方法、装置、设备及计算机可读存储介质是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种芯片内部flash存储方法,为程序函数标号来保证每步执行的程序函数均正确执行,从而尽可能避免了flash受到干扰时的执行错误,提高芯片内部flash存储器的抗干扰能力以及可靠性;本发明的另一目的是提供一种基于上述方法的装置、包含内部flash存储器的芯片及计算机可读存储介质。
为解决上述技术问题,本发明提供了一种芯片内部flash存储方法,包括:
分别为flash内的各个程序函数添加对应的序列号并进行保存;
接收flash操作指令后,确定所述flash操作指令对应的各个程序函数的序列号及执行顺序;
在所述flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行所述flash操作指令;若符合,则执行所述待执行的程序函数;
判断当前是否存在待执行的程序函数,若存在,重复上述检测操作,若不存在,所述flash操作指令执行完毕。
优选地,所述程序函数包括写入函数、擦除函数和读取函数中的任一种或几种的组合。
优选地,执行相应的程序函数对所述flash进行数据写入时的过程具体为:
查询当前待写入数据的一组扇区中的最近一个空白区域地址;
将所述待写入数据写入所述最近一个空白区域地址;
读取写入的数据,将所述写入的数据与所述待写入数据进行比对,若相同,则完成所述待写入数据的写入;
若不同,判断当前所述待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,则继续将所述待写入数据写入下一个空白区域地址,并重复上述比对操作。
优选地,所述确定所述flash操作指令对应的各个程序函数的序列号及执行顺序之后,还包括:
依据各个所述程序函数的序列号及执行顺序得到待执行序列号数组;
所述执行所述待执行的程序函数之后,还包括:记录当前执行的程序函数的序列号;
判断当前不存在待执行的程序函数之后,还包括:
将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;
将所述执行序列号数组与所述待执行序列号数组进行比对,若相同,则所述flash操作指令执行成功,若不同,则所述flash操作指令执行失败。
为解决上述技术问题,本发明还提供了一种芯片内部flash存储装置,包括:
序列号设置模块,用于分别为flash内的各个程序函数添加对应的序列号并进行保存;
函数执行模块,用于接收flash操作指令后,确定所述flash操作指令对应的各个程序函数的序列号及执行顺序;
序列号检测模块,用于在所述flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行所述flash操作指令;若符合,触发函数执行模块;
所述函数执行模块,用于执行所述待执行的程序函数;
执行判断模块,用于判断当前是否存在待执行的程序函数,若存在,重复触发所述序列号检测模块,若不存在,所述flash操作指令执行完毕。
优选地,所述函数执行模块包括写入单元、擦除单元和读取单元中的任一种或几种的组合。
优选地,所述写入单元具体用于:
查询当前待写入数据的一组扇区中的最近一个空白区域地址;将所述待写入数据写入所述最近一个空白区域地址;读取写入的数据,将所述写入的数据与所述待写入数据进行比对,若相同,则完成所述待写入数据的写入;若不同,判断当前所述待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,则继续将所述待写入数据写入下一个空白区域地址,并重复上述比对操作。
优选地,所述函数执行模块还用于依据各个所述程序函数的序列号及执行顺序得到待执行序列号数组;
所述函数执行模块还用于:在执行所述待执行的程序函数之后,记录当前执行的程序函数的序列号;
所述执行判断模块还用于:在判断当前不存在待执行的程序函数之后,将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;将所述执行序列号数组与所述待执行序列号数组进行比对,若相同,则所述flash操作指令执行成功,若不同,则所述flash操作指令执行失败。
为解决上述技术问题,本发明还提供了一种包含内部flash存储器的芯片,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如以上任一项所述的芯片内部flash存储装置方法的步骤。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上任一项所述的芯片内部flash存储装置方法的步骤。
本发明提供了一种芯片内部flash存储方法,预先对flash内的程序函数均进行了标号并进行了序列号保存,当接收flash操作指令后,确定该操作指令对应的一系列程序函数的序列号及其执行顺序后,依次执行这些程序函数,并且每执行一个程序函数之前,均判断当前执行的程序函数的序列号与之前确定的执行顺序是否相符,若相符,表明当前并未受到干扰,程序函数未发生飞走或者复位,程序函数的PC指针指向正确的地址,故可以正常进行处理;若不相符,表明当前受到干扰,程序函数发生了飞走或者复位,程序函数的PC指针未指向正确的地址,因此,停止执行flash操作指令,避免出现操作错误的情况。可见,本发明通过为程序函数标号来保证每步执行的程序函数均正确执行,从而尽可能避免了flash受到干扰时的执行错误,提高了芯片内部flash存储器的抗干扰能力以及可靠性。本发明还提供了一种基于上述方法的装置、包含内部flash存储器的芯片及计算机可读存储介质。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种芯片内部flash存储方法的过程的流程图;
图2为本发明提供的另一种芯片内部flash写入方法的过程的流程图;
图3为本发明提供的一种flash写入方法的示意图;
图4为本发明提供的一种芯片内部flash存储装置的结构示意图。
具体实施方式
本发明的核心是提供一种芯片内部flash存储方法,为程序函数标号来保证每步执行的程序函数均正确执行,从而尽可能避免了flash受到干扰时的执行错误,提高芯片内部flash存储器的抗干扰能力以及可靠性;本发明的另一核心是提供一种基于上述方法的装置、包含内部flash存储器的芯片及计算机可读存储介质。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种芯片内部flash存储方法,参见图1所示,图1为本发明提供的一种芯片内部flash存储方法的过程的流程图;该方法包括:
步骤s10:分别为flash内的各个程序函数添加对应的序列号并进行保存;
步骤s11:接收flash操作指令后,确定flash操作指令对应的各个程序函数的序列号及执行顺序;
可以理解的是,每个flash操作指令会对应一系列的程序函数,比如说一系列的写入函数。每个程序函数会对应一个具体的操作,并且会包含一个指向代码区对应地址的PC指针。正常情况下,在flash操作指令对应的一系列程序函数开始执行后,这些程序函数需要按照特定的顺序依次对自身包含的PC指针所指向的对应地址进行相应的操作。但是在芯片受到外部干扰时,程序函数会发生复位和飞走,即程序函数的PC指针会指向错误的地址,例如,指向无效地址或者指向之前已经完成操作的地址等,这种情况不仅可能扰乱这一系列程序函数的执行顺序,并且由于部分程序函数会对错误的地址进行操作,也会影响该flash操作指令的整体操作效果,导致操作错误情况出现。例如,flash操作指令为写入指令时,可能会写入错误的地址;flash操作指令为擦除指令时,可能会擦除错误的数据;这样就会给芯片内部的flash存储器的正常工作带来影响。
本发明为了解决该问题,为每个程序函数设置了序列号,不同执行内容的程序函数对应不同的序列号,这里的执行内容包括执行操作的类型、待执行的数据以及PC指针对应的地址等;例如,对地址1进行写入数据的程序函数的序列号为A,对地址2进行写入数据的程序函数的序列号为B。由于flash操作指令所对应的一系列程序函数存在有特定的执行顺序,因此,依据理论情况下需要执行的各个程序函数的序列号以及其执行顺序,对各个程序函数的实际执行情况进行验证,即可判定实际运行时所执行的程序函数的内容及其执行顺序是否正确,从而保证了程序函数的正确执行,提高了flash的抗干扰能力和可靠性。本发明不限定序列号的类型以及设置方式。
步骤s12:在flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行flash操作指令;若符合,进入步骤s13;
举例来说,假如前述确定的执行顺序为ABCD,则在对第一个待执行的程序函数进行执行前,首先检测该程序函数的序列号是否为A,若是则正常执行该程序函数;之后继续判断下一个程序函数的序列号是否为B,若是,则正常执行该程序函数;之后重复上述操作。在此过程中,只要检测到有一次当前待执行的程序函数序列号不符合对应的前述确定的执行顺序,比如当前序列号为C,但是依据前述确定的执行顺序当前应该执行序列号为B的程序函数,这表明此时不符合之前确定的执行顺序,这种情况下,则停止执行flash操作指令。正常情况下当前待执行的程序函数的序列号需要符合前述所确定的执行顺序,若不符合,则表明当前待执行的程序函数可能为不应当执行的程序函数,即当前待执行的程序函数受到外部干扰的因素导致出现了复位或者飞走的情况,因此,此时flash操作指令不能再执行,从而避免flash内出现错误存储的数据或者被错误擦除的数据等情况,减少由于外部干扰导致的flash内部数据出现错误的情况。
需要注意的是,为了实现上述目的,在检测过程中首先需要得知当前待执行的程序函数为第几个执行,或者说需要知道当前待执行的程序函数之前,已经执行完毕的程序函数的个数。知道这些内容的目的,是为了确定当前待执行的程序函数需要与之前确定的执行顺序中的哪一个位置处的序列号进行对应,之后才方便进行序列号的比对。举例来说,如果当前待执行的程序函数为第二个进行执行的程序函数,则当前待执行的程序函数的序列号需要与前述确定的执行顺序中第二位的序列号进行比对,这样才能完成一个正确的比对操作得到正确的比对结果。
步骤s13:执行待执行的程序函数;
即依据程序函数的内容对程序函数包含的PC指针对应的地址进行相应的操作。
步骤s14:判断当前是否存在待执行的程序函数,若存在,返回步骤s12,若不存在,进入步骤s15;
步骤s15:flash操作指令执行完毕。
本发明提供了一种芯片内部flash存储方法,预先为flash内的程序函数均进行了标号并进行了序列号保存,当接收flash操作指令后,确定该操作指令对应的一系列程序函数的序列号及其执行顺序后,依次执行这些程序函数,并且每执行一个程序函数之前,均判断当前执行的程序函数的序列号与之前确定的执行顺序是否相符,若相符,表明当前并未受到干扰,程序函数未发生飞走或者复位,程序函数的PC指针指向正确的地址,故可以正常进行处理;若不相符,表明当前受到干扰,程序函数发生了飞走或者复位,程序函数的PC指针未指向正确的地址,因此,停止执行flash操作指令,避免出现操作错误的情况。可见,本发明通过为程序函数标号来保证每步执行的程序函数均正确执行,从而尽可能避免了flash受到干扰时的执行错误,提高了芯片内部flash存储器的抗干扰能力以及可靠性,将存储错误的概率降到最低。保证了flash长时间在外部干扰恶劣的环境下的正常操作。
其中,程序函数包括写入函数、擦除函数和读取函数中的任一种或几种的组合。每个flash操作指令所对应的程序函数的组合包含哪几种函数类型,以及每种函数类型程序函数的执行次数、执行顺序以及执行地址与实际应用时的需求有关,本发明均不作限定。
flash存储区别于EEPROM存储。EEPROM以字节为单位操作,擦写时间短,擦写寿命长(100万次),成本略高,而flash存储以扇区(页)为单位操作,擦写时间慢,擦写次数少(10万次),成本低。目前很多MCU开放了内部flash操作,针对不需要大量存储数据的方案,选择内部flash存储可减少产品成本。针对需要重复存储的数据,flash存储不像EEPROM存储,EEPROM可对同一地址重复擦写而不影响其他位置的数据,flash擦除时必须对整一个扇区擦除,这种情况下,一旦整个扇区被擦除后,后续数据则无法依据该扇区内的数据进行验证,导致后续数据的正确性无法保证。本发明为解决该问题。提供了以下实施例。参见图2和图3所示,图2为本发明提供的另一种芯片内部flash写入方法的过程的流程图;图3为本发明提供的一种flash写入方法的示意图。
在一种优选实施例中,执行相应的程序函数对flash进行数据写入时的过程具体为:
步骤s21:查询当前待写入数据的一组扇区中的最近一个空白区域地址,将待写入数据写入最近一个空白区域地址;
flash在进行数据写入时,是以扇区中的单元为单位进行写入的,在写入之前,扇区内的全部字节均为1,这些1可以变为0,但是0不可以再返变为1。因此,在二进制数组写入后,这些被写入的区域则无法再次被写入,即无法单独更改一个单元内的数据,只能依次按照顺序向下一个单元进行写入。举例来说,首先对单元1进行写入,下一次则对单元2进行写入,依此类推,直到整个扇区写满后,如果再想将数据写入该扇区的话,则需要将该扇区的全部数据进行擦除,擦除完毕后再次进行写入。
步骤s22:读取写入的数据,比对写入的数据与待写入数据是否相同,若相同,则完成待写入数据的写入;若不同,进入步骤s23;
可以理解的是,由于数据写入时可能会受到外部干扰导致写入的数据错误,但是flash又不能单独对一条数据进行擦除,因此,在实际写入的数据与待写入数据不同时,需要再次将该待写入数据继续写入下一空白单元。
步骤s23:判断当前待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,返回步骤s21,继续将待写入数据写入下一个空白区域地址。
可以理解的是,虽然理论上,在出现写入错误时,应该继续在下一空白单元继续写入,重复该过程,直至该待写入数据正确写入为止。但是,若flash持续受到外部干扰的话,可能会使得错误写入的数据占用太多flash单元,这样也会影响flash的正常使用。因此,本实施例设置了预设次数阈值,用来限定每个待写入数据仅能写入的次数,从而解决上述问题。当然,在其他实施例中,也可以不限定预设次数阈值,而是重复写入直到待写入数据正确写入为止。具体采用哪种方式本发明不作限定。另外,预设次数阈值的大小可以设置为3,当然本发明不限定预设次数阈值的具体数值。
另外,在其他实施例中,由于在数据存储时,许多时候存在连续数据的情况,这种情况下,后续写入的数据是否正确可以由之前写入的数据来进行验证。但是这种情况下,在将扇区进行擦除后再次写入时,此时若受到外部干扰,则再次写入的数据可能会由于干扰的原因导致是错误的,但是由于之前与该数据相关联的数据已经被擦除,因此,也无法对该数据是否正确进行验证,导致flash中所存储的数据受到外部干扰的影响,出现存储错误的情况,可靠性低。
为了解决该情况,本实施例在前述实施例的基础上,将flash中每两个扇区作为了一组,数据存储时在两个扇区内依次循环存储,当第一个扇区存满后,在同组中另一个扇区进行存储时,存储的数据可依据第一个扇区内的数据进行验证,从而保证存储数据的正确性。之后另一个扇区中的后续存储数据可依据自身保存的已经验证过的正确数据进行验证,而不再依靠第一个扇区内的数据,故此时将第一个扇区内的数据进行擦除即可。这种方式保证了存储数据的正确性,提高了flash的抗干扰能力。
具体过程为:
查询当前待写入数据的一组扇区中的最新写入的数据和下一个空白区域地址;其中,flash中每两个扇区作为一组;依据最新写入的数据对当前待写入数据进行验证,验证当前待写入数据是否正确,若正确,则将当前待写入数据写入下一个空白区域地址;若不正确,则终止当前程序函数;可以理解的是,对于一个扇区内的数据来说,由于数据是依次顺序存入的,前后之间存在关联。因此,一个扇区中之前存储的数据,可以用来验证后续存入的数据的正确性。
在擦除函数执行后,判断擦除函数对应的扇区是否已写满且与该扇区同组的另一扇区不为空白,若是,则将擦除函数对应的扇区进行擦除;否则,不对擦除函数对应的扇区进行擦除。举例来说,本实施例的过程如图3所示,当需要存储变量时,第一次存储在扇区1单元1处,当第二次存储时,则存储到扇区1单元2处,以此类推。每次存储数据时需要将待存储数据与原数据进行比对,若两者不同,则对依据原数据对待存储数据进行正确与否的验证,验证通过后,则将待存储数据存储到下一个单元。当扇区1存储完后,并存储到到扇区2单元1后,则可以擦除扇区1。每次上电,则通过算法倒叙查找2个扇区的所有单元,查到最新的数据和下一个需要存储的地址,等待下一次存储。
对于现有的方式中来说,一个扇区被擦除后由于之前存储的数据已经没有了,因此,后续新存入的若与之前的数据为关联数据的话,则后续新存入的数据无法进行验证,无法保证数据的正确性。而本实施例中,采用两个扇区循环存储的方式,只有在待擦除的扇区已经写满并且与其同组的另一扇区已经有数据写入后,才能将待擦除的扇区进行擦除。这是由于对于未存满的扇区,后续数据存储时仍会在该扇区中进行保存,一旦该扇区被擦除,则后续再写入的数据无法得到之前数据的验证,因此,无法保证写入数据的正确性。而当待擦除的扇区已经写满,但是与其同组的另一扇区并未有数据写入时(即为空白时),若此时将待擦除的扇区进行擦除后,则此时该组内的两个扇区均为空白,后续在写入数据时也无法得到之前数据的验证,无法保证写入数据的正确性。因此,只有在待擦除的扇区已经写满并且与其同组的另一扇区已经有数据写入后,此时将待擦除的扇区进行时擦除后,后续数据再次写入时,会在与其同组的另一扇区内继续进行存储,由于与其同组的另一扇区内之前已经有数据存入了,因此,之前存入的数据可以为新写入的数据进行验证,从而保证了写入数据的正确性,避免了flash在受到外部干扰时,存入错误数据的情况,提高了flash保存数据的抗干扰能力和可靠性。
但是,需要注意的是,本实施例是基于前述实施例的基础上,即除了依据之前写入的数据对当前待写入数据进行验证之外,也需要在将当前待写入数据写入后,将写入的数据与待写入的数据进行比对,查看是否写入正确,若写入错误,则需要在下一个空白单元继续写入。
在一种优选实施例中,确定flash操作指令对应的各个程序函数的序列号及执行顺序之后,还包括:
依据各个程序函数的序列号及执行顺序得到待执行序列号数组;
执行待执行的程序函数之后,还包括:记录当前执行的程序函数的序列号;
判断当前不存在待执行的程序函数之后,还包括:
将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;
将执行序列号数组与待执行序列号数组进行比对,若相同,则flash操作指令执行成功,若不同,则flash操作指令执行失败。
可以理解的是,本实施例在确定了flash操作指令对应的各个程序函数的序列号及执行顺序之后,将这些序列号按照其执行顺序进行排序,得到了待执行序列号数组,依据该待执行序列号数组即可确定各个序列号所对应的程序函数的执行顺序。因此,后续在步骤s12中进行检测时,可以检测当前执行的程序函数的序列号是否符合该待执行序列号数组,若不符合,则停止执行flash操作指令;若符合,进入步骤s13。这种方式相比与执行顺序进行比较的方式,更为直观且容易进行比较。另外,在本实施例中,在执行正确的情况下仍记录了实际所执行的各个程序函数的序列号及其顺序,并组成了执行序列号数组,并将执行序列号数组与之前待执行序列号数组进行比较,若比较结果相同,则flash操作指令执行成功,若比较结果不同,则flash操作指令执行失败。进行此次比较的目的,是因为前述步骤s12中的检测操作可能会出现误差,即本来不符合条件的程序函数判定为符合,从而正常的执行;为了避免该情况,本实施例进一步的将实际所执行的程序函数的序列号数数组与待执行序列号数组进行比较,从而进一步验证程序函数执行的正确与否,在检测到程序函数执行错误后,可以对flash操作指令执行失败这一特征进行显示,从而及时的提醒工作人员此次flash操作失败,进而进行处理。即使不对这一特征进行显示,在芯片判定此次flash操作失败时,也可以依据预设的后端处理程序来及时进行处理,例如删除此次存储的输入数据等,从而尽可能降低flash操作失败的情况下导致的影响,提高flash的可靠程度。
本发明还提供了一种芯片内部flash存储装置,参见图4所示,图4为本发明提供的一种芯片内部flash存储装置的结构示意图。该装置包括:
序列号设置模块0,用于分别为flash内的各个程序函数添加对应的序列号并进行保存;
函数执行模块1,用于接收flash操作指令后,确定flash操作指令对应的各个程序函数的序列号及执行顺序;
序列号检测模块2,用于在flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行flash操作指令;若符合,触发函数执行模块3;
函数执行模块3,用于执行待执行的程序函数;
执行判断模块4,用于判断当前是否存在待执行的程序函数,若存在,重复触发序列号检测模块2,若不存在,flash操作指令执行完毕。
作为优选地,函数执行模块3包括写入单元、擦除单元和读取单元中的任一种或几种的组合。
作为优选地,写入单元具体用于:
查询当前待写入数据的一组扇区中的最近一个空白区域地址;将所述待写入数据写入所述最近一个空白区域地址;读取写入的数据,将所述写入的数据与所述待写入数据进行比对,若相同,则完成所述待写入数据的写入;若不同,判断当前所述待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,则继续将所述待写入数据写入下一个空白区域地址,并重复上述比对操作。
作为优选地,函数执行模块3还用于依据各个程序函数的序列号及执行顺序得到待执行序列号数组;
函数执行模块3还用于:在执行待执行的程序函数之后,记录当前执行的程序函数的序列号;
执行判断模块4还用于:在判断当前不存在待执行的程序函数之后,将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;将执行序列号数组与待执行序列号数组进行比对,若相同,则flash操作指令执行成功,若不同,则flash操作指令执行失败。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明还提供了一种包含内部flash存储器的芯片,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如以上任一项的芯片内部flash存储装置方法的步骤。
本发明还提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如以上任一项的芯片内部flash存储装置方法的步骤。
以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种芯片内部flash存储方法,其特征在于,包括:
分别为flash内的各个程序函数添加对应的序列号并进行保存;
接收flash操作指令后,确定所述flash操作指令对应的各个程序函数的序列号及执行顺序;
在所述flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行所述flash操作指令;若符合,则执行所述待执行的程序函数;
判断当前是否存在待执行的程序函数,若存在,重复上述检测操作,若不存在,所述flash操作指令执行完毕。
2.根据权利要求1所述的方法,其特征在于,所述程序函数包括写入函数、擦除函数和读取函数中的任一种或几种的组合。
3.根据权利要求2所述的方法,其特征在于,执行相应的程序函数对所述flash进行数据写入时的过程具体为:
查询当前待写入数据的一组扇区中的最近一个空白区域地址;
将所述待写入数据写入所述最近一个空白区域地址;
读取写入的数据,将所述写入的数据与所述待写入数据进行比对,若相同,则完成所述待写入数据的写入;
若不同,判断当前所述待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,则继续将所述待写入数据写入下一个空白区域地址,并重复上述比对操作。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述确定所述flash操作指令对应的各个程序函数的序列号及执行顺序之后,还包括:
依据各个所述程序函数的序列号及执行顺序得到待执行序列号数组;
所述执行所述待执行的程序函数之后,还包括:记录当前执行的程序函数的序列号;
判断当前不存在待执行的程序函数之后,还包括:
将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;
将所述执行序列号数组与所述待执行序列号数组进行比对,若相同,则所述flash操作指令执行成功,若不同,则所述flash操作指令执行失败。
5.一种芯片内部flash存储装置,其特征在于,包括:
序列号设置模块,用于分别为flash内的各个程序函数添加对应的序列号并进行保存;
函数执行模块,用于接收flash操作指令后,确定所述flash操作指令对应的各个程序函数的序列号及执行顺序;
序列号检测模块,用于在所述flash操作指令开始执行后,检测当前待执行的程序函数的序列号是否符合前述确定的执行顺序,若不符合,则停止执行所述flash操作指令;若符合,触发函数执行模块;
所述函数执行模块,用于执行所述待执行的程序函数;
执行判断模块,用于判断当前是否存在待执行的程序函数,若存在,重复触发所述序列号检测模块,若不存在,所述flash操作指令执行完毕。
6.根据权利要求5所述的装置,其特征在于,所述函数执行模块包括写入单元、擦除单元和读取单元中的任一种或几种的组合。
7.根据权利要求6所述的装置,其特征在于,所述写入单元具体用于:
查询当前待写入数据的一组扇区中的最近一个空白区域地址;将所述待写入数据写入所述最近一个空白区域地址;读取写入的数据,将所述写入的数据与所述待写入数据进行比对,若相同,则完成所述待写入数据的写入;若不同,判断当前所述待写入数据的写入次数是否超出预设次数阈值,若超出,则终止当前程序函数;若未超出,则继续将所述待写入数据写入下一个空白区域地址,并重复上述比对操作。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述函数执行模块还用于依据各个所述程序函数的序列号及执行顺序得到待执行序列号数组;
所述函数执行模块还用于:在执行所述待执行的程序函数之后,记录当前执行的程序函数的序列号;
所述执行判断模块还用于:在判断当前不存在待执行的程序函数之后,将记录的所执行的各个程序函数的序列号依次进行组合,得到执行序列号数组;将所述执行序列号数组与所述待执行序列号数组进行比对,若相同,则所述flash操作指令执行成功,若不同,则所述flash操作指令执行失败。
9.一种包含内部flash存储器的芯片,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的芯片内部flash存储装置方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的芯片内部flash存储装置方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543108.XA CN109558092A (zh) | 2018-12-17 | 2018-12-17 | 一种芯片内部flash存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543108.XA CN109558092A (zh) | 2018-12-17 | 2018-12-17 | 一种芯片内部flash存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558092A true CN109558092A (zh) | 2019-04-02 |
Family
ID=65870257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811543108.XA Pending CN109558092A (zh) | 2018-12-17 | 2018-12-17 | 一种芯片内部flash存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558092A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110740045A (zh) * | 2019-10-28 | 2020-01-31 | 支付宝(杭州)信息技术有限公司 | 指令的组播方法及其系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388039A (zh) * | 2008-11-11 | 2009-03-18 | 深圳市金蝶中间件有限公司 | 一种响应消息的执行方法和装置 |
CN102043725A (zh) * | 2009-10-20 | 2011-05-04 | 群联电子股份有限公司 | 用于闪存的数据写入方法及其控制器与储存系统 |
CN102654855A (zh) * | 2011-03-04 | 2012-09-05 | 上海华虹集成电路有限责任公司 | 一种对Nandflash指令执行进行编程的Nandflash控制器 |
US20160283116A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Sequential write stream management |
CN105988939A (zh) * | 2015-01-22 | 2016-10-05 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN106708421A (zh) * | 2015-11-18 | 2017-05-24 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
US20180032344A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Out-of-order block-based processor |
CN109002399A (zh) * | 2018-07-09 | 2018-12-14 | 北京智芯微电子科技有限公司 | 嵌入式设备事件记录的方法 |
-
2018
- 2018-12-17 CN CN201811543108.XA patent/CN109558092A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388039A (zh) * | 2008-11-11 | 2009-03-18 | 深圳市金蝶中间件有限公司 | 一种响应消息的执行方法和装置 |
CN102043725A (zh) * | 2009-10-20 | 2011-05-04 | 群联电子股份有限公司 | 用于闪存的数据写入方法及其控制器与储存系统 |
CN102654855A (zh) * | 2011-03-04 | 2012-09-05 | 上海华虹集成电路有限责任公司 | 一种对Nandflash指令执行进行编程的Nandflash控制器 |
CN105988939A (zh) * | 2015-01-22 | 2016-10-05 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
US20160283116A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Sequential write stream management |
CN106708421A (zh) * | 2015-11-18 | 2017-05-24 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
US20180032344A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Out-of-order block-based processor |
CN109002399A (zh) * | 2018-07-09 | 2018-12-14 | 北京智芯微电子科技有限公司 | 嵌入式设备事件记录的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110740045A (zh) * | 2019-10-28 | 2020-01-31 | 支付宝(杭州)信息技术有限公司 | 指令的组播方法及其系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107743617B (zh) | 存储器中的带区映射 | |
CN110459259A (zh) | 存储设备写错误纠错能力的测试方法、系统及存储介质 | |
US9552287B2 (en) | Data management method, memory controller and embedded memory storage apparatus using the same | |
CN111444030B (zh) | 数据储存装置及避免固件失效的方法 | |
CN106775855B (zh) | 一种基于eclipse的flash烧写方法、插件和系统 | |
CN113409881B (zh) | 闪存擦除中断恢复测试方法、装置、电子设备及存储介质 | |
CN104281413A (zh) | 命令队列管理方法、存储器控制器及存储器储存装置 | |
CN113495848B (zh) | 闪存装置、闪存装置的开卡方法及计算机可读取存储介质 | |
CN102324251B (zh) | 用以指示存储器中的编程失败的信号线 | |
CN109558092A (zh) | 一种芯片内部flash存储方法及装置 | |
CN112068781B (zh) | 一种存储器的数据读写方法及相关设备 | |
CN103165194A (zh) | 快速检测大容量NOR Flash的方法及装置 | |
CN110956998B (zh) | 一种存储器测试装置与系统 | |
US8285509B2 (en) | Method and system of testing electronic device | |
CN101206613A (zh) | 高速基本输入/输出系统调试卡 | |
CN110853695A (zh) | 一种测试nvram存储性能的方法 | |
US10922023B2 (en) | Method for accessing code SRAM and electronic device | |
CN112394879B (zh) | 操作存储设备的方法、存储设备及操作存储系统的方法 | |
CN111785313B (zh) | 降低过擦除现象和擦除时间方法、系统、存储介质及终端 | |
CN109634534B (zh) | 存储芯片的容量快速判定方法 | |
CN111209146B (zh) | 一种raid卡老化测试方法及系统 | |
US8953393B2 (en) | Semiconductor device and operating method thereof | |
US20200394510A1 (en) | Method of training artificial intelligence to estimate lifetime of storage device | |
CN101751978B (zh) | 一种基于nand flash的电子盘及其运行控制方法 | |
CN107577554B (zh) | 检测使用中逻辑页面的数据储存装置与数据储存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220616 Address after: 315299 building 6, No. 1188, Pinghai Road, Zhaobaoshan street, Zhenhai District, Ningbo City, Zhejiang Province Applicant after: Ningbo Yijie Microelectronics Co.,Ltd. Address before: Room b4015, 4th floor, building 1 (North), No. 368, Liuhe Road, Binjiang District, Hangzhou, Zhejiang 310053 Applicant before: HANGZHOU PROTRA ELECTRONICS Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |