CN113485974B - Nor闪存使用yaffs的方法及装置 - Google Patents

Nor闪存使用yaffs的方法及装置 Download PDF

Info

Publication number
CN113485974B
CN113485974B CN202110615553.8A CN202110615553A CN113485974B CN 113485974 B CN113485974 B CN 113485974B CN 202110615553 A CN202110615553 A CN 202110615553A CN 113485974 B CN113485974 B CN 113485974B
Authority
CN
China
Prior art keywords
flash memory
chunk
read
file system
size
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
Application number
CN202110615553.8A
Other languages
English (en)
Other versions
CN113485974A (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.)
ASR Microelectronics Co Ltd
Original Assignee
ASR Microelectronics Co Ltd
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 ASR Microelectronics Co Ltd filed Critical ASR Microelectronics Co Ltd
Priority to CN202110615553.8A priority Critical patent/CN113485974B/zh
Publication of CN113485974A publication Critical patent/CN113485974A/zh
Application granted granted Critical
Publication of CN113485974B publication Critical patent/CN113485974B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • 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

Abstract

本申请公开了一种NOR闪存使用YAFFS的方法。将位于NOR闪存末尾的一个或多个块作为空闲区域,其余块均作为数据区域。当需要读闪存时,YAFFS文件系统根据需要读取的chunkid计算需要读取的chunk的起始地址和/或需要读取的spare的起始地址,并进行读取。当需要写闪存时,YAFFS文件系统根据需要写入的chunkid计算需要写入的chunk的起始地址和/或需要写入的spare的起始地址,并进行写入。当需要擦除闪存时,YAFFS文件系统根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。本申请具有更好的适应性、兼容性,实施性佳,可自动适配市面上所有NOR闪存。

Description

NOR闪存使用YAFFS的方法及装置
技术领域
本申请涉及一种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的起始地址,并进行写入;
所述擦除处理单元用来在需要擦除闪存时,根据块序号计算擦除的起始地址,然后将相应位置的块的信息清空。
CN202110615553.8A 2021-06-02 2021-06-02 Nor闪存使用yaffs的方法及装置 Active CN113485974B (zh)

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 CN113485974A (zh) 2021-10-08
CN113485974B true 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)

* Cited by examiner, † Cited by third party
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 深圳市战音科技有限公司 基于闪存的数据存储方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
SA-YAFFS:支持交换系统的YAFFS闪存文件系统;马捷昱;梁阿磊;;计算机应用与软件(02);全文 *

Also Published As

Publication number Publication date
CN113485974A (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
US5832493A (en) Flash file management system
US7610434B2 (en) File recording apparatus
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US7752412B2 (en) Methods of managing file allocation table information
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US7681008B2 (en) Systems for managing file allocation table information
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
US7227788B2 (en) Memory management device and memory device
US7734862B2 (en) Block management for mass storage
EP1891529B1 (en) Flash memory with programmable endurance
US8205063B2 (en) Dynamic mapping of logical ranges to write blocks
US7680977B2 (en) Page and block management algorithm for NAND flash
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US8386695B2 (en) Methods and apparatus for writing data to non-volatile memory
US8166231B2 (en) Memory controller, nonvolatile memory device, access device, and nonvolatile memory system
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
US8521947B2 (en) Method for writing data into flash memory
KR20130075018A (ko) 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
WO2008016081A1 (fr) Contrôleur de mémoire, dispositif de mémoire non-volatile, dispositif d'accès et système de mémoire non-volatile
US8185686B2 (en) Memory system and a control method thereof
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
CN113485974B (zh) Nor闪存使用yaffs的方法及装置
WO2008042594A1 (en) Managing file allocation table information
US20090319587A1 (en) Memory controller, nonvolatile memory device, and nonvolatile memory system

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