CN114721602A - 一种基于FreeRTOS的Nor Flash滚动存储方法及装置 - Google Patents

一种基于FreeRTOS的Nor Flash滚动存储方法及装置 Download PDF

Info

Publication number
CN114721602A
CN114721602A CN202210644362.9A CN202210644362A CN114721602A CN 114721602 A CN114721602 A CN 114721602A CN 202210644362 A CN202210644362 A CN 202210644362A CN 114721602 A CN114721602 A CN 114721602A
Authority
CN
China
Prior art keywords
data
data block
row
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
Application number
CN202210644362.9A
Other languages
English (en)
Other versions
CN114721602B (zh
Inventor
柳龙杰
钟治魁
苏德全
王平江
黄剑峰
陈文奇
黄达森
柯榕彬
赖晓彬
罗文贵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quanzhou-Hust Intelligent Manufacturing Future
Original Assignee
Quanzhou-Hust Intelligent Manufacturing Future
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Quanzhou-Hust Intelligent Manufacturing Future filed Critical Quanzhou-Hust Intelligent Manufacturing Future
Priority to CN202210644362.9A priority Critical patent/CN114721602B/zh
Publication of CN114721602A publication Critical patent/CN114721602A/zh
Application granted granted Critical
Publication of CN114721602B publication Critical patent/CN114721602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及嵌入式非易失性存储器存储管理领域,具体涉及一种基于FreeRTOS的Nor Flash滚动存储方法及装置,方法包括:分别读取存储数据所对应的第一数据块地址和第二数据块地址的第一行数据,并将该两第一行数据分别进行CRC16校验计算,根据校验结果找出最新数据并取出,当第一行数据无法确定最新数据时,根据第一、第二数据块的第二行数据进行CRC16校验计算,FreeRTOS操作系统的存储管理任务MemoryTask接收到写请求消息MemWorkMsg后,根据该请求消息确定存储数据类型,并根据存储数据类型获得对应第一数据块与第二数据块的地址,将待存储数据滚动写入第一数据块或者第二数据块中。本发明无需引入辅助存储器即可解决Nor Flash擦写速度较慢而导致的掉电数据异常及擦写寿命有限的问题。

Description

一种基于FreeRTOS的Nor Flash滚动存储方法及装置
技术领域
本发明涉及嵌入式非易失性存储器存储管理领域,具体涉及一种基于FreeRTOS的Nor Flash滚动存储方法及装置。
背景技术
Nor Flash是一种非易失性闪存设备,由Intel于1988年发明,是当前市场上最主要的两种非易失性闪存类型之一。Nor Flash读取速度快,带有片内执行技术,程序可以直接在其内部运行,省去了代码搬运至RAM执行的时间,在存储器引导、系统启动引导、代码执行上有着不可替代的作用。同时,Nor Flash的数据传输效率高,接口简单易于使用,且不容易产生坏块,在小容量存储器中具有很高的成本效益。
但Nor Flash的写操作及擦除操作速度较慢,这就导致了在掉电的时候如果正在执行写操作或擦除操作但操作还未完成,则会出现存储数据出错的严重情况,同时NorFlash可擦除次数仅为10万次左右,对于频繁变更的数据存储不能很好地支持。因此对于较复杂的嵌入式系统,往往会采用Nor Flash加其他辅助存储器来解决以上问题。辅助存储器一般采用FRAM(铁电存储器)、SRAM(静态随机存取存储器)、EEPROM(带电可擦可编程只读存储器)等,这些辅助存储器常常具备可重复写入或快速擦写的能力,可用于地址索引、日志索引、掉电位置等的存储,而Nor Flash仅用做数据内容的存储。这样的分工对于系统数据的实时性、可靠性和安全性均有着很大的保证。但对于低成本要求、低复杂度设计的嵌入式系统来说,引入辅助存储器是难以接受的方式,这也就造成了Nor Flash在低成本、低复杂度的单片机系统中应用较少的情况。
发明内容
本发明提出一种基于FreeRTOS的Nor Flash滚动存储方法及装置,无需引入辅助存储器即可解决Nor Flash擦写速度较慢而导致的掉电数据异常及擦写寿命有限的问题。
本发明通过以下技术方案实现:
一种基于FreeRTOS的Nor Flash滚动存储方法,包括如下步骤:
步骤S1、指定Nor Flash芯片内地址前后连续的两数据块作为存储数据的第一数据块和第二数据块,对Nor Flash芯片和FreeRTOS操作系统初始化;
步骤S2、分别读取第一数据块地址和第二数据块地址的第一行数据,并将该两第一行数据分别进行CRC16校验计算,若第一、第二数据块的第一行数据校验均不通过,将第一、第二数据块进行擦除后在第一数据块第一行写入默认值内容;若第一数据块的第一行数据校验通过且第二数据块的第一行数据校验不通过,则从第一数据块中找出最新数据并取出;若第二数据块的第一行数据校验通过且第一数据块的第一行数据校验不通过,则从第二数据块中找出最新数据并取出;若第一、第二数据块的第一行数据校验均通过,则进入步骤S3;
步骤S3、分别读取第一、第二数据块的第二行数据,并将该两第二行数据进行CRC16校验计算,若第一数据块的第二行数据校验不通过且第二数据块的第二行数据校验通过,则第一数据块的第一行数据为最新数据,将其取出并擦除第二数据块,若第一数据块的第二行数据校验通过且第二数据块的第二行数据校验不通过,则第二数据块的第一行数据为最新数据,将其取出并擦除第一数据块,否则,将第一、第二数据块进行擦除后在第一数据块第一行写入默认值内容;
步骤S4、FreeRTOS操作系统的存储管理任务MemoryTask接收到写请求消息MemWorkMsg后,根据该请求消息确定存储数据类型,并根据存储数据类型获得对应第一数据块与第二数据块的地址,将待存储数据滚动写入第一数据块或者第二数据块中,其中,MemWorkMsg消息采取队列机制,写请求通过发送消息进入待处理队列,存储管理任务MemoryTask按设定周期进行队列的读取与处理。
进一步的,所述步骤S1具体包括:
指定Nor Flash芯片内地址前后连续的两数据块作为存储数据的第一数据块和第二数据块;
上电后对Nor Flash芯片初始化,并启动FreeRTOS操作系统内核及存储管理任务;
创建FreeRTOS操作系统的消息队列,消息队列中消息的数据内容包含参数索引号、参数有效数量、参数内容数据。
进一步的,所述步骤S2中:所述第一数据块第一行数据为第一数据块按行划分后的首行数据,第一数据块按照数据行大小进行平均划分,数据行大小为可被第一数据块大小整除的数;所述第二数据块第一行数据为第二数据块按行划分后的首行数据,第二数据块按照数据行大小进行平均划分,数据行大小为可被第二数据块大小整除的数。
进一步的,所述数据行内容按照地址从低到高依次包含存储数据、行偏移地址、CRC16校验值、异常行标识和最新数据标识。
进一步的,所述步骤S2中,从第一数据块中找出最新数据的过程为:判断第一数据块第一行数据是否为最新数据,若是,读取该第一行数据,若否,读取下一行数据并进行CRC16校验计算,若校验通过,则判断该行数据是否为最新数据,若为最新数据则取出该行数据,否则,继续读取下一行数据并进行判断,直至遍历整个第一数据块,若某一行数据的CRC16校验不通过,则标识该数据行为异常行,并取该数据行的上一行数据为最新数据。
进一步的,当数据行被标识为异常行,则在写数据时,该行被自动跳过。
进一步的,所述步骤S4中,根据所述参数有效数量和参数内容数据,将待存储数据滚动写入第一数据块或者第二数据块中。
进一步的,所述步骤S4中,所述将待存储数据滚动写入第一数据块或者第二数据块中,具体包括:
计算待写入的数据行偏移地址,若该行偏移地址已经到达第二数据块的地址下边界,则将行偏移地址设置为第一数据块的第一行数据行地址,行偏移地址为当前数据行在第一数据块或者第二数据块中的偏移地址;
计算待写入的数据行CRC16值,并采用地址对齐写缓冲法将数据行写入相应地址中;
判断写入的数据行偏移地址是否有跨数据块,若未跨数据块写入,则将上一行数据行标识为非最新数据,若有跨数据块写入,则将第一数据块擦除。
进一步的,所述步骤S4中,地址对齐写缓冲法具体为:
计算待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,计算待写入地址与Nor Flash写缓冲大小的对齐程度;,其中,写缓冲大小为Nor Flash的芯片参数;
若待写入地址与Nor Flash写缓冲大小对齐,则根据写缓冲次数做写入控制,若仅需一次写缓冲操作,则按照待写入数据长度进行写缓冲操作,若需要多次写缓冲操作,则先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据进行写缓冲操作;
若待写入地址与Nor Flash写缓冲大小不对齐,则计算待写入地址到下一对齐地址的可写字节数,再根据写缓冲次数的大小做写入控制,其中,该写入控制过程具体为:
若仅需一次Nor Flash写缓冲操作,且待写入地址到下一对齐地址的可写字节数大于或者等于待写入数据长度,则直接按待写入数据长度进行写缓冲操作,若待写入地址到下一对齐地址的可写字节数小于待写入数据长度,则先按大小写入数据,再将剩余数据写入下一个对齐地址;
若需要多次写缓冲操作,则先将待写入地址到下一对齐地址的可写字节数的数据写入Nor Flash,再重新计算待写入数据长度、待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,再先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据写入Nor Flash。
本发明还通过以下技术方案实现:
一种基于FreeRTOS的Nor Flash滚动存储装置,包括Nor Flash存储器、ARM处理器及可在ARM处理器上运行的程序,ARM处理器执行所述程序时实现上述基于FreeRTOS的NorFlash滚动存储方法。
本发明具有如下有益效果:
1、本发明利用FreeRTOS操作系统和相应的读写步骤,使Nor Flash实现安全可靠的读写操作,且无多线程并行访问冲突的问题,无需引入辅助存储器,单片Nor Flash芯片即可实现掉电数据恢复、擦写寿命管理等Nor Flash应用难题,且本发明针对数据本身进行操作,使得数据更新机制更为快速高效,也使得Nor Flash的存储操作复杂度更低,便于产品质量的管控,再者,对于低价的小容量串行接口Nor Flash芯片也能够支持,从而使系统成本更低,产品竞争力更大。
附图说明
下面结合附图对本发明做进一步详细说明。
图1为本发明步骤S2至步骤S3的流程图。
图2为本发明步骤S4的流程图。
图3为本发明步骤S4中的地址对齐写缓冲法的流程图。
图4为本发明数据行存储结构示意图。
具体实施方式
如图1至图4所示,基于FreeRTOS的Nor Flash滚动存储方法包括如下步骤:
步骤S1、对Nor Flash芯片和FreeRTOS操作系统初始化,具体包括:
上电后对Nor Flash芯片初始化,并启动FreeRTOS操作系统内核及存储管理任务MemoryTask;
创建FreeRTOS操作系统的消息队列,消息队列中的消息MemWorkMsg的数据内容包含参数索引号ParaIndex、参数有效数量ParaNum、参数内容数据ParaData;
在代码宏定义中分别指定Nor Flash芯片内地址前后连续的两数据块作为存储数据的第一数据块和第二数据块,该地址为Nor Flash芯片的物理地址,每种类型的存储数据均分配两个数据块,数据块大小与Nor Flash芯片的最大擦除单元大小一致(即第一数据块和第二数据块大小相同),第一数据块和第二数据块地址连续,第一数据块地址在前,第二数据块地址在后,存储数据时默认从低地址开始存储,第一数据块存满后转第二数据块存储,第二数据块存储满后再转第一数据块存储;
步骤S2、第一数据块第一行数据为第一数据块按行划分后的首行数据,第一数据块按照数据行大小进行平均划分,数据行大小为可被第一数据块大小整除的数;第二数据块第一行数据为第二数据块按行划分后的首行数据,第二数据块按照数据行大小进行平均划分,数据行大小为可被第二数据块大小整除的数,第一行数据和第二行数据即是分别对应于第一数据块和第二数据块的数据行,第一数据块和第二数据块的数据行大小相同;
如图4所示,数据行内容按照地址从低到高依次包含存储数据、行偏移地址、CRC16校验值、异常行标识和最新数据标识,存储数据为需要被存储的用户数据;行偏移地址为当前数据行在数据块中的偏移地址;CRC16校验值为当前数据行除异常行标识和最新数据标识外的数据的CRC16计算值;异常行标识用于标识当前数据行是否发生异常,0xFFFF表示无异常,0x3C3C表示已异常;最新数据标识用于标识当前数据行是否为最新数据,0xFFFF表示最新数据,0x3C3C表示非最新数据;
ARM处理器分别读取第一数据块地址和第二数据块地址的第一行数据,分别将第一数据块的第一行数据和第二数据块的第一行数据,进行长度为数据行大小减2的CRC16校验计算,若第一数据块的第一行数据校验不通过(即
Figure 443790DEST_PATH_IMAGE001
),且第二数据块的第一行数据校验不通过(即
Figure 2
),则表示该存储数据为首次初始化,将第一数据块和第二数据块进行擦除,擦除后在第一数据块第一行写入默认值内容,该默认值内容为已知量;若第一数据块的第一行数据校验通过(即
Figure 828821DEST_PATH_IMAGE003
)且第二数据块的第一行数据校验不通过(即
Figure 789824DEST_PATH_IMAGE004
),则表示最新数据存储在第一数据块中,故从第一数据块中找出最新数据并取出;若第二数据块的第一行数据校验通过(即
Figure 1
)且第一数据块的第一行数据校验不通过(即
Figure 103311DEST_PATH_IMAGE006
),则表示最新数据存储在第二数据块中,故从第二数据块中找出最新数据并取出;若第一数据块、第二数据块的第一行数据校验均通过,则进入步骤S3;
步骤S3、分别读取第一数据块、第二数据块的第二行数据,并将该两第二行数据进行CRC16校验计算,若第一数据块的第二行数据校验不通过(即
Figure 277940DEST_PATH_IMAGE007
),且第二数据块的第二行数据校验通过(即
Figure 144265DEST_PATH_IMAGE008
),则第一数据块的第一行数据为最新数据,读取第一数据块的第一行数据并擦除第二数据块,若第一数据块的第二行数据校验通过(即
Figure 404345DEST_PATH_IMAGE009
)且第二数据块的第二行数据校验不通过(即
Figure 14318DEST_PATH_IMAGE010
),则第二数据块的第一行数据为最新数据,读取第二数据块的第一行数据并擦除第一数据块,否则,说明存储数据已异常,将第一数据块、第二数据块进行擦除,擦除后在第一数据块第一行写入默认值内容;
其中,步骤S2中,从第一数据块中找出最新数据的过程为:根据最新数据标识判断第一数据块第一行数据是否为最新数据,若是(即最新数据标识为0xFFFF),读取该第一行数据,即将该第一行数据中的存储数据取出,若否(即最新数据标识为0x3C3C),读取下一行数据并进行CRC16校验计算,若校验通过(即校验值为0),则继续判断该行数据是否为最新数据,若为最新数据则取出该行数据的存储数据并返回,否则,继续读取下一行数据并进行判断,直至遍历整个第一数据块,若某一行数据的CRC16校验不通过(即校验值不为0),则标识该数据行为异常行,并取该异常数据行的上一行数据为最新数据并返回,即将行偏移地址改为上一行;当数据行被标识为异常行,则在写数据时,该行被自动跳过;数据行一旦被标识为异常,则仅在其所在数据块被擦除时才可恢复;
步骤S4、FreeRTOS操作系统的存储管理任务MemoryTask接收到写请求消息MemWorkMsg后,根据该请求消息MemWorkMsg中的参数索引号ParaIndex确定存储数据类型,并根据存储数据类型获得对应第一数据块与第二数据块的地址,再根据MemWorkMsg中的参数有效数量ParaNum和参数内容数据ParaData,将待存储数据滚动写入第一数据块或者第二数据块中,其中,MemWorkMsg消息采取队列机制,写请求通过发送消息进入待处理队列,存储管理任务MemoryTask按设定周期进行队列的读取与处理,此机制能够解决Nor Flash并行访问的数据冲突问题;参数索引号ParaIndex、参数有效数量ParaNum和参数内容数据ParaData的获取过程为现有技术。
其中,“将待存储数据滚动写入第一数据块或者第二数据块中”具体为:
计算待写入的数据行偏移地址,若该行偏移地址已经到达第二数据块的地址下边界,则将行偏移地址设置为第一数据块的第一行数据行地址,行偏移地址为当前数据行在第一数据块或者第二数据块中的偏移地址;
否则计算待写入的数据行CRC16值,并采用地址对齐写缓冲法将数据行写入相应地址中,即往行偏移地址对应的存储地址中写入存储数据;
判断写入的数据行偏移地址是否有跨数据块,若未跨数据块写入,则将上一行数据行标识为非最新数据(即最新数据标识置为0x3C3C),若有跨数据块写入,则将第一数据块擦除;
其中,Nor Flash均具有写缓冲操作,写缓冲操作具有芯片可支持的最快写入速度,但这个操作有地址对齐的要求,不对齐会产生错误,因此在用写缓冲操作前,需要先进行地址对齐的判断,若不对齐则进行拆分分成几个部分,让这几个部分都满足地址对齐,在本实施例中,地址对齐写缓冲法具体为:
计算待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,计算待写入地址与Nor Flash写缓冲大小的对齐程度,其中,写缓冲大小为Nor Flash的芯片参数;
若待写入地址与Nor Flash写缓冲大小对齐,则根据写缓冲次数做写入控制,若仅需一次写缓冲操作,则按照待写入数据长度进行写缓冲操作,若需要多次写缓冲操作,则先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据进行写缓冲操作;
若待写入地址与Nor Flash写缓冲大小不对齐,则计算待写入地址到下一对齐地址的可写字节数,再根据写缓冲次数的大小做写入控制,其中,该写入控制过程具体为:
若仅需一次Nor Flash写缓冲操作,且待写入地址到下一对齐地址的可写字节数大于或者等于待写入数据长度,则直接按待写入数据长度进行写缓冲操作,若待写入地址到下一对齐地址的可写字节数小于待写入数据长度,则先按该下一对齐地址的可写字节数大小写入数据,再将剩余数据写入下一个对齐地址;
若需要多次写缓冲操作,则先将待写入地址到下一对齐地址的可写字节数的数据写入Nor Flash,再重新计算待写入数据长度、待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,再先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据写入Nor Flash。
基于FreeRTOS的Nor Flash滚动存储装置包括Nor Flash存储器、ARM处理器及可在ARM处理器上运行的计算机程序,ARM处理器执行所述程序时实现如上所述的基于FreeRTOS的Nor Flash滚动存储方法。
以上所述,仅为本发明的较佳实施例而已,故不能以此限定本发明实施的范围,即依本发明申请专利范围及说明书内容所作的等效变化与修饰,皆应仍属本发明专利涵盖的范围内。

Claims (10)

1.一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:包括如下步骤:
步骤S1、指定Nor Flash芯片内地址前后连续的两数据块作为存储数据的第一数据块和第二数据块,对Nor Flash芯片和FreeRTOS操作系统初始化;
步骤S2、分别读取第一数据块地址和第二数据块地址的第一行数据,并将该两第一行数据分别进行CRC16校验计算,若第一、第二数据块的第一行数据校验均不通过,将第一、第二数据块进行擦除后在第一数据块第一行写入默认值内容;若第一数据块的第一行数据校验通过且第二数据块的第一行数据校验不通过,则从第一数据块中找出最新数据并取出;若第二数据块的第一行数据校验通过且第一数据块的第一行数据校验不通过,则从第二数据块中找出最新数据并取出;若第一、第二数据块的第一行数据校验均通过,则进入步骤S3;
步骤S3、分别读取第一、第二数据块的第二行数据,并将该两第二行数据进行CRC16校验计算,若第一数据块的第二行数据校验不通过且第二数据块的第二行数据校验通过,则第一数据块的第一行数据为最新数据,将其取出并擦除第二数据块,若第一数据块的第二行数据校验通过且第二数据块的第二行数据校验不通过,则第二数据块的第一行数据为最新数据,将其取出并擦除第一数据块,否则,将第一、第二数据块进行擦除后在第一数据块第一行写入默认值内容;
步骤S4、FreeRTOS操作系统的存储管理任务MemoryTask接收到写请求消息MemWorkMsg后,根据该请求消息确定存储数据类型,并根据存储数据类型获得对应第一数据块与第二数据块的地址,将待存储数据滚动写入第一数据块或者第二数据块中,其中,MemWorkMsg消息采取队列机制,写请求通过发送消息进入待处理队列,存储管理任务MemoryTask按设定周期进行队列的读取与处理。
2.根据权利要求1所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S1具体包括:
指定Nor Flash芯片内地址前后连续的两数据块作为存储数据的第一数据块和第二数据块;
上电后对Nor Flash芯片初始化,并启动FreeRTOS操作系统内核及存储管理任务;
创建FreeRTOS操作系统的消息队列,消息队列中消息的数据内容包含参数索引号、参数有效数量、参数内容数据。
3.根据权利要求2所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S2中:所述第一数据块第一行数据为第一数据块按行划分后的首行数据,第一数据块按照数据行大小进行平均划分,数据行大小为可被第一数据块大小整除的数;所述第二数据块第一行数据为第二数据块按行划分后的首行数据,第二数据块按照数据行大小进行平均划分,数据行大小为可被第二数据块大小整除的数。
4.根据权利要求3所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述数据行内容按照地址从低到高依次包含存储数据、行偏移地址、CRC16校验值、异常行标识和最新数据标识。
5.根据权利要求1或2或3或4所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S2中,从第一数据块中找出最新数据的过程为:判断第一数据块第一行数据是否为最新数据,若是,读取该第一行数据,若否,读取下一行数据并进行CRC16校验计算,若校验通过,则判断该行数据是否为最新数据,若为最新数据则取出该行数据,否则,继续读取下一行数据并进行判断,直至遍历整个第一数据块,若某一行数据的CRC16校验不通过,则标识该数据行为异常行,并取该数据行的上一行数据为最新数据。
6.根据权利要求5所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:当数据行被标识为异常行,则在写数据时,该行被自动跳过。
7.根据权利要求2或3或4所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S4中,根据所述参数有效数量和参数内容数据,将待存储数据滚动写入第一数据块或者第二数据块中。
8.根据权利要求7所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S4中,所述将待存储数据滚动写入第一数据块或者第二数据块中,具体包括:
计算待写入的数据行偏移地址,若该行偏移地址已经到达第二数据块的地址下边界,则将行偏移地址设置为第一数据块的第一行数据行地址,行偏移地址为当前数据行在第一数据块或者第二数据块中的偏移地址;
计算待写入的数据行CRC16值,并采用地址对齐写缓冲法将数据行写入相应地址中;
判断写入的数据行偏移地址是否有跨数据块,若未跨数据块写入,则将上一行数据行标识为非最新数据,若有跨数据块写入,则将第一数据块擦除。
9.根据权利要求2或3或4所述的一种基于FreeRTOS的Nor Flash滚动存储方法,其特征在于:所述步骤S4中,地址对齐写缓冲法具体为:
计算待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,计算待写入地址与Nor Flash写缓冲大小的对齐程度,其中,写缓冲大小为Nor Flash的芯片参数;
若待写入地址与Nor Flash写缓冲大小对齐,则根据写缓冲次数做写入控制,若仅需一次写缓冲操作,则按照待写入数据长度进行写缓冲操作,若需要多次写缓冲操作,则先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据进行写缓冲操作;
若待写入地址与Nor Flash写缓冲大小不对齐,则计算待写入地址到下一对齐地址的可写字节数,再根据写缓冲次数的大小做写入控制,其中,该写入控制过程具体为:
若仅需一次Nor Flash写缓冲操作,且待写入地址到下一对齐地址的可写字节数大于或者等于待写入数据长度,则直接按待写入数据长度进行写缓冲操作,若待写入地址到下一对齐地址的可写字节数小于待写入数据长度,则先按大小写入数据,再将剩余数据写入下一个对齐地址;
若需要多次写缓冲操作,则先将待写入地址到下一对齐地址的可写字节数的数据写入Nor Flash,再重新计算待写入数据长度、待写入数据需要的Nor Flash写缓冲次数及剩余需额外写入的字节数,再先完成满缓冲大小的写缓冲操作再将剩余需额外写入的字节数数据写入Nor Flash。
10.一种基于FreeRTOS的Nor Flash滚动存储装置,其特征在于:包括Nor Flash存储器、ARM处理器及可在ARM处理器上运行的程序,ARM处理器执行所述程序时实现如上1-9任一所述的基于FreeRTOS的Nor Flash滚动存储方法。
CN202210644362.9A 2022-06-09 2022-06-09 一种基于FreeRTOS的Nor Flash滚动存储方法及装置 Active CN114721602B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210644362.9A CN114721602B (zh) 2022-06-09 2022-06-09 一种基于FreeRTOS的Nor Flash滚动存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210644362.9A CN114721602B (zh) 2022-06-09 2022-06-09 一种基于FreeRTOS的Nor Flash滚动存储方法及装置

Publications (2)

Publication Number Publication Date
CN114721602A true CN114721602A (zh) 2022-07-08
CN114721602B CN114721602B (zh) 2022-08-23

Family

ID=82232647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210644362.9A Active CN114721602B (zh) 2022-06-09 2022-06-09 一种基于FreeRTOS的Nor Flash滚动存储方法及装置

Country Status (1)

Country Link
CN (1) CN114721602B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349079A (zh) * 2023-11-16 2024-01-05 苏州门海微电子科技有限公司 一种用于SPI NorFlash的ECC数据纠错方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080069453A (ko) * 2007-01-23 2008-07-28 엘지전자 주식회사 실시간 운영 체제 시스템의 외부 입력 처리 방법
CN103425546A (zh) * 2013-08-14 2013-12-04 江苏林洋电子股份有限公司 一种通用高效高可靠的Nor Flash数据存储管理方法
CN106776752A (zh) * 2016-11-22 2017-05-31 上海拓攻机器人有限公司 一种应用于无人机飞行数据的嵌入式文件存储系统及方法
CN109164979A (zh) * 2018-07-31 2019-01-08 国蓉科技有限公司 一种Linux下的RAID高速存储驱动器及驱动方法
CN109408208A (zh) * 2018-09-21 2019-03-01 深圳华大北斗科技有限公司 导航芯片的多任务处理方法、设备、系统以及存储介质
CN109885507A (zh) * 2017-12-06 2019-06-14 三星电子株式会社 半导体装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080069453A (ko) * 2007-01-23 2008-07-28 엘지전자 주식회사 실시간 운영 체제 시스템의 외부 입력 처리 방법
CN103425546A (zh) * 2013-08-14 2013-12-04 江苏林洋电子股份有限公司 一种通用高效高可靠的Nor Flash数据存储管理方法
CN106776752A (zh) * 2016-11-22 2017-05-31 上海拓攻机器人有限公司 一种应用于无人机飞行数据的嵌入式文件存储系统及方法
CN109885507A (zh) * 2017-12-06 2019-06-14 三星电子株式会社 半导体装置
CN109164979A (zh) * 2018-07-31 2019-01-08 国蓉科技有限公司 一种Linux下的RAID高速存储驱动器及驱动方法
CN109408208A (zh) * 2018-09-21 2019-03-01 深圳华大北斗科技有限公司 导航芯片的多任务处理方法、设备、系统以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349079A (zh) * 2023-11-16 2024-01-05 苏州门海微电子科技有限公司 一种用于SPI NorFlash的ECC数据纠错方法
CN117349079B (zh) * 2023-11-16 2024-05-24 苏州门海微电子科技有限公司 一种用于SPI NorFlash的ECC数据纠错方法

Also Published As

Publication number Publication date
CN114721602B (zh) 2022-08-23

Similar Documents

Publication Publication Date Title
CN102880521B (zh) 非易失性存储器装置中管理块和存取数据页的方法及设备
US7240178B2 (en) Non-volatile memory and non-volatile memory data rewriting method
TWI389122B (zh) 用來存取一快閃記憶體之方法以及相關之記憶裝置及其控制器
US20090193058A1 (en) System and method for providing copyback data integrity in a non-volatile memory system
US20040083333A1 (en) Hybrid implementation for error correction codes within a non-volatile memory system
CN109582216B (zh) 数据储存装置与存储器装置的数据处理方法
US7725646B2 (en) Method of using a flash memory for a circular buffer
CN101763903A (zh) 快闪存储器控制器、其纠错码控制器及其方法和系统
JPWO2007119267A1 (ja) フラッシュメモリ用のメモリコントローラ
CN110286853B (zh) 一种数据写入方法和装置、计算机可读存储介质
US20230017942A1 (en) Memory sub-system event log management
CN114721602B (zh) 一种基于FreeRTOS的Nor Flash滚动存储方法及装置
US20140258792A1 (en) Symmetrical Data Replication For Failure Management In Non-Volatile Memory Systems
CN112270945B (zh) 记录是否有擦除时掉电的方法、装置、存储介质和终端
US7886211B2 (en) Memory controller
JP2010067098A (ja) 情報処理装置、情報処理方法および情報処理プログラム
US7657795B2 (en) Method and apparatus for writing to a target memory page of a memory
JP2004220068A (ja) メモリカード及びメモリへのデータ書き込み方法
JP3675375B2 (ja) 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法
CN113918485B (zh) 一种闪存资料防丢失方法、装置、设备及存储介质
JP2003196165A (ja) 不揮発性メモリ及びそのデータ更新方法
CN112908390B (zh) 数据存储方法、装置、电子设备及存储介质
US7353348B2 (en) Nonvolatile memory and card reader provided with the same
US7313648B2 (en) Corruption tolerant method and system for deploying and modifying data in flash memory
CN115312108B (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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20220708

Assignee: Quanzhou Tonghua Technology Co.,Ltd.

Assignor: QUANZHOU-HUST INTELLIGENT MANUFACTURING FUTURE

Contract record no.: X2023350000275

Denomination of invention: A Method and Device for No Flash Rolling Storage Based on FreeRTOS

Granted publication date: 20220823

License type: Common License

Record date: 20230530

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20220708

Assignee: QUANZHOU HUASHU ROBOT CO.,LTD.

Assignor: QUANZHOU-HUST INTELLIGENT MANUFACTURING FUTURE

Contract record no.: X2023350000284

Denomination of invention: A Method and Device for No Flash Rolling Storage Based on FreeRTOS

Granted publication date: 20220823

License type: Common License

Record date: 20230606

EE01 Entry into force of recordation of patent licensing contract