CN107870926A - 一种实时存储的方法及装置 - Google Patents
一种实时存储的方法及装置 Download PDFInfo
- Publication number
- CN107870926A CN107870926A CN201610851380.9A CN201610851380A CN107870926A CN 107870926 A CN107870926 A CN 107870926A CN 201610851380 A CN201610851380 A CN 201610851380A CN 107870926 A CN107870926 A CN 107870926A
- Authority
- CN
- China
- Prior art keywords
- interface
- yaffs2
- flash
- sector
- file system
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种实时存储的方法及装置。该方法包括:将YAFFS2移植到嵌入式操作系统;并实现YAFFS2文件的实时存储。本发明将YAFFS2移植在存储设备为NOR FLASH、非Linux操作系统的嵌入式系统中,YAFFS2是一种类日志文件系统,实现垃圾回收、损耗平衡等性能,可以在意外掉电重启后自动提供可靠的资料记录,防止文件系统的崩溃;能使用独立的日志文件跟踪文件系统内容的变化;当发生意外掉电重启后,YAFFS2选择用新文件完全代替旧的文件,或者已写部分使用新文件,未写部分使用旧文件,这种方式增强了掉电时未完全写入文件的安全性能。
Description
技术领域
本发明实施例涉及通信的技术领域,尤其涉及一种实时存储的方法及装置。
背景技术
FLASH作为一种安全快速的存储体,成为了嵌入式系统中数据和程序最主要的载体。FLASH主要有NOR和NAND两种技术。从读写性能来对比这两种技术,在写操作时,NAND执行擦除操作相对简单,而NOR在进行擦除操作前需要先要将目标块内所有的位都写为1。擦除NOR FLASH时是以64~128KB的块进行的,执行一个擦除操作/写入操作的时间约为5s。擦除NAND器件是以8~32KB的块进行的,执行一个擦除操作/写入操作最多只需要4ms。在读操作时,NOR的读速度比NAND稍快一些。
目前,支持在这两种FLASH上运行的常用文件系统有CRAMFS、JFFS2、YAFFS2等。CRAMFS文件系统是只读文件系统。如果想在FLASH上实现读写操作,通常在NOR FLASH上选取JFFS2文件系统,在NAND FLASH上选取YAFFS2文件系统。另一个闪存文件系统(YetAnother Flash File System,YAFFS2)文件系统支持大页(2KByte/页)的NAND FLASH。
通常,在NOR FLASH上会选取JFFS2文件系统,因为YAFFS2是专为NAND FLASH设计的文件系统。但是,要使用JFFS2文件系统,离不开内存技术设备(Memory TechnologyDevice,MTD)的支持。对于存储设备为NOR FLASH、操作系统不是Linux的嵌入式系统来说,不能使用JFFS2文件系统。
YAFFS2文件系统不仅支持使用MTD驱动层和VFS层,这也是一般在嵌入式Linux作业系统中使用YAFFS2文件系统的常用方法,除此之外,YAFFS2还带有NAND FLASH驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。因此,如何将YAFFS2应用于存储设备为NOR FLASH、操作系统不是Linux的嵌入式系统,是有待解决的技术问题。
发明内容
本发明实施例的目的在于提出一种实时存储的方法及装置,旨在解决实现将YAFFS2应用于NOR FLASH。
为达此目的,本发明实施例采用以下技术方案:
第一方面,一种实时存储的方法,所述方法包括:
将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
并实现YAFFS2文件的实时存储。
优选地,所述通过所述YDI接口层实现所述YAFFS2与API,包括:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
优选地,所述所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
优选地,所述通过所述YDI接口层实现所述YAFFS2与RTOS之间的所有接口,包括:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
优选地,所述通过所述YDI接口层实现所述YAFFS2与FLASH之间的所有接口,包括:
通过所述YDI接口层实现FLASH接口,所述FLASH接口包括:FLASH Driver接口、虚拟BLOCK和CHUNK机制,所述FLASH Driver接口包括:drv_write_chunk_fn、drv_read_chunk_fn、drv_erase_fn、drv_mark_bad_fn、drv_check_bad_fn和/或drv_initialise_fn。
优选地,所述通过所述YDI接口层实现虚拟BLOCK和CHUNK机制,包括:
在YAFFS2中,将NOR FLASH的一个SECTOR映射为一个BLOCK,再将BLOCK虚拟成由N个CHUCK组成。
优选地,所述实现YAFFS2文件的实时存储,包括:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
优选地,所述方法还包括:
在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;
在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;
在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
第二方面,一种实时存储的装置,所述装置包括:
移植模块,用于将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
存储模块,用于实现YAFFS2文件的实时存储。
优选地,所述移植模块,具体用于:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
优选地,所述所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
优选地,所述移植模块,还具体用于:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
优选地,所述移植模块,还具体用于:
通过所述YDI接口层实现FLASH接口,所述FLASH接口包括:FLASH Driver接口、虚拟BLOCK和CHUNK机制,所述FLASH Driver接口包括:drv_write_chunk_fn、drv_read_chunk_fn、drv_erase_fn、drv_mark_bad_fn、drv_check_bad_fn和/或drv_initialise_fn。
优选地,所述移植模块,还具体用于:
在YAFFS2中,将NOR FLASH的一个SECTOR映射为一个BLOCK,再将BLOCK虚拟成由N个CHUCK组成。
优选地,所述存储模块,具体用于:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
优选地,所述装置还包括:
处理模块,用于在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
本发明实施例提供一种实时存储的方法及装置,将YAFFS2移植到嵌入式操作系统;并实现YAFFS2文件的实时存储。将YAFFS2移植在存储设备为NOR FLASH、非Linux操作系统的嵌入式系统中,YAFFS2是一种类日志文件系统,实现垃圾回收、损耗平衡等性能,可以在意外掉电重启后自动提供可靠的资料记录,防止文件系统的崩溃;能使用独立的日志文件跟踪文件系统内容的变化;当发生意外掉电重启后,YAFFS2选择用新文件完全代替旧的文件,或者已写部分使用新文件,未写部分使用旧文件,这种方式增强了掉电时未完全写入文件的安全性能。
附图说明
图1是本发明实施例提供的一种实时存储的方法的流程示意图;
图2是本发明实施例提供的一种YAFFS2架构示意图;
图3是本发明实施例提供的另一种实时存储的方法的流程示意图;
图4是本发明实施例提供的一种实时存储的装置的功能模块示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
参考图1,图1是本发明实施例提供的一种实时存储的方法的流程示意图。
如图1所示,所述实时存储的方法包括:
步骤101,将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
优选地,所述通过所述YDI接口层实现所述YAFFS2与RTOS之间的所有接口,包括:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
具体的,如图2所示,图2是本发明实施例提供的一种YAFFS2架构示意图。将YAFFS2移植到NUCLEUS使用如下定义,实现基本数据类型的转换:即将用嵌入式系统(NUCLEUS)定义的基本数据类型替换YAFFS2中使用的基本数据类型。
1、typedef long off_t;
typedef unsigned int dev_t;
typedef unsigned short mode_t;
2.使用NU_Allocate_Memory,实现内存分配;
3.使用NU_Obtain_Semaphore、NU_Release_Semaphore,实现同步机制;
4.读取RTC_CCVR寄存器值,实现系统时间。
优选地,所述通过所述YDI接口层实现所述YAFFS2与API,包括:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
优选地,所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
优选地,所述通过所述YDI接口层实现所述YAFFS2与RTOS之间的所有接口,包括:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统接口RTOS之间操作系统接口TOS Interaction Interface,所述操作系统接口包括用于实现kmalloc、kfree接口,用于动态分配、释放内存的内存分配接口;用于实现yaffsfs_CurrentTime接口和获取系统当前时间的系统时间接口;用于实现多任务同步机制接口yaffsfs_Lock、yaffsfs_Unlock接口和多任务环境下对文件访问的保护的同步机制接口。以及基本数据类型的转换,如off_t、dev_t、mode_t等。
优选地,所述通过所述YDI接口层实现所述YAFFS2与FLASH之间的所有接口,包括:
通过所述YDI接口层实现FLASH接口FLASH Configuration and AccessInterface,所述FLASH接口包括FLASH Driver接口和虚拟BLOCK和CHUNK,所述FLASHDriver接口包括drv_write_chunk_fn接口、drv_read_chunk_fn接口、drv_erase_fn接口、drv_mark_bad_fn接口、drv_check_bad_fn接口和/或drv_initialise_fn接口。
优选地,所述通过所述YDI接口层实现所述YAFFS2与FLASH之间的所有接口,包括:
在NOR FLASH上创建对应的BLOCK和CHUNK,通过虚拟的BLOCK和CHUNK运行所述YAFFS2。
优选地,所述在NOR FLASH上创建对应的BLOCK和CHUNK,包括:
在所述NOR FLASH的一个SECTOR相当于一个虚拟BLOCK,一个虚拟BLOCK包含N个虚拟CHUNK。
步骤102,实现YAFFS2文件的实时存储。
优选地,所述实现YAFFS2文件的实时存储,包括:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
参考图3,图3是本发明实施例提供的另一种实时存储的方法的流程示意图。
如图3所示,所述实时存储的方法包括:
步骤301,将YAFFS2移植到嵌入式操作系统;
步骤302,将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中;
步骤303,在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
具体的,将第num块SECTOR数据。为确保在发生异常(突然掉电等)时SECTOR数据的完整性,采用以下机制:
1、在FLASH上预留1个备用SECTOR;
2、FLASH上预留2个地址索引表。在FLASH上的高地址区(0x187F0000)分配2个8KB的sector作为地址索引表,其擦写速度快。主、备索引表都包含一个int值updateCount,值大的为主,值小的为备。当写某个索引表时,其updateCount值加1。
3、写文件:
3.1、写第sector_i块
3.2、把SDRAM上第sector_i块的数据写入备用SECTOR
若发生异常(突然掉电),重新开机后,读取主索引表中的地址,即可恢复原有文件系统的数据。
3.3、修改备索引表:
1)将sector_i与sector_bak对应的地址互换
2)将updateCount加1,计算crc
3)写FLASH上的备索引表
4)更新内存中的备索引表
若发生异常(突然掉电),上电重新开机后,读取主索引表中的地址,即可恢复原有文件系统的数据。备注:当备索引表的updateCount值发生改变时,主备索引表的身份就已悄然发生转换。
3.4、写第sector_x块,转第3.1。
参考图4,图4是本发明实施例提供的一种实时存储的装置的功能模块示意图。
如图4所示,所述装置包括:
移植模块401,用于将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
存储模块402,用于实现YAFFS2文件的实时存储。
优选地,所述移植模块401,具体用于:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
优选地,所述所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
优选地,所述移植模块401,还具体用于:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
优选地,所述移植模块401,还具体用于:
通过所述YDI接口层实现FLASH接口,所述FLASH接口包括:FLASH Driver接口、虚拟BLOCK和CHUNK机制,所述FLASH Driver接口包括:drv_write_chunk_fn、drv_read_chunk_fn、drv_erase_fn、drv_mark_bad_fn、drv_check_bad_fn和/或drv_initialise_fn。
优选地,所述移植模块401,还具体用于:
在YAFFS2中,将NOR FLASH的一个SECTOR映射为一个BLOCK,再将BLOCK虚拟成由N个CHUCK组成。
优选地,所述存储模块402,具体用于:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
优选地,所述装置还包括:
处理模块,用于在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
本发明实施例提供一种实时存储的装置,将YAFFS2移植到嵌入式操作系统;并实现YAFFS2文件的实时存储。将YAFFS2移植在存储设备为NOR FLASH、非Linux操作系统的嵌入式系统中,YAFFS2是一种类日志文件系统,实现垃圾回收、损耗平衡等性能,可以在意外掉电重启后自动提供可靠的资料记录,防止文件系统的崩溃;能使用独立的日志文件跟踪文件系统内容的变化;当发生意外掉电重启后,YAFFS2选择用新文件完全代替旧的文件,或者已写部分使用新文件,未写部分使用旧文件,这种方式增强了掉电时未完全写入文件的安全性能。
以上结合具体实施例描述了本发明实施例的技术原理。这些描述只是为了解释本发明实施例的原理,而不能以任何方式解释为对本发明实施例保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明实施例的其它具体实施方式,这些方式都将落入本发明实施例的保护范围之内。
Claims (16)
1.一种实时存储的方法,其特征在于,所述方法包括:
将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
并实现YAFFS2文件的实时存储。
2.根据权利要求1所述的方法,其特征在于,所述通过所述YDI接口层实现所述YAFFS2与API,包括:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
3.根据权利要求2所述的方法,其特征在于,所述所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
4.根据权利要求2所述的方法,其特征在于,所述通过所述YDI接口层实现所述YAFFS2与RTOS之间的所有接口,包括:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
5.根据权利要求2所述的方法,其特征在于,所述通过所述YDI接口层实现所述YAFFS2与FLASH之间的所有接口,包括:
通过所述YDI接口层实现FLASH接口,所述FLASH接口包括:FLASHDriver接口、虚拟BLOCK和CHUNK机制,所述FLASH Driver接口包括:drv_write_chunk_fn、drv_read_chunk_fn、drv_erase_fn、drv_mark_bad_fn、drv_check_bad_fn和/或drv_initialise_fn。
6.根据权利要求5所述的方法,其特征在于,所述通过所述YDI接口层实现虚拟BLOCK和CHUNK机制,包括:
在YAFFS2中,将NOR FLASH的一个SECTOR映射为一个BLOCK,再将BLOCK虚拟成由N个CHUCK组成。
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述实现YAFFS2文件的实时存储,包括:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;
在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;
在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
9.一种实时存储的装置,其特征在于,所述装置包括:
移植模块,用于将另一个闪存文件系统YAFFS2移植到嵌入式操作系统,用于实现YAFFS2的YDI接口层,通过所述YDI接口层用于实现所述YAFFS2与应用程序编程接口API、所述YAFFS2与实时操作系统RTOS、所述YAFFS2与FLASH之间的所有接口;
存储模块,用于实现YAFFS2文件的实时存储。
10.根据权利要求9所述的装置,其特征在于,所述移植模块,具体用于:
通过所述YDI接口层实现应用程序接口,所述应用程序接口包括所有文件操作接口。
11.根据权利要求10所述的装置,其特征在于,所述所有文件操作接口包括:打开文件接口open、关闭文件接口close、写文件接口write和/或读文件接口read。
12.根据权利要求10所述的装置,其特征在于,所述移植模块,还具体用于:
通过所述YDI接口层实现所述YAFFS2与嵌入式操作系统的系统接口,所述系统接口包括:用于实现动态内存管理的接口;用于实现获取系统当前时间的接口;用于实现多任务同步机制的接口以及用于实现基本数据类型转换的接口。
13.根据权利要求10所述的装置,其特征在于,所述移植模块,还具体用于:
通过所述YDI接口层实现FLASH接口,所述FLASH接口包括:FLASHDriver接口、虚拟BLOCK和CHUNK机制,所述FLASH Driver接口包括:drv_write_chunk_fn、drv_read_chunk_fn、drv_erase_fn、drv_mark_bad_fn、drv_check_bad_fn和/或drv_initialise_fn。
14.根据权利要求13所述的装置,其特征在于,所述移植模块,还具体用于:
在YAFFS2中,将NOR FLASH的一个SECTOR映射为一个BLOCK,再将BLOCK虚拟成由N个CHUCK组成。
15.根据权利要求9至14任意一项所述的装置,其特征在于,所述存储模块,具体用于:
将所述YAFFS2文件系统映像从FLASH拷贝至SDRAM;
应用程序调用write或erase接口时,只更新SDRAM上的文件系统数据,同时记录更新的SECTOR的地址;
在系统空闲时调用且创建新任务,所述新任务为所述更新的SECTOR的地址对应的SDRAM上的文件系统数据,将所述文件系统数据写入FLASH中。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
处理模块,用于在擦写所述YAFFS2文件的SECTOR时,在FLASH上预留1个备用SECTOR,FLASH上预留2个地址索引表,所述2个地址索引表分为主索引表和备索引表,所述地址索引表用于记录所述文件系统数据所占用的SECTOR地址;在系统开机启动时,使用所述主索引表中保存的文件系统所在FLASH上的地址,完成文件系统数据的加载;在写文件时,将待写SECTOR的数据写入备用SECTOR,并更新所述主索引表和所述备索引表中文件系统数据所占用的SECTOR地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851380.9A CN107870926A (zh) | 2016-09-26 | 2016-09-26 | 一种实时存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851380.9A CN107870926A (zh) | 2016-09-26 | 2016-09-26 | 一种实时存储的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107870926A true CN107870926A (zh) | 2018-04-03 |
Family
ID=61751880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610851380.9A Pending CN107870926A (zh) | 2016-09-26 | 2016-09-26 | 一种实时存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870926A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN201156432Y (zh) * | 2007-10-30 | 2008-11-26 | 北京同方微电子有限公司 | 一种实现nor flash坏块管理的控制电路 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
CN103176920A (zh) * | 2013-03-26 | 2013-06-26 | 杭州华三通信技术有限公司 | Nor flash掉电保护方法及装置 |
CN103324578A (zh) * | 2013-06-20 | 2013-09-25 | 深圳市瑞耐斯技术有限公司 | 一种nand闪存设备及其随机写入方法 |
CN104537075A (zh) * | 2014-12-30 | 2015-04-22 | 宁波三星电气股份有限公司 | Yaffs文件系统在NorFlash中的应用方法 |
US20150309928A1 (en) * | 2009-09-18 | 2015-10-29 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
CN105354218A (zh) * | 2015-09-29 | 2016-02-24 | 成都嘉泰华力科技有限责任公司 | 基于VxWorks移植的YAFFS文件系统 |
-
2016
- 2016-09-26 CN CN201610851380.9A patent/CN107870926A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN201156432Y (zh) * | 2007-10-30 | 2008-11-26 | 北京同方微电子有限公司 | 一种实现nor flash坏块管理的控制电路 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
US20150309928A1 (en) * | 2009-09-18 | 2015-10-29 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
CN103176920A (zh) * | 2013-03-26 | 2013-06-26 | 杭州华三通信技术有限公司 | Nor flash掉电保护方法及装置 |
CN103324578A (zh) * | 2013-06-20 | 2013-09-25 | 深圳市瑞耐斯技术有限公司 | 一种nand闪存设备及其随机写入方法 |
CN104537075A (zh) * | 2014-12-30 | 2015-04-22 | 宁波三星电气股份有限公司 | Yaffs文件系统在NorFlash中的应用方法 |
CN105354218A (zh) * | 2015-09-29 | 2016-02-24 | 成都嘉泰华力科技有限责任公司 | 基于VxWorks移植的YAFFS文件系统 |
Non-Patent Citations (1)
Title |
---|
郭利军等: "基于VxWorks的YAFFS2文件系统移植", 《中国科技论文在线》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI398770B (zh) | 用於快閃記憶體的資料存取方法、儲存系統與控制器 | |
US20160283124A1 (en) | Multi-streamed solid state drive | |
US8909986B2 (en) | Data storing method for solid state drive to preserve data integrity after power failure | |
US7487303B2 (en) | Flash memory device and associated data merge method | |
DE102010013389B4 (de) | Verfahren und System zum Durchführen von Caching, basierend auf der Heuristik auf Dateiebene | |
TWI405082B (zh) | 記憶體系統及其映射方法 | |
US8489854B1 (en) | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table | |
US9367451B2 (en) | Storage device management device and method for managing storage device | |
KR101419004B1 (ko) | 비휘발성 메모리 시스템 | |
CN103092766B (zh) | 一种用于nand flash的均衡损耗实现方法 | |
US8661189B2 (en) | Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory | |
US20200117368A1 (en) | Method for achieving data copying in ftl of solid state drive, system and solid state drive | |
CN108021510A (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
US20080155301A1 (en) | Memory device performance enhancement through pre-erase mechanism | |
EP3752905B1 (en) | Append only streams for storing data on a solid state device | |
JP2008198208A (ja) | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 | |
CN103744614A (zh) | 固态硬盘访问的方法及其固态硬盘 | |
JP2006079543A (ja) | メモリ管理装置 | |
CN109117383B (zh) | 管理闪存模块的方法和闪存控制器 | |
CN102841851A (zh) | 闪存管理方法和闪存设备 | |
KR20130075018A (ko) | 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법 | |
CN106598493A (zh) | 一种固态硬盘地址映射表管理方法 | |
CN103365786A (zh) | 数据存储方法、装置和系统 | |
CN101714065A (zh) | 一种闪存控制器的映射信息管理方法 | |
KR20120084906A (ko) | 비휘발성 메모리 시스템 및 그 관리 방법 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180403 |
|
WD01 | Invention patent application deemed withdrawn after publication |