CN113485974A - Nor闪存使用yaffs的方法及装置 - Google Patents
Nor闪存使用yaffs的方法及装置 Download PDFInfo
- Publication number
- CN113485974A CN113485974A CN202110615553.8A CN202110615553A CN113485974A CN 113485974 A CN113485974 A CN 113485974A CN 202110615553 A CN202110615553 A CN 202110615553A CN 113485974 A CN113485974 A CN 113485974A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- chunk
- read
- file system
- yaffs
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 133
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000005055 memory storage Effects 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
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/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种NOR闪存使用YAFFS的方法。将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域。当需要读闪存时,YAFFS文件系统根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取。当需要写闪存时,YAFFS文件系统根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入。当需要擦除闪存时,YAFFS文件系统根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。本申请具有更好的适应性、兼容性,实施性佳,可自动适配市面上所有NOR闪存。
Description
技术领域
本申请涉及一种NOR(或非门)闪存(Flash)使用YAFFS(Yet Another Flash FileSystem,另一种闪存文件系统)文件系统的方法。
背景技术
YAFFS是一种NAND(与非门)闪存使用的嵌入式文件系统。当前NOR闪存的应用越来越多,YAFFS文件系统在磨损均衡和掉电保护方面有独特优势,因此已有将YAFFS文件系统扩展到NOR闪存的应用场景。
申请公布号为CN104537075A、申请公布日为2015年4月22日的中国发明专利申请《Yaffs文件系统在NorFlash中的应用方法》就公开了一种将YAFFS文件系统应用到NOR闪存的技术方案。该文献将NOR闪存分为多个块(Block),每个块又分为多个页(Page),每个页又分成两个区域——数据区域(DATA AREA)和空闲区域(SPARE AREA)。该方案的缺点是可实施性差。因为当NOR闪存的页的大小正好与YAFFS文件系统规定的数据区域的操作单元(chunk)的大小一致时,则无法将一个页分成两个区域。比如,某一款NOR闪存的容量为32MB,块的大小为64KB,页的大小为256字节(byte),如选用YAFFS1类型的YAFFS文件系统,那每个页只能是一个数据区域的操作单元,无法再放下空闲区域。
发明内容
本申请所要解决的技术问题是提出一种YAFFS文件系统在NOR闪存中的应用问题,使得YAFFS文件系统在NAND闪存和NOR闪存都可以应用,并且可实施性好。
为解决上述技术问题,本申请提出了一种NOR闪存使用YAFFS的方法,包括如下步骤。步骤S1:开机初始化时,检测NOR闪存的整体大小、块的大小、页的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块;将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域。步骤S2:加载NOR闪存的驱动程序,加载YAFFS文件系统。步骤S3:当需要读闪存时,所述YAFFS文件系统根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取。步骤S4:当需要写闪存时,所述YAFFS文件系统根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入。步骤S5:当需要擦除闪存时,所述YAFFS文件系统根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。或者,所述步骤S3、步骤S4、步骤S5的顺序任一在前。
进一步地,所述步骤S1中,所述NOR闪存按照固定的块的大小分为多个块,每个块又按照固定的页的大小分为多个页;每个块都有块序号,块序号具有唯一且从0开始顺序累加的特点。
进一步地,所述步骤S1中,YAFFS1管理的数据区域的操作单元chunk的大小是512字节,空闲区域的操作单元spare的大小为16字节;YAFFS2管理的chunk的大小是2048字节,spare的大小为64字节;每个chunk都有序号chunkid,chunkid具有唯一且从0开始顺序累加的特点。
进一步地,所述步骤S1中,chunk的大小≥页的大小,一个chunk由一个或多个页组成;spare的大小≤页的大小,每个spare对应地采用一个页进行存储。
进一步地,所述步骤S1中,一个NOR闪存中的spare的数量=chunk的数量,并且spare和chunk之间按先后顺序呈现一一对应的关系;每个chunkid都对应着一个chunk和一个spare。
进一步地,所述步骤S1中,根据页的大小决定YSFFS文件系统的类型,采用如下方式的任一种。第一,如果NOR闪存的页的大小是512字节,则采用YAFFS1作为YSFFS文件系统的类型。第二,如果NOR闪存的页的大小是2048字节,则选用YAFFS2作为YSFFS文件系统的类型。第三,如果NOR闪存的页的大小小于512字节,则将多个页合并为512字节,再选用YAFFS1作为YSFFS文件系统的类型。第四,如果NOR闪存的页的大小小于2048字节,则将多个页合并为2048字节,再选用YAFFS2作为YSFFS文件系统的类型。
进一步地,所述步骤S1中,分配空闲区域和数据区域的块,采用如下方式;首先计算空闲区域所需的块数量=NOR闪存的整体大小÷选定的YSFFS文件系统中一个chunk包含的页的数量÷块的大小;然后将位于NOR闪存末尾的“空闲区域所需的块数量”的块分配为空闲区域的块;最后将其余的块均作为数据区域的块。
进一步地,所述步骤S2中,所述驱动程序包括读闪存、写闪存、擦除闪存的驱动程序。
进一步地,所述步骤S3中,当需要读闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要读取的chunkid;(2)在该chunk读取后的内存存放地址;(3)在该chunk中的读取长度;(4)在“该chunkid对应的spare”读取后的内存存放地址;(5)在“该chunkid对应的spare”中的读取长度。在只读取数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要读取的chunk的起始地址=需要读取的chunkid×一个chunk的大小,然后再读取在“需要读取的chunk的起始地址”与“需要读取的chunk的起始地址+在该chunk中的读取长度”之间的数据并存放到上述第(2)项参数指定的内存空间。在只读取空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要读取的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小,然后再读取在“需要读取的spare的起始地址”与“需要读取的spare的起始地址+在‘该chunkid对应的spare’中的读取长度”之间的数据并存放到上述第(4)项参数指定的内存空间。在同时读取数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
进一步地,所述步骤S4中,当需要写闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要写入的chunkid;(2)向该chunk写入的数据存放的内存存放地址;(3)向该chunk中的写入长度;(4)在“该chunkid对应的spare”写入的数据存放的内存存放地址;(5)在“该chunkid对应的spare”中的写入长度。在只写入数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要写入的chunk的起始地址=需要写入的chunkid×一个chunk的大小,然后再从上述第(2)项参数指定的内存空间读取数据并写入到“需要写入的chunk的起始地址”与“需要写入的chunk的起始地址+在该chunk中的写入长度”之间的位置。在只写入空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要写入的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小;将“需要写入的spare的起始地址”与“需要写入的spare的起始地址+在‘该chunkid对应的spare’中的写入长度”之间称为指定位置;然后判断指定位置的数据是否为空;如果是,直接从上述第(4)项参数指定的内存空间读取数据并写入到指定位置;如果否,先将指定位置所在的块的数据全部读取到缓存中,然后从上述第(4)项参数指定的内存空间读取数据并在缓存中更新指定位置的数据,然后擦除指定位置所在的块,最后再以缓存中已更新了指定位置的数据的块写入到已擦除的指定位置所在的块。在同时写入数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
本申请还提出了一种NOR闪存使用YAFFS的装置,包括分配单元、加载单元、读处理单元、写处理单元、擦除处理单元。所述分配单元用来在开机初始化NOR闪存时,检测NOR闪存的整体大小、块的大小、页的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块;将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域。所述加载单元用来在所述分配单元处理完成后加载NOR闪存的驱动程序,加载YAFFS文件系统。所述读处理单元用来在需要读闪存时,根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取。所述写处理单元用来在需要写闪存时,根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入。所述擦除处理单元用来在需要擦除闪存时,根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。
本申请取得的技术效果是具有更好的适应性、兼容性,实施性佳,可自动适配市面上所有NOR闪存。
附图说明
图1是本申请提出的NOR闪存使用YAFFS的方法的流程示意图。
图2是本申请提出的NOR闪存使用YAFFS的装置的结构示意图。
图中附图标记说明:分配单元1、加载单元2、读处理单元3、写处理单元4、擦除处理单元5。
具体实施方式
请参阅图1,本申请提出的NOR闪存使用YAFFS的方法包括如下步骤。
步骤S1:开机初始化时,检测NOR闪存的整体大小、块(block)的大小、页(page)的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块。
块和页是NOR闪存以及NAND闪存的物理参数、硬件参数。将NOR闪存按照固定的块大小分为多个块,每个块又按照固定的页大小分为多个页。每个块都有块序号(blocknumber),块序号具有唯一且从0开始顺序累加的特点。
数据区域和空闲区域是YSFFS文件系统的软件参数。本申请是将位于末尾的一个或多个块作为空闲区域,其余块均作为数据区域。无论是数据区域的块,还是空闲区域的块,都由YSFFS文件系统进行统一管理。数据区域中的页、空闲区域中的页,记录的都是YAFFS文件系统规定的信息。
YAFFS1和YAFFS2是YSFFS文件系统的两种类型,两者的区别如下。YAFFS1管理的“数据区域的操作单元(chunk)”的大小是512字节,“空闲区域的操作单元(spare)”的大小为16字节。YAFFS2管理的chunk的大小是2048字节,spare的大小为64字节。通常,chunk的大小≥页的大小,一个chunk由一个或多个页组成。通常,spare的大小≤页的大小,此时每个spare对应地采用一个页进行存储。每个chunk都有序号(chunkid),chunkid具有唯一且从0开始顺序累加的特点。
对一个NOR闪存来说,spare的数量=chunk的数量。并且spare和chunk之间按先后顺序呈现一一对应的关系。例如,先后顺序排在第k位的spare和先后顺序排在第k位的chunk之间是对应关系。因此,每个chunkid都对应着一个chunk和一个spare。
根据页的大小决定YSFFS文件系统的类型,例如采用如下方式的任一种。(1)如果NOR闪存的页的大小是512字节,则优选采用YAFFS1作为YSFFS文件系统的类型;也可参照(4)处理。(2)如果NOR闪存的页的大小是2048字节,则选用YAFFS2作为YSFFS文件系统的类型。(3)如果NOR闪存的页的大小小于512字节,则优选将多个页合并为512字节,从而选用YAFFS1作为YSFFS文件系统的类型;也可参照(4)处理。(4)如果NOR闪存的页的大小小于2048字节,可将多个页合并为2048字节,从而选用YAFFS2作为YSFFS文件系统的类型。
分配空闲区域和数据区域的块,例如采用如下方式。(1)计算空闲区域所需的块数量=NOR闪存的整体大小÷选定的YSFFS文件系统中一个chunk包含的页的数量÷块的大小。例如,某一款NOR闪存的容量为32MB,块的大小为64KB,页的大小为256字节,选用YAFFS1类型的YSFFS文件系统,一个chunk为2个页,则该款NOR闪存的空闲区域所需的块数量=32MB÷2÷64KB=256。(2)将位于NOR闪存末尾的“空闲区域所需的块数量”的块分配为空闲区域的块,此时空闲区域的起始地址也就确定了。(3)将其余的块均作为数据区域的块。
步骤S2:加载NOR闪存的驱动程序,加载YAFFS文件系统。所述驱动程序包括读闪存、写闪存、擦除闪存的驱动程序。
步骤S3:当需要读闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要读取的chunkid;(2)在该chunk读取后的内存存放地址;(3)在该chunk中的读取长度;(4)在“该chunkid对应的spare”读取后的内存存放地址;(5)在“该chunkid对应的spare”中的读取长度。所述YAFFS文件系统根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并根据上述第(3)或第(5)项参数进行读取。
用户在读闪存时,可能只在数据区域读取,也可能只在空闲区域读取,还可能同时在数据区域和空闲区域读取。
在只读取数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要读取的chunk的起始地址=需要读取的chunkid×一个chunk的大小(包含的字节数),然后再读取在“需要读取的chunk的起始地址”与“需要读取的chunk的起始地址+在该chunk中的读取长度”之间的数据并存放到上述第(2)项参数指定的内存空间。
在只读取空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要读取的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小(包含的字节数),然后再读取在“需要读取的spare的起始地址”与“需要读取的spare的起始地址+在‘该chunkid对应的spare’中的读取长度”之间的数据并存放到上述第(4)项参数指定的内存空间。
在同时读取数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
步骤S4:当需要写闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要写入的chunkid;(2)向该chunk写入的数据存放的内存存放地址;(3)向该chunk中的写入长度;(4)在“该chunkid对应的spare”写入的数据存放的内存存放地址;(5)在“该chunkid对应的spare”中的写入长度。所述YAFFS文件系统根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并根据上述第(3)或第(5)项参数进行写入。
用户在写闪存时,可能只在数据区域写入,也可能只在空闲区域写入,还可能同时在数据区域和空闲区域写入。
在只写入数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要写入的chunk的起始地址=需要写入的chunkid×一个chunk的大小(包含的字节数),然后再从上述第(2)项参数指定的内存空间读取数据并写入到“需要写入的chunk的起始地址”与“需要写入的chunk的起始地址+在该chunk中的写入长度”之间的位置。
在只写入空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要写入的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小(包含的字节数),然后判断“需要写入的spare的起始地址”与“需要写入的spare的起始地址+在‘该chunkid对应的spare’中的写入长度”之间(称为指定位置)的数据是否全部是0xFF(表示空,无内容,0x表示十六进制数)。如果是,直接从上述第(4)项参数指定的内存空间读取数据并写入到指定位置。如果否,先将指定位置所在的块的数据全部读取到缓存中,然后从上述第(4)项参数指定的内存空间读取数据并在缓存中更新指定位置的数据,然后擦除指定位置所在的块,最后再以缓存中已更新了指定位置的数据的块写入到已擦除的指定位置所在的块。
在同时写入数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
步骤S5:当需要擦除闪存时,向所述YAFFS文件系统提供的参数仅为块序号。所述YAFFS文件系统根据块序号计算擦除的起始地址=块序号×块的大小,然后将相应位置的块的信息清除为0xFF(表示空,无内容)。
所述步骤S3、步骤S4、步骤S5的顺序没有严格限制,可以任一在前。
请参阅图2,本申请提出的NOR闪存使用YAFFS的装置包括分配单元1、加载单元2、读处理单元3、写处理单元4、擦除处理单元5。图2所示装置与图1所示方法相对应。
所述分配单元1用来在开机初始化NOR闪存时,检测NOR闪存的整体大小、块的大小、页的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块。将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域。
所述加载单元2用来在所述分配单元1处理完成后加载NOR闪存的驱动程序,加载YAFFS文件系统。
所述读处理单元3用来在需要读闪存时,根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取。
所述写处理单元4用来在需要写闪存时,根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入。
所述擦除处理单元5用来在需要擦除闪存时,根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。
现有的NOR闪存使用YAFFS文件系统的方法中,对于空闲区域采用分布式管理,例如CN104537075A。本申请提出的NOR闪存使用YAFFS文件系统的方法中,对于空闲区域采用集中管理,通过计算将整个NOR闪存的尾部的一个或多个块作为空闲区域。这样不仅具有较好的可实施性,而且能满足所有NOR闪存的使用场景。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种NOR闪存使用YAFFS的方法,其特征是,包括如下步骤;
步骤S1:开机初始化时,检测NOR闪存的整体大小、块的大小、页的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块;将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域;
步骤S2:加载NOR闪存的驱动程序,加载YAFFS文件系统;
步骤S3:当需要读闪存时,所述YAFFS文件系统根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取;
步骤S4:当需要写闪存时,所述YAFFS文件系统根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入;
步骤S5:当需要擦除闪存时,所述YAFFS文件系统根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空;
或者,所述步骤S3、步骤S4、步骤S5的顺序任一在前。
2.根据权利要求1所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,所述NOR闪存按照固定的块的大小分为多个块,每个块又按照固定的页的大小分为多个页;每个块都有块序号,块序号具有唯一且从0开始顺序累加的特点。
3.根据权利要求1所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,YAFFS1管理的数据区域的操作单元chunk的大小是512字节,空闲区域的操作单元spare的大小为16字节;YAFFS2管理的chunk的大小是2048字节,spare的大小为64字节;每个chunk都有序号chunkid,chunkid具有唯一且从0开始顺序累加的特点。
4.根据权利要求3所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,chunk的大小≥页的大小,一个chunk由一个或多个页组成;spare的大小≤页的大小,每个spare对应地采用一个页进行存储。
5.根据权利要求3所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,一个NOR闪存中的spare的数量=chunk的数量,并且spare和chunk之间按先后顺序呈现一一对应的关系;每个chunkid都对应着一个chunk和一个spare。
6.根据权利要求3所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,根据页的大小决定YSFFS文件系统的类型,采用如下方式的任一种;
第一,如果NOR闪存的页的大小是512字节,则采用YAFFS1作为YSFFS文件系统的类型;
第二,如果NOR闪存的页的大小是2048字节,则选用YAFFS2作为YSFFS文件系统的类型;
第三,如果NOR闪存的页的大小小于512字节,则将多个页合并为512字节,再选用YAFFS1作为YSFFS文件系统的类型;
第四,如果NOR闪存的页的大小小于2048字节,则将多个页合并为2048字节,再选用YAFFS2作为YSFFS文件系统的类型。
7.根据权利要求3所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S1中,分配空闲区域和数据区域的块,采用如下方式;首先计算空闲区域所需的块数量=NOR闪存的整体大小÷选定的YSFFS文件系统中一个chunk包含的页的数量÷块的大小;然后将位于NOR闪存末尾的“空闲区域所需的块数量”的块分配为空闲区域的块;最后将其余的块均作为数据区域的块。
8.根据权利要求1所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S2中,所述驱动程序包括读闪存、写闪存、擦除闪存的驱动程序。
9.根据权利要求1所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S3中,当需要读闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要读取的chunkid;(2)在该chunk读取后的内存存放地址;(3)在该chunk中的读取长度;(4)在“该chunkid对应的spare”读取后的内存存放地址;(5)在“该chunkid对应的spare”中的读取长度;
在只读取数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要读取的chunk的起始地址=需要读取的chunkid×一个chunk的大小,然后再读取在“需要读取的chunk的起始地址”与“需要读取的chunk的起始地址+在该chunk中的读取长度”之间的数据并存放到上述第(2)项参数指定的内存空间;
在只读取空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要读取的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小,然后再读取在“需要读取的spare的起始地址”与“需要读取的spare的起始地址+在‘该chunkid对应的spare’中的读取长度”之间的数据并存放到上述第(4)项参数指定的内存空间;
在同时读取数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
10.根据权利要求1所述的NOR闪存使用YAFFS的方法,其特征是,所述步骤S4中,当需要写闪存时,向所述YAFFS文件系统提供的参数包括:(1)需要写入的chunkid;(2)向该chunk写入的数据存放的内存存放地址;(3)向该chunk中的写入长度;(4)在“该chunkid对应的spare”写入的数据存放的内存存放地址;(5)在“该chunkid对应的spare”中的写入长度;
在只写入数据区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(2)、(3)项参数,需要写入的chunk的起始地址=需要写入的chunkid×一个chunk的大小,然后再从上述第(2)项参数指定的内存空间读取数据并写入到“需要写入的chunk的起始地址”与“需要写入的chunk的起始地址+在该chunk中的写入长度”之间的位置;
在只写入空闲区域的情况下,向所述YAFFS文件系统提供的仅为上述第(1)、(4)、(5)项参数,需要写入的spare的起始地址=空闲区域的起始地址+chunkid×一个页的大小;将“需要写入的spare的起始地址”与“需要写入的spare的起始地址+在‘该chunkid对应的spare’中的写入长度”之间称为指定位置;然后判断指定位置的数据是否为空;如果是,直接从上述第(4)项参数指定的内存空间读取数据并写入到指定位置;如果否,先将指定位置所在的块的数据全部读取到缓存中,然后从上述第(4)项参数指定的内存空间读取数据并在缓存中更新指定位置的数据,然后擦除指定位置所在的块,最后再以缓存中已更新了指定位置的数据的块写入到已擦除的指定位置所在的块;
在同时写入数据区域和空闲区域的情况下,向所述YAFFS文件系统提供的为上述全部5项参数,并执行上面两段的全部内容。
11.一种NOR闪存使用YAFFS的装置,其特征是,包括分配单元、加载单元、读处理单元、写处理单元、擦除处理单元;
所述分配单元用来在开机初始化NOR闪存时,检测NOR闪存的整体大小、块的大小、页的大小,根据页的大小决定YSFFS文件系统的类型是YAFFS1还是YAFFS2,分配空闲区域和数据区域的块;将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域;
所述加载单元用来在所述分配单元处理完成后加载NOR闪存的驱动程序,加载YAFFS文件系统;
所述读处理单元用来在需要读闪存时,根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取;
所述写处理单元用来在需要写闪存时,根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入;
所述擦除处理单元用来在需要擦除闪存时,根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110615553.8A CN113485974B (zh) | 2021-06-02 | 2021-06-02 | Nor闪存使用yaffs的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110615553.8A CN113485974B (zh) | 2021-06-02 | 2021-06-02 | Nor闪存使用yaffs的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485974A true CN113485974A (zh) | 2021-10-08 |
CN113485974B CN113485974B (zh) | 2023-08-01 |
Family
ID=77934415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110615553.8A Active CN113485974B (zh) | 2021-06-02 | 2021-06-02 | Nor闪存使用yaffs的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485974B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6278654B1 (en) * | 2000-06-30 | 2001-08-21 | Micron Technology, Inc. | Active terminate command in synchronous flash memory |
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
CN108710578A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
-
2021
- 2021-06-02 CN CN202110615553.8A patent/CN113485974B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6278654B1 (en) * | 2000-06-30 | 2001-08-21 | Micron Technology, Inc. | Active terminate command in synchronous flash memory |
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
CN108710578A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
Non-Patent Citations (1)
Title |
---|
马捷昱;梁阿磊;: "SA-YAFFS:支持交换系统的YAFFS闪存文件系统", 计算机应用与软件, no. 02 * |
Also Published As
Publication number | Publication date |
---|---|
CN113485974B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE46404E1 (en) | Flash memory management method | |
US6865122B2 (en) | Reclaiming blocks in a block-alterable memory | |
US9489301B2 (en) | Memory systems | |
US7610434B2 (en) | File recording apparatus | |
US8180955B2 (en) | Computing systems and methods for managing flash memory device | |
US7702844B2 (en) | Address mapping method and mapping information managing method for flash memory, and flash memory using the same | |
US7680977B2 (en) | Page and block management algorithm for NAND flash | |
US5860082A (en) | Method and apparatus for allocating storage in a flash memory | |
US7130979B2 (en) | Dynamic volume management | |
US20030229753A1 (en) | Flash memory file system | |
US7702846B2 (en) | Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method | |
US7536500B2 (en) | Header blocks for flash memory writes | |
US20070033325A1 (en) | Non-volatile memory with scheduled reclaim operations | |
US20040210706A1 (en) | Method for managing flash memory | |
CN100442247C (zh) | 存储媒体上的数据管理方法、系统 | |
JP2008507756A (ja) | 最適化されたシーケンシャルなクラスタの管理のためのfat分析 | |
CN109558335B (zh) | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 | |
CN112612418B (zh) | 一种用于大容量NandFlash坏块管理的方法及系统 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
Kwon et al. | An efficient and advanced space-management technique for flash memory using reallocation blocks | |
JP2000181784A (ja) | 書き換え可能な不揮発性記憶装置 | |
CN113485974A (zh) | Nor闪存使用yaffs的方法及装置 | |
KR101022001B1 (ko) | 플래시 메모리 시스템 및 플래시 메모리의 관리 방법 | |
KR100868674B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |