CN109002399B - 嵌入式设备事件记录的方法 - Google Patents
嵌入式设备事件记录的方法 Download PDFInfo
- Publication number
- CN109002399B CN109002399B CN201810744861.9A CN201810744861A CN109002399B CN 109002399 B CN109002399 B CN 109002399B CN 201810744861 A CN201810744861 A CN 201810744861A CN 109002399 B CN109002399 B CN 109002399B
- Authority
- CN
- China
- Prior art keywords
- data
- data storage
- storage block
- page
- written
- 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
Images
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种嵌入式设备事件记录的方法,包括:在FLASH空间中划分出至少两个连续页,且至少两个连续页用作数据存储块;程序启动时计算出数据存储块的写指针位置及读指针位置;其中,首次写入的有效数据默认从数据存储块的第一页开始写入;其中,当非首次将所述有效数据写入至数据存储块之后,程序再次计算出数据存储块的写指针位置及读指针位置;其中,在写入有效数据的过程中,当数据存储块的第一页写满时,有效数据继续写入数据存储块的剩余页,当剩余页写满时,擦除第一页,且有效数据从第一页的首地址继续写入。借此,本发明的嵌入式设备事件记录的方法,减少了需要保存的事件占用的FLASH空间,提高了FLASH的空间利用率,延长了FLASH的使用寿命。
Description
技术领域
本发明是关于嵌入式领域,特别是关于一种嵌入式设备事件记录的方法。
背景技术
在嵌入式设计中,许多应用都需要存储一定时间内发生的各种事件,因而这些设计都需要使用非易失性数据存储设备,由于成本原因,在许多嵌入式处理器中并没有集成EEPROM模块。通常我们可以采用在片内FLASH存储器中保存非易失性数据的应用方式来达到使用要求。对一些普通的应用场合,这种使用方式可以满足要求。
比如,STM32系列处理器中并不具有EEPROM。为了存储非易失性数据,需要利用芯片内部FLASH空间中程序代码区域的未利用空间作为存储非易失性数据空间。但是由于FLASH与EEPROM在擦写寿命上存在一定差距,并且未利用空间有限,所以在实际应用中,这种应用方式并不能够满足所有应用需求。
当前在单片机中保存大量事件记录时,均需要同时保存记录事件外的大量非必要的数据,如索引、消息头、长度等,导致FLASH利用率不高,读写算法复杂,不能令FLASH均匀循环的使用,往往存在对一块FLASH区域反复擦写的情况,降低了FLASH寿命。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种嵌入式设备事件记录的方法,其能够减少需要保存的事件占用的FLASH空间,提高了FLASH的空间利用率,均匀循环的使用FLASH,延长了FLASH的使用寿命。
为实现上述目的,本发明提供了一种嵌入式设备事件记录的方法,包括:在FLASH空间中划分出至少两个连续页,且至少两个连续页用作数据存储块;其中,程序启动时计算出数据存储块的写指针位置及读指针位置;其中,首次写入的有效数据默认从数据存储块的第一页开始写入;其中,当非首次将有效数据写入至数据存储块之后,程序再次计算出数据存储块的写指针位置及读指针位置;其中,在写入有效数据的过程中,当数据存储块的第一页写满时,有效数据继续写入数据存储块的剩余页,当剩余页写满时,擦除第一页,且有效数据从第一页的首地址继续写入。
在一优选的实施方式中,当需要读取数据存储块中的有效数据时,程序首先计算出数据存储块的读指针位置。
在一优选的实施方式中,有效数据不包括索引、消息头及数据长度等信息。
在一优选的实施方式中,写入有效数据是采用FIFO机制实现。
在一优选的实施方式中,每条有效数据的长度相等且不超过数据存储块的一页。
在一优选的实施方式中,每条有效数据的长度为FLASH最小写入单位的整倍数。
在一优选的实施方式中,每条有效数据不能全为0xFF。
在一优选的实施方式中,在第一次启动程序时先完全擦除数据存储块。
在一优选的实施方式中,在烧写程序之前先完全擦除数据存储块。
与现有技术相比,根据本发明的嵌入式设备事件记录的方法,减少了需要保存的事件占用的FLASH空间,提高了FLASH的空间利用率,均匀循环的使用FLASH,延长了FLASH的使用寿命。
附图说明
图1是根据本发明一实施方式的嵌入式设备事件记录的方法的流程示意图。
图2是根据本发明一实施方式的嵌入式设备事件记录的方法的写指针获取方法的流程示意图。
图3是根据本发明一实施方式的嵌入式设备事件记录的方法的读指针获取方法的流程示意图。
图4是根据本发明一实施方式的嵌入式设备事件记录的方法的写入有效数据的流程图。
图5是根据本发明一实施方式的嵌入式设备事件记录的方法的读取有效数据的流程图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
如图1所示,图1是根据本发明一实施方式的嵌入式设备事件记录的方法的流程示意图。
根据本发明实施方式的一种嵌入式设备事件记录的方法,包括:在FLASH 空间中划分出至少两个连续页,且至少两个连续页用作数据存储块;其中,在程序第一次启动时应当保证数据存储块已经完全擦除,可在烧写程序之前擦除全部FLASH或者在第一次启动程序时通过程序擦除;其中,程序启动时计算出数据存储块的写指针位置及读指针位置;其中,首次写入的有效数据默认从数据存储块的第一页开始写入;其中,当非首次将有效数据写入至数据存储块之后,程序再次计算出数据存储块的写指针位置及读指针位置,以便等待API调用(也即等待后续写入及读取调用);其中,在写入有效数据的过程中,当数据存储块的第一页写满时,有效数据继续写入数据存储块的剩余页,当剩余页写满时,擦除第一页,且有效数据从第一页的首地址继续写入(也即当第一页再次写满时擦除第二页,并从第二页首地址写入,如此循环)。
在一优选的实施方式中,当需要读取数据存储块中的有效数据时,程序首先计算出数据存储块的读指针位置(当前数据存储块中最早写入的一条数据的地址);有效数据不包括索引、消息头及数据长度等信息;写入有效数据是采用FIFO机制实现。
在一优选的实施方式中,每条有效数据的长度相等且不超过数据存储块的一页;每条有效数据的长度为FLASH最小写入单位的整倍数(通常为字长或者半字);每条有效数据不能全为“0xFF”。
如图2所示,图2是根据本发明一实施方式的嵌入式设备事件记录的方法的写指针获取方法的流程示意图,其中N代表总页数,Y代表当前页数, M代表每一页可写入数据的总条数,X代表当前数据所处的条数(即第几条数据)。写指针获取方法如下:假设数据存储块中一共有N页数据,首先读取数据存储块中第N页第一条数据,若数据全为“0xFF”,继续读取上一页(即第N-1页数据)第一条数据若数据全为“0xFF”,继续向上读取数据,直到第 Y页数据第一条数据不全为“0xFF”,继续读取第Y页第二条数据若数据不全为“0xFF”,继续读取第三条数据,……若第X条数据全为“0xFF”则这条数据对应的位置即为写指针的值,若最后一条数据仍然不全为“0xFF”则下一页的第一条数据对应的位置即为写指针的值。若所有页的第一条数据全为“0xFF”,则第一页第一条数据的位置即为写指针的地址。
如图3所示,图3是根据本发明一实施方式的嵌入式设备事件记录的方法的读指针获取方法的流程示意图。读指针获取方法如下:假设数据存储块中一共有N页数据,首先读取数据存储块中第一页第一条数据,若数据全为“0xFF”,继续读取下一页(即第二页数据)第一条数据若数据全为“0xFF”,继续向下读取数据,直到第Y页数据第一条数据不全为“0xFF”,则这条数据对应的位置即为读指针的值,若所有页的第一条数据全为“0xFF”,则第一页第一条数据的位置即为读指针的地址,即没有数据可读取;若读取数据存储块中第一页第一条数据,若数据不全为“0xFF”,继续读取上一页(即第N页数据)第一条数据若数据不全为“0xFF”,继续向上读取数据,直到第Y页数据第一条数据全为“0xFF”,则上一页的第一条数据对应的位置即为读指针的值。
如图4所示,图4是根据本发明一实施方式的嵌入式设备事件记录的方法的写入有效数据的流程图。写入有效数据方法如下:假设每页可以存储M 条数据,先在写指针位置写入一条需要写入的数据,判断写入的数据是否为这一页的第M条数据,如果不是则将写指针移入下一条数据位置,直接退出,如果是则将写指针移入下一页的第一条数据的位置,并清除下一页的数据,然后退出。
如图5所示,图5是根据本发明一实施方式的嵌入式设备事件记录的方法的读取有效数据的流程图。读取有效数据方法如下:假设每页可以存储M 条数据,先在读指针位置读取一条数据,判断读取的数据是否为这一页的第 M条数据,如果不是则将写指针移入下一条数据位置,直接退出,如果是则将读指针移入下一页的第一条数据的位置,然后退出。
在实际应用中,在程序第一次启动时应当保证数据存储块已经完全擦除,可在烧写程序之前擦除全部FLASH或者在第一次启动程序时通过程序擦除。程序启动后会先计算出数据存储块的写指针位置及读指针位置,当首次向数据存储块写入有效数据时,有效数据默认从数据存储块的第一页开始写入(即启动后计算出的写指针位置),当需要再次向数据存储块写入有效数据时,此时程序会再次计算当前数据存储块的写指针位置及读指针位置,而再次写入的有效数据直接写入再次计算得到的写指针位置(即每次写入或读取前程序都会计算数据存储块的写指针位置及读指针位置),而读取有效数据同理,因已得到读指针的位置,从而可以直接读取有效数据,本发明的嵌入式设备事件记录的方法,通过合理的软件算法来减少需要保存的事件占用的FLASH空间,并且实现了对占用空间的均匀循环的利用,避免了对一小块FLASH反复擦写造成的FLASH寿命降低。
总之,本发明的嵌入式设备事件记录的方法,将要保存的有效数据保存在连续的多页FLASH中,保存过程中除去了大量的非必要的数据,如索引、消息头、数据长度等,提高了FLASH的空间利用率,均匀循环的使用FLASH,延长了FLASH的使用寿命。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (5)
1.一种嵌入式设备事件记录的方法,其特征在于,包括:
在FLASH空间中划分出至少两个连续页,且所述至少两个连续页用作数据存储块;
其中,程序启动时计算出所述数据存储块的写指针位置及读指针位置;
其中,首次写入的有效数据默认从所述数据存储块的第一页开始写入;
其中,当非首次将所述有效数据写入至所述数据存储块之后,程序再次计算出所述数据存储块的写指针位置及读指针位置;
其中,在写入所述有效数据的过程中,当所述数据存储块的所述第一页写满时,所述有效数据继续写入所述数据存储块的剩余页,当所述剩余页写满时,擦除所述第一页,且所述有效数据从所述第一页的首地址继续写入;
其中,当需要读取所述数据存储块中的所述有效数据时,程序首先计算出所述数据存储块的读指针位置;
其中,所述有效数据不包括索引、消息头及数据长度信息;
其中,每条所述有效数据的长度相等且不超过所述数据存储块的一页;
其中,每条所述有效数据不能全为0xFF。
2.如权利要求1所述的嵌入式设备事件记录的方法,其特征在于,写入所述有效数据是采用FIFO机制实现。
3.如权利要求1所述的嵌入式设备事件记录的方法,其特征在于,每条所述有效数据的长度为FLASH最小写入单位的整倍数。
4.如权利要求1所述的嵌入式设备事件记录的方法,其特征在于,在第一次启动所述程序时先完全擦除所述数据存储块。
5.如权利要求1所述的嵌入式设备事件记录的方法,其特征在于,在烧写所述程序之前先完全擦除所述数据存储块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810744861.9A CN109002399B (zh) | 2018-07-09 | 2018-07-09 | 嵌入式设备事件记录的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810744861.9A CN109002399B (zh) | 2018-07-09 | 2018-07-09 | 嵌入式设备事件记录的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109002399A CN109002399A (zh) | 2018-12-14 |
CN109002399B true CN109002399B (zh) | 2021-05-18 |
Family
ID=64598665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810744861.9A Active CN109002399B (zh) | 2018-07-09 | 2018-07-09 | 嵌入式设备事件记录的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109002399B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558092A (zh) * | 2018-12-17 | 2019-04-02 | 杭州普创电子有限公司 | 一种芯片内部flash存储方法及装置 |
CN113132661B (zh) * | 2021-03-11 | 2022-04-12 | 深圳市阿达视高新技术有限公司 | 视频数据的存储方法及装置、存储介质及摄像设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3247377B2 (ja) * | 1992-04-13 | 2002-01-15 | セイコーエプソン株式会社 | 高密度バッファメモリアーキテクチャ及び方法 |
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN101237547A (zh) * | 2007-02-02 | 2008-08-06 | 索尼株式会社 | 用于数据和文件***信息的记录设备和记录方法 |
CN102063379A (zh) * | 2010-12-28 | 2011-05-18 | 天津市亚安科技电子有限公司 | 一种flash存储器的数据存储方法 |
CN102455973A (zh) * | 2010-10-19 | 2012-05-16 | 厦门华侨电子股份有限公司 | 一种利用Flash芯片剩余空间设置数据区擦写数据的方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其*** |
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及*** |
US9323664B2 (en) * | 2013-07-23 | 2016-04-26 | Intel Corporation | Techniques for identifying read/write access collisions for a storage medium |
CN106293532A (zh) * | 2016-08-10 | 2017-01-04 | 广东佳禾声学科技有限公司 | 一种Flash数据储存方法 |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及*** |
CN107608906A (zh) * | 2017-09-26 | 2018-01-19 | 北京智芯微电子科技有限公司 | 减少片内flash擦除次数的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621137B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
TWI420298B (zh) * | 2010-12-22 | 2013-12-21 | Silicon Motion Inc | 快閃記憶裝置及其資料存取方法 |
US10209891B2 (en) * | 2015-08-24 | 2019-02-19 | Western Digital Technologies, Inc. | Methods and systems for improving flash memory flushing |
-
2018
- 2018-07-09 CN CN201810744861.9A patent/CN109002399B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3247377B2 (ja) * | 1992-04-13 | 2002-01-15 | セイコーエプソン株式会社 | 高密度バッファメモリアーキテクチャ及び方法 |
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN101237547A (zh) * | 2007-02-02 | 2008-08-06 | 索尼株式会社 | 用于数据和文件***信息的记录设备和记录方法 |
CN102455973A (zh) * | 2010-10-19 | 2012-05-16 | 厦门华侨电子股份有限公司 | 一种利用Flash芯片剩余空间设置数据区擦写数据的方法 |
CN102063379A (zh) * | 2010-12-28 | 2011-05-18 | 天津市亚安科技电子有限公司 | 一种flash存储器的数据存储方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其*** |
US9323664B2 (en) * | 2013-07-23 | 2016-04-26 | Intel Corporation | Techniques for identifying read/write access collisions for a storage medium |
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及*** |
CN106293532A (zh) * | 2016-08-10 | 2017-01-04 | 广东佳禾声学科技有限公司 | 一种Flash数据储存方法 |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及*** |
CN107608906A (zh) * | 2017-09-26 | 2018-01-19 | 北京智芯微电子科技有限公司 | 减少片内flash擦除次数的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109002399A (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107168647B (zh) | Flash数据读写方法及*** | |
KR101891378B1 (ko) | 메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법 | |
KR101122485B1 (ko) | 메모리 시스템 | |
KR101383853B1 (ko) | 빠른 웨어 레벨링 플래쉬 드라이브 | |
JP5478855B2 (ja) | 不揮発性メモリ制御方法及び半導体装置 | |
KR100939146B1 (ko) | 비휘발성 반도체 메모리 시스템 및 그 데이터 기입 방법 | |
CN108595345B (zh) | 管理闪存中所储存的数据的方法及相关记忆装置与控制器 | |
KR101391270B1 (ko) | Mram을 이용하는 비휘발성 메모리 시스템 | |
US7769944B2 (en) | Partial-write-collector algorithm for multi level cell (MLC) flash | |
US20080172521A1 (en) | Memory System Determining Storage Mode According to Host Provided Data Information | |
US8433844B2 (en) | Method for managing a memory device having multiple channels and multiple ways, and associated memory device and controller thereof | |
US9569354B2 (en) | System and method to emulate an electrically erasable programmable read-only memory | |
US20090055575A1 (en) | Flash memory with small data programming capability | |
CN101324862B (zh) | 闪存存储管理方法 | |
US7319610B2 (en) | MTP storage medium and access algorithm method with traditional OTP | |
CN109002399B (zh) | 嵌入式设备事件记录的方法 | |
JP5570406B2 (ja) | メモリコントローラ、及びデータ記録装置 | |
KR100866626B1 (ko) | 스페어 영역을 갖는 비휘발성 메모리 장치 및 그의 블록소거 방법 | |
US8566562B2 (en) | Method for sequentially writing data with an offset to a non-volatile memory | |
CN105868046A (zh) | 存储装置中管理、写入及加载固件代码的方法 | |
JP2006195736A (ja) | 半導体記憶装置及びその制御方法 | |
US10474364B2 (en) | Memory control device and method | |
US20090055574A1 (en) | NAND Flash Memory Device And Related Method Thereof | |
CN107863126B (zh) | 一种传感节点非易失存储器数据管理的方法 | |
US7761675B2 (en) | Flash memory device with improved management of protection information |
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 |