CN111782142A - 一种基于分时处理的Flash存储方法 - Google Patents
一种基于分时处理的Flash存储方法 Download PDFInfo
- Publication number
- CN111782142A CN111782142A CN202010567005.8A CN202010567005A CN111782142A CN 111782142 A CN111782142 A CN 111782142A CN 202010567005 A CN202010567005 A CN 202010567005A CN 111782142 A CN111782142 A CN 111782142A
- Authority
- CN
- China
- Prior art keywords
- data
- state
- program
- flash
- address
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 title claims abstract description 21
- 230000009191 jumping Effects 0.000 claims description 3
- 238000013500 data storage Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 abstract description 3
- 230000011218 segmentation Effects 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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/061—Improving I/O performance
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Memory System (AREA)
Abstract
本发明公开了一种基于分时处理的Flash存储方法,属于数据存储技术领域,包括:将Flash的存储操作状态流程划分三个状态即:空闲、数据载入、擦除。其中空闲状态时程序不做任何处理。数据载入状态包括地址判断、数据分段、擦除判断、发送擦除指令、数据写入等。擦除状态主要是循环判断当前Flash芯片擦除是否已完成。通过这种方法,可以有效地节约主程序的处理时间,保证主程序在处理其他任务功能的过程中,避免因Flash存储而占用较长的时间,从而保证整个系统能高效、快速的执行。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种基于分时处理的Flash存储方法。
背景技术
随着电子信息技术的发展,数据存储技术的应用已经非常广泛。对大容量数据存储一般都使用闪存(Flash)作为存储装置。Flash在写入数据时,要求目标地址空间里面数据全为0xFF。所以一般Flash的写数据操作前需要先读出目标地址空间内的数据,判断是否全为0xFF,进而决定是擦除还是写入操作。根据手册及大量的实验验证,一般Flash的擦除操作时间都比较长。以Nand Flash为例,128KB字节的块擦除一般需要2–10mS,NorFlash的擦除时间更长,块擦除操作时间可以达到50mS。对一些实时性要求很高的模块功能或算法,常规的Flash擦除存储操作将会严重影响主程序执行的效率。
发明内容
本发明的目的在于克服上述背景技术存在的缺陷,解决Flash擦除和数据写入占用程序执行时间较长的问题。
为实现以上目的,本发明采用一种基于分时处理的Flash存储方法,Flash芯片的存储程序的执行状态划分为空闲状态、数据载入状态和擦除状态,主程序通过Flash操作程序调用接口与Flash芯片连接,包括:
所述Flash芯片的存储程序接收所述主程序发送的调用指令及待载入数据;
所述存储程序根据其当前的执行状态进行相应操作,其中空间状态时不做任何操作处理,数据载入状态时根据待载入数据的大小和地址进行数据写入,擦除状态时循环判断Flash芯片擦除是否完成。
进一步地,在所述存储程序当前的执行状态为空闲状态时,所述存储程序根据其当前的执行状态进行相应操作包括:
判断是否有所述待载入数据的载入;
若是,将所述存储程序的执行状态置为数据载入状态;
若否,退出所述存储程序,返回所述主程序。
进一步地,在所述存储程序当前的执行状态为数据载入状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
a1)根据所述待载入数据的地址和数据长度,判断目标地址范围是否在Flash分配的有效区间内,若否则执行步骤a2),若是则执行步骤a3);
a2)退出当前操作程序,返回地址操作错误,并进入空闲状态;
a3)根据所述待载入数据的地址和数据长度,计算所需编程的页的数量、页编程地址、页的数据偏移量以及每次页编程可写入的数据长度;
a4)判断页编程地址的首地址是否为块的起始地址,若是则执行步骤a5),若否则执行步骤a6);
a5)计算该地址所在块编号,向所述Flash芯片发送块擦除指令,并将所述Flash芯片的存储程序置为擦除状态;
a6)根据页编程地址和页的数据偏移量,向所述Flash芯片的目标页写入数据,并计算剩余数据长度及下次目标页编程的地址;
a7)判断剩余数据长度是否为零,若是则执行步骤a8),若否则执行步骤a4);
a8)将所述Flash芯片的存储程序置为空闲状态后退出所述存储程序。
进一步地,在所述存储程序当前的执行状态为擦除状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
b1)读取所述Flash芯片的寄存器状态值;
b2)根据寄存器状态值判断擦除操作是否完成,若是则执行步骤b3),若否则执行步骤b4);
b3)将所述Flash芯片的存储程序置为数据载入状态后退出所述存储程序,返回所述主程序;
b4)立即跳出所述存储程序,返回所述主程序。
进一步地,在每次载入数据时,还包括对所述待载入数据的地址进行有效性和合法性的判断;
若地址错误,则将所述存储程序置为空闲状态;
若地址正确,则将所述存储程序置为数据载入状态。
进一步地,在每次载入数据时,还包括:
判断所述待载入数据的长度是否超过页操作的范围;
若否,则将所述待载入数据按照页空间实际大小,计算每次写入数据的目标地址和长度,然后将所述待载入数据分批写入;
若是,将多余长度数据写入下一页进行页操作。
进一步地,在所述步骤b4)之后,还包括:
若所述存储程序接收到所述主程序发送的调用指令及待载入数据时,重复执行所述步骤b1)-b4)。
与现有技术相比,本发明存在以下技术效果:本发明对Flash芯片的存储操作进行状态流程的管理,对状态流程划分三个状态即:空闲、数据载入、擦除。其中空闲状态时程序不做任何处理。数据载入状态包括地址判断、数据分段、擦除判断、发送擦除指令、数据写入等。擦除状态主要是循环判断当前Flash芯片擦除是否已完成。对Flash芯片的整个存储操作过程中,只对Flash芯片发指令及数据,Flash芯片自身的执行过程不占用主程序的执行时间,不会对实时性要求高的其它子程序模块的执行时间造成时间上的影响。通过这种方法,可以有效地节约主程序的处理时间,保证主程序在处理其他任务功能的过程中,避免因Flash存储而占用较长的时间,从而保证整个系统能高效、快速的执行。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是一种基于分时处理的Flash存储方法的流程图;
图2是程序调用示意图;
图3是Flash芯片存储程序的空闲状态操作流程图;
图4是Flash芯片存储程序的数据载入状态操作流程图;
图5是Flash芯片存储程序的擦除状态操作流程图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1至图2所示,本实施例公开了一种基于分时处理的Flash存储方法,Flash芯片的存储程序的执行状态划分为空闲状态、数据载入状态和擦除状态,主程序通过Flash操作程序调用接口与Flash芯片连接,包括如下步骤S1至S2:
S1、所述Flash芯片的存储程序接收所述主程序发送的调用指令及待载入数据;
S2、所述存储程序根据其当前的执行状态进行相应操作,其中空间状态时不做任何操作处理,数据载入状态时根据待载入数据的大小和地址进行数据写入,擦除状态时循环判断Flash芯片擦除是否完成。
需要说明的是,对Flash整个存储操作过程中,只对Flash芯片发指令及数据,Flash芯片自身的执行过程不占用主程序的执行时间,不会对实时性要求高的其它子程序模块的执行造成时间上的影响。
进一步地,如图3所示,在所述存储程序当前的执行状态为空闲状态时,所述存储程序根据其当前的执行状态进行相应操作包括:
判断是否有所述待载入数据的载入;
若是,将所述存储程序的执行状态置为数据载入状态;
若否,退出所述存储程序,返回所述主程序。
需要说明的是,当主程序有数据需要写入时,将存储程序的状态标志置为数据载入状态,并加载要存储的数据;然后主程序调用存储程序时,存储程序根据状态标志执行相关状态下的操作。
进一步地,如图4所示,在所述存储程序当前的执行状态为数据载入状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
a1)根据所述待载入数据的地址和数据长度,判断目标地址范围是否在Flash分配的有效区间内,若否则执行步骤a2),若是则执行步骤a3);
a2)退出当前操作程序,返回地址操作错误,并进入空闲状态;
a3)根据所述待载入数据的地址和数据长度,计算所需编程的页的数量、页编程地址、页的数据偏移量以及每次页编程可写入的数据长度;
需要说明的是,因为很多NAND Flash只能进行页编程,所以根据Flash页的空间大小,计算数据一共要分几次写入,及每次页编程要写入的数据大小。
a4)判断页编程地址的首地址是否为块的起始地址,若是则执行步骤a5),若否则直接执行步骤a6);
a5)计算该地址所在块编号,向所述Flash芯片发送块擦除指令,并将所述Flash芯片的存储程序置为擦除状态;
a6)根据页编程地址和页的数据偏移量,向所述Flash芯片的目标页写入数据,并计算剩余数据长度及下次目标页编程的地址;
a7)判断剩余数据长度是否为零,若是则执行步骤a8),若否则执行步骤a4);
需要说明的是,如果剩余数据长度不为0,表示数据没有完全写入芯片,程序返回步骤a4),等主程序下次调用时,继续写入剩余数据,直到所有载入的数据全部写入Flash芯片,Flash存储程序进入空闲状态并退出。
a8)将所述Flash芯片的存储程序置为空闲状态后退出所述存储程序。
需要说明的是,每次载入数据前,不需要将目标存储块的数据读出,用以判断该块内的数据是否均为OxFF,再决定是否进行擦除操作,节约了Flash的操作时间。
进一步地,如图5所示,在所述存储程序当前的执行状态为擦除状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
b1)读取所述Flash芯片的寄存器状态值;
b2)根据寄存器状态值判断擦除操作是否完成,若是则执行步骤b3),若否则执行步骤b4);
b3)将所述Flash芯片的存储程序置为数据载入状态后退出所述存储程序,返回所述主程序;
b4)立即跳出所述存储程序,返回所述主程序。
需要说明的是,等待下次主程序调用时,继续读Flash芯片寄存器状态值,判断擦除操作是否完成。如果芯片擦除操作完成,则在主程序下次调用Flash存储程序时,进入图4所示的数据载入流程进行数据写入操作。
需要说明的是,对Flash擦除操作时,只对Flash芯片发送擦除指令,然后立即退出Flash存储程序。
进一步地,在每次载入数据时,还包括对所述待载入数据的地址进行有效性和合法性的判断,若地址错误,则将所述存储程序置为空闲状态;若地址正确,则将所述存储程序置为数据载入状态,执行数据写入操作,以避免将数据写入错误的地址区间。
进一步地,在每次载入数据是,还包括:
判断所述待载入数据的长度是否超过页操作的范围;
若否,则将所述待载入数据按照页空间实际大小,计算每次写入数据的目标地址和长度,然后将所述待载入数据分批写入;
若是,将多余长度数据写入下一页进行页操作。
需要说明的是,本发明方案与现有技术相比,具有如下效果:
(1)不影响主程序对实时性要求较高的功能模块的执行,减少程序因Flash存储占用的时间。
(2)在滚动循环存储时,不需要将整个存储块数据读出判断是否都为0xFF,简化操作流程。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于分时处理的Flash存储方法,其特征在于,Flash芯片的存储程序的执行状态划分为空闲状态、数据载入状态和擦除状态,主程序通过Flash操作程序调用接口与Flash芯片连接,包括:
所述Flash芯片的存储程序接收所述主程序发送的调用指令及待载入数据;
所述存储程序根据其当前的执行状态进行相应操作,其中空间状态时不做任何操作处理,数据载入状态时根据待载入数据的大小和地址进行数据写入,擦除状态时循环判断Flash芯片擦除是否完成。
2.如权利要求1所述的基于分时处理的Flash存储方法,其特征在于,在所述存储程序当前的执行状态为空闲状态时,所述存储程序根据其当前的执行状态进行相应操作包括:
判断是否有所述待载入数据的载入;
若是,将所述存储程序的执行状态置为数据载入状态;
若否,退出所述存储程序,返回所述主程序。
3.如权利要求1所述的基于分时处理的Flash存储方法,其特征在于,在所述存储程序当前的执行状态为数据载入状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
a1)根据所述待载入数据的地址和数据长度,判断目标地址范围是否在Flash分配的有效区间内,若否则执行步骤a2),若是则执行步骤a3);
a2)退出当前操作程序,返回地址操作错误,并进入空闲状态;
a3)根据所述待载入数据的地址和数据长度,计算所需编程的页的数量、页编程地址、页的数据偏移量以及每次页编程可写入的数据长度;
a4)判断页编程地址的首地址是否为块的起始地址,若是则执行步骤a5),若否则直接执行步骤a6);
a5)计算该地址所在块编号,向所述Flash芯片发送块擦除指令,并将所述Flash芯片的存储程序置为擦除状态;
a6)根据页编程地址和页的数据偏移量,向所述Flash芯片的目标页写入数据,并计算剩余数据长度及下次目标页编程的地址;
a7)判断剩余数据长度是否为零,若是则执行步骤a8),若否则执行步骤a4);
a8)将所述Flash芯片的存储程序置为空闲状态后退出所述存储程序。
4.如权利要求1所述的基于分时处理的Flash存储方法,其特征在于,在所述存储程序当前的执行状态为擦除状态时,所述存储程序根据其当前的执行状态进行相应操作,包括:
b1)读取所述Flash芯片的寄存器状态值;
b2)根据寄存器状态值判断擦除操作是否完成,若是则执行步骤b3),若否则执行步骤b4);
b3)将所述Flash芯片的存储程序置为数据载入状态后退出所述存储程序,返回所述主程序;
b4)立即跳出所述存储程序,返回所述主程序。
5.如权利要求3所述的基于分时处理的Flash存储方法,其特征在于,在每次载入数据时,还包括对所述待载入数据的地址进行有效性和合法性的判断;
若地址错误,则将所述存储程序置为空闲状态;
若地址正确,则将所述存储程序置为数据载入状态。
6.如权利要求3所述的基于分时处理的Flash存储方法,其特征在于,在每次载入数据时,还包括:
判断所述待载入数据的长度是否超过页操作的范围;
若否,则将所述待载入数据按照页空间实际大小,计算每次写入数据的目标地址和长度,然后将所述待载入数据分批写入;
若是,将多余长度数据写入下一页进行页操作。
7.如权利要求4所述的基于分时处理的Flash存储方法,其特征在于,在所述步骤b4)之后,还包括:
若所述存储程序接收到所述主程序发送的调用指令及待载入数据时,重复执行所述步骤b1)-b4)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567005.8A CN111782142B (zh) | 2020-06-19 | 2020-06-19 | 一种基于分时处理的Flash存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567005.8A CN111782142B (zh) | 2020-06-19 | 2020-06-19 | 一种基于分时处理的Flash存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782142A true CN111782142A (zh) | 2020-10-16 |
CN111782142B CN111782142B (zh) | 2024-04-05 |
Family
ID=72757354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567005.8A Active CN111782142B (zh) | 2020-06-19 | 2020-06-19 | 一种基于分时处理的Flash存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782142B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110138105A1 (en) * | 2009-12-04 | 2011-06-09 | International Business Machines Corporation | Non-volatile memories with enhanced write performance and endurance |
CN102169462A (zh) * | 2011-04-27 | 2011-08-31 | 中国科学院光电技术研究所 | 基于NAND Flash的数据记录方法与记录控制器 |
CN102511040A (zh) * | 2011-12-02 | 2012-06-20 | 华为技术有限公司 | 一种Nand Flash页的检测方法和装置 |
US20170371575A1 (en) * | 2016-06-27 | 2017-12-28 | SK Hynix Inc. | Memory system and method of operating the same |
-
2020
- 2020-06-19 CN CN202010567005.8A patent/CN111782142B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110138105A1 (en) * | 2009-12-04 | 2011-06-09 | International Business Machines Corporation | Non-volatile memories with enhanced write performance and endurance |
CN102169462A (zh) * | 2011-04-27 | 2011-08-31 | 中国科学院光电技术研究所 | 基于NAND Flash的数据记录方法与记录控制器 |
CN102511040A (zh) * | 2011-12-02 | 2012-06-20 | 华为技术有限公司 | 一种Nand Flash页的检测方法和装置 |
US20170371575A1 (en) * | 2016-06-27 | 2017-12-28 | SK Hynix Inc. | Memory system and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
CN111782142B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11062777B2 (en) | Nonvolatile semiconductor memory device which performs improved erase operation | |
US8732385B2 (en) | Non-volatile memory, controller controlling next access | |
US7404033B2 (en) | Method for reading while writing to a single partition flash memory | |
US20080016415A1 (en) | Evaluation system and method | |
CN104239229A (zh) | 数据储存装置及用于快闪存储器的数据读取方法 | |
CN110473585B (zh) | 一种擦失效存储单元的替换方法、装置、设备及存储介质 | |
CN111782142B (zh) | 一种基于分时处理的Flash存储方法 | |
CN111078136B (zh) | 一种防止BMS动态数据存储导致flash寿命降低的方法 | |
WO2024139915A1 (zh) | Nand闪存设备中减少空间的编程方法、装置、存储器及系统 | |
CN113836600B (zh) | 一种Embedded Flash误写保护方法 | |
US20090313422A1 (en) | Flash memory control apparatus having sequential writing procedure and method thereof | |
US20190220226A1 (en) | Jump page cache read method in nand flash memory and nand flash memory | |
CN109299018B (zh) | 一种Flash存储器中历史数据的读取方法及装置 | |
CN110209433B (zh) | 一种识别不同型号集中器的方法 | |
CN113409863A (zh) | 一种减少擦除时间的方法、装置、电子设备及存储介质 | |
CN114489488A (zh) | 数据读写方法、nand控制器及计算机可读存储介质 | |
US20120026795A1 (en) | Electronic Apparatus and Data Reading Method | |
CN104217757A (zh) | 非易失性存储器的编程方法 | |
CN115712414B (zh) | 一种实现otp多次编程的方法、系统、介质及电子设备 | |
CN117170753B (zh) | 程序处理方法、程序处理装置、车辆和存储介质 | |
US20040133755A1 (en) | Minimization of overhead of non-volatile memory operation | |
CN112599172B (zh) | 电子控制单元的数据写入方法、装置及存储介质 | |
US10007624B2 (en) | Electronic device for blocking interrupt requests | |
CN110910939B (zh) | 存储单元的阈值调整方法、装置、存储设备和存储介质 | |
CN102034536A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |