CN106445398A - 一种基于新型存储器的嵌入式文件系统及其实现方法 - Google Patents
一种基于新型存储器的嵌入式文件系统及其实现方法 Download PDFInfo
- Publication number
- CN106445398A CN106445398A CN201510472743.3A CN201510472743A CN106445398A CN 106445398 A CN106445398 A CN 106445398A CN 201510472743 A CN201510472743 A CN 201510472743A CN 106445398 A CN106445398 A CN 106445398A
- Authority
- CN
- China
- Prior art keywords
- nand flash
- flash chip
- spi nand
- chip
- spi
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000005192 partition Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 42
- 238000000638 solvent extraction Methods 0.000 claims abstract description 21
- 238000005516 engineering process Methods 0.000 claims abstract description 10
- 230000002093 peripheral effect Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 57
- 230000009977 dual effect Effects 0.000 claims description 14
- 238000001514 detection method Methods 0.000 claims description 6
- 238000013024 troubleshooting Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种基于新型存储器的嵌入式文件系统及其实现方法,所述系统中设有串行外设接口与非闪存(SPI Nand flash)芯片;所述方法包括:所述系统初始化后,确定所述系统支持所述SPI Nand flash芯片;设置文件处理时对应的内存技术设备(MTD)层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;依据预设条件对所述SPI Nand flash芯片进行分区处理;文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。
Description
技术领域
本发明涉及计算机存储领域,尤其涉及一种基于新型存储器的嵌入式文件系统及其实现方法。
背景技术
在嵌入式产品开发领域当中,要求整个芯片的尺寸越来越小、外部接口越来越少,且同时又要满足对数据的存储需求。要达到上述要求,对Flash存储器的选择就有了诸多限制,通常意义的Flash存储器的管脚设计与布局都很复杂,因此在这样的一款芯片上面集成一种新型的存储器同时实现文件系统的方法是一件非常有意义的事情。
在数据的存储系统中,文件系统都是基于与非(Not AND,Nand)Flash存储器实现的,它具备掉电数据不丢失、快速数据存取速度、电可擦除、容量大、在线可编程、价格低廉和较高的可靠性等诸多优点。
但是,基于Nand flash存储器实现文件系统时,由于使用复杂的I/O接口串行存取数据,使得软件系统级实现(包括相关时序配置、I/O接口函数的实现)的复杂度大大提高,且芯片的尺寸较大,外部接口较多,不能很好的满足现有对芯片尺寸小、接口少的要求。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种基于新型存储器的嵌入式文件系统及其实现方法。
本发明实施例提供了一种基于新型存储器的嵌入式文件系统的实现方法,所述系统中设有串行外设接口与非闪存SPI Nand flash芯片;该方法包括:
所述系统初始化后,确定所述系统支持所述SPI Nand flash芯片;
设置文件处理时对应的内存技术设备MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;
识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
依据预设条件对所述SPI Nand flash芯片进行分区处理;
文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。
本发明实施例中,所述确定所述系统支持所述SPI Nand flash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
本发明实施例中,所述文件处理为读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读取过程中使用SPI对应的标准standard模式、或双线Dual模式、或四线Qual模式。
本发明实施例中,所述文件处理为更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
本发明实施例中,所述文件处理为删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
本发明实施例还提供了一种基于新型存储器的嵌入式文件系统,该系统包括:串行外设接口与非闪存SPI Nand flash芯片、初始化设置模块、坏块管理模块、文件处理模块;其中,
所述初始化设置模块,用于所述系统初始化后,确定所述系统支持所述SPINand flash芯片;设置文件处理时对应的内存技术设备MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;
还用于依据预设条件对所述SPI Nand flash芯片进行分区处理;
所述坏块管理模块,用于识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
所述文件处理模块,用于文件处理过程中,在指定的分区对所述SPI Nandflash芯片进行访问,完成对文件的访问操作。
本发明实施例中,所述初始化设置模块确定所述系统支持所述SPI Nandflash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
本发明实施例中,所述文件处理模块读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读取过程中使用SPI对应的标准standard模式、或双线Dual模式、或四线Qual模式。
本发明实施例中,所述文件处理模块更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据读写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
本发明实施例中,所述文件处理模块删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
本发明实施例提供的基于新型存储器的嵌入式文件系统及其实现方法,所述系统中设有串行外设接口与非闪存(SPI Nand flash)芯片;所述方法包括:所述系统初始化后,确定所述系统支持所述SPI Nand flash芯片;设置文件处理时对应的内存技术设备(MTD)层接口;所述MTD层接口,用于访问所述SPINand flash芯片时被调用;识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;依据预设条件对所述SPI Nand flash芯片进行分区处理;文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。本发明实施例基于SPI Nand flash芯片实现文件系统的操作,与现有技术相比,由于芯片管脚只占用四根线,为PCB的布局节省了空间,满足芯片尺寸小、接口少的要求;而且,由于SPI标准接口是一种高速的,全双工、同步的通信总线,保证数据读写速度,满足文件访问的速度要求;此外,基于SPI标准接口的特点,本发明软件系统级实现复杂度低,设计简单。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例所述基于新型存储器的嵌入式文件系统实现方法流程示意图;
图2为本发明实施例所述基于新型存储器的嵌入式文件系统的结构示意图;
图3为本发明场景一所述基于SPI Nand flash芯片的嵌入式文件系统结构示意图;
图4为本发明场景二所述基于SPI Nand flash芯片的嵌入式文件系统启动流程示意图;
图5为本发明场景三所述基于SPI Nand flash芯片的嵌入式文件系统的坏块管理流程示意图;
图6为本发明场景四所述基于SPI Nand flash芯片的嵌入式文件系统的文件读取流程示意图;
图7为本发明场景五所述基于SPI Nand flash芯片的嵌入式文件系统的文件更新流程示意图;
图8为本发明场景六所述基于SPI Nand flash芯片的嵌入式文件系统的文件删除流程示意图。
具体实施方式
本发明的实施例中,所述系统中设有串行外设接口与非闪存(SPI Nandflash)芯片;所述方法包括:所述系统初始化后,确定所述系统支持所述SPI Nandflash芯片;设置文件处理时对应的内存技术设备(MTD)层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nandflash芯片时,对已标记的坏块进行排查;依据预设条件对所述SPI Nand flash芯片进行分区处理;文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。
下面结合附图及具体实施例对本发明作进一步详细说明。
图1为本发明实施例所述基于新型存储器的嵌入式文件系统实现方法流程示意图,如图1所示,该方法包括:
步骤101:所述系统初始化后,确定所述系统支持该SPI Nand flash芯片;
步骤102:设置文件处理时对应的MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;
步骤103:识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
步骤104:依据预设条件对所述SPI Nand flash芯片进行分区处理;
步骤105:文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。
这里,所述对文件的访问操作至少包括:读取、更新和删除等。
本发明实施例中,所述确定所述系统支持所述SPI Nand flash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如:芯片的厂商ID,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
实际应用时,需首先注册这个SPI Nand flash芯片,该芯片对应的SPI Nand控制器(controller)在操作或者读写SPI Nand flash芯片时有独特的方式,会定义适用于SPI Nand controller的接口。本发明实施例中,这些与SPI Nand flash芯片相关的函数都在struct nand_chip结构体中定义,这些函数的实现就是给此结构体中的函数指针赋值。
设置好相关的nand_chip结构体中的指针函数后,要扫描当前SPI Nand flash芯片的类型以及芯片ID,如厂商ID。当SPI Nand驱动被加载的时候,该驱动会去读取具体SPI Nand flash芯片的ID,然后根据读取的内容到上述定义的结构体中去查找,以此判断该SPI Nand flash芯片是哪个厂商的芯片类型,不同的芯片特性设置不同。若查找不到,则SPI Nand驱动就会加载失败。因此,要在这个结构体中事先将SPI Nand flash芯片信息添加到这个结构体中。
本发明实施例中,通过调用add_mtd_device函数把整个SPI Nand flash注册进MTD Core,而add_mtd_partitions函数则是把SPI Nand flash的各个分区分别注册进MTD Core。在SPI Nand flash上可根据需要进行了boot分区、kernel分区以及其它的文件系统分区。
这里,要对该芯片进行坏块管理操作。由于SPI Nand flash都可能发生比特位反转,所以必须进行错误检查和纠正(ECC)操作。SPI Nand flash芯片可能会有坏块(出厂时会对坏块做标记),在使用过程中也还有可能会出现新的坏块,因此SPI Nand驱动必须对坏块进行管理。本发明实施例为SPI Nand flash芯片实现特定坏块管理机制,实现SPI Nand flash芯片的坏块标记,并且存储于坏块表中,在文件系统通过内存技术设备(memory technology device,MTD)层进行调用时,可以用于判断当前块是否是坏块,如果是,就不能对当前块进行读写等操作。
本发明实施例中,通过调用add_mtd_device函数把整个SPI Nand flash注册进MTD Core,而add_mtd_partitions函数则是把SPI Nand flash的各个分区分别注册进MTD Core。在SPI Nand flash上可根据需要进行了boot分区、kernel分区以及其它的文件系统分区。
本发明实施例中,所述文件处理为读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读取过程中使用SPI对应的standard(标准)模式、或Dual(双线)模式、或Qual(四线)模式。
相应的,在实际应用时,对文件进行读操作的时候,会将命令传递到MTD层,MTD层会调用nand_read函数,接着nand_read函数会调用struct nand_chip中的cmdfunc函数,这个cmdfunc函数与具体的SPI Nand controller相关,它的作用是使SPI Nand controller向SPI Nand flash芯片发出读命令,SPI Nand flash芯片收到命令后,就会做好准备等待SPI Nand controller的下一步读取。
本发明实施例中,所述文件处理为更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
相应的,在实际应用时,对文件进行更新数据的时候,就会对SPI Nand flash芯片里面的数据进行写操作,通过MTD层会调用到nand_write函数,接着会调用SPI Nand controller的相关cmdfunc函数,执行写命令,将数据更新到对应的block、page以及oob当中,实现SPI Nand flash数据的写入。
本发明实施例中,所述文件处理为删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
本发明实施例基于SPI Nand flash芯片实现文件系统的操作,与现有技术相比,由于芯片管脚只占用四根线,为PCB的布局节省了空间,满足芯片尺寸小、接口少的要求;而且,由于SPI标准接口是一种高速的,全双工、同步的通信总线,保证数据读写速度,满足文件访问的速度要求;此外,基于SPI标准接口的特点,本发明软件系统级实现复杂度低,设计简单。
本发明实施例还提供了一种基于新型存储器的嵌入式文件系统,如图2所示,该系统包括:串行外设接口与非闪存SPI Nand flash芯片201、初始化设置模块202、坏块管理模块203、文件处理模块204;其中,
所述初始化设置模块202,用于所述系统初始化后,确定所述系统支持所述SPI Nand flash芯片201;设置文件处理时对应的内存技术设备MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片201时被调用;
还用于依据预设条件对所述SPI Nand flash芯片201进行分区处理;
所述坏块管理模块203,用于识别所述SPI Nand flash芯片201的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
所述文件处理模块204,用于文件处理过程中,在指定的分区对所述SPINand flash芯片201进行访问,完成对文件的访问操作。
这里,所述对文件的访问操作至少包括:读取、更新和删除等。
本发明实施例中,所述初始化设置模块202确定所述系统支持该SPI Nandflash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
实际应用时,需首先注册这个SPI Nand flash芯片,该芯片对应的SPI Nand控制器(controller)在操作或者读写SPI Nand flash芯片时有独特的方式,会定义适用于SPI Nand controller的接口。本发明实施例中,这些与SPI Nand flash芯片相关的函数都在struct nand_chip结构体中定义,这些函数的实现就是给此结构体中的函数指针赋值。
设置好相关的nand_chip结构体中的指针函数后,要扫描当前SPI Nand flash芯片的类型以及芯片ID,如厂商ID。当SPI Nand驱动被加载的时候,该驱动会去读取具体SPI Nand flash芯片的ID,然后根据读取的内容到上述定义的结构体中去查找,以此判断该SPI Nand flash芯片是哪个厂商的芯片类型,不同的芯片特性设置不同。若查找不到,则SPI Nand驱动就会加载失败。因此,要在这个结构体中事先将SPI Nand flash芯片信息添加到这个结构体中。
本发明实施例中,通过调用add_mtd_device函数把整个SPI Nand flash注册进MTD Core,而add_mtd_partitions函数则是把SPI Nand flash的各个分区分别注册进MTD Core。在SPI Nand flash上可根据需要进行了boot分区、kernel分区以及其它的文件系统分区。
这里,要对该芯片进行坏块管理操作。由于SPI Nand flash都可能发生比特位反转,所以必须进行错误检查和纠正(ECC)操作。SPI Nand flash芯片可能会有坏块(出厂时会对坏块做标记),在使用过程中也还有可能会出现新的坏块,因此SPI Nand驱动必须对坏块进行管理。本发明实施例为SPI Nand flash芯片实现特定坏块管理机制,实现SPI Nand flash芯片的坏块标记,且存储于坏块表中,在文件系统通过内存技术设备(memory technology device,MTD)层进行调用时,可以用于判断当前块是否是坏块,如果是,就不能对当前块进行读写等操作。
本发明实施例中,通过调用add_mtd_device函数把整个SPI Nand flash注册进MTD Core,而add_mtd_partitions函数则是把SPI Nand flash的各个分区分别注册进MTD Core。在SPI Nand flash上可根据需要进行了boot分区、kernel分区以及其它的文件系统分区。
本发明实施例中,所述文件处理模块204读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
相应的,在实际应用时,对文件进行读操作的时候,会将命令传递到MTD层,MTD层会调用nand_read函数,接着nand_read函数会调用struct nand_chip中的cmdfunc函数,这个cmdfunc函数与具体的SPI Nand controller相关,它的作用是使SPI Nand controller向SPI Nand flash芯片发出读命令,SPI Nand flash芯片收到命令后,就会做好准备等待SPI Nand controller的下一步读取。
本发明实施例中,所述文件处理模块204更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据读写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
相应的,在实际应用时,对文件进行更新数据的时候,就会对SPI Nand flash芯片里面的数据进行写操作,通过MTD层会调用到nand_write函数,接着会调用SPI Nand controller的相关cmdfunc函数,执行写命令,将数据更新到对应的block、page以及oob当中,实现SPI Nand flash数据的写入。
本发明实施例中,所述文件处理模块204删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
实际应用时,文件删除操作会通过MTD层的nand_erase接口,再调用到本模块提供坏块信息表,根据信息表确定当前块是否是坏块,如果当前块标记为坏块,则结束对当前块的删除操作;否则对当前块执行擦除操作,调用本模块设计的erase接口,识别erase命令,对芯片完成擦除操作,将结果返回给MTD层。
为了便于理解本发明方案,下面对SPI Nand flash芯片进行简单描述。
SPI Nand flash芯片具备闪存(flash)的命令集以及串行外设接口(SerialPeripheral Interface,SPI),因此,SPI Nand flash芯片一方面拥有flash的特点,另一方面又具备了SPI标准接口的优点:
1)是一种高速的,全双工、同步的通信总线,保证数据读写速度,满足文件访问的速度要求;
2)在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局节省空间;
3)芯片设计简单,复杂度低,降低软件与硬件涉及时序、I/O操作等系统级实现的隐患和风险。
下面结合具体应用场景对本发明进行详细描述。
场景一
本应用场景基于SPI Nand flash芯片的嵌入式文件系统如图3所示,包括:上层文件操作1、2、…、n;MTD层301、运行模块302和spi nand闪存(flash)芯片303,所述运行模块302中包括:初始化及坏块管理模块3021、写入模块3022、读取模块3023以及擦除模块3024;其中,
所述初始化及坏块管理模块3021,用于进行文件系统的初始化、分区处理以及坏块的管理;
所述写入模块3022,用于执行文件的写入操作;
所述读取模块3023,用于执行文件的读取操作;
所述擦除模块3024,用于执行文件的删除操作。
文件操作主要是嵌入式系统中对文件的添加、更改、删除的操作。嵌入式系统中,提供了MTD系统来建立flash针对嵌入式系统的统一、抽象的接口。文件操作系统通过MTD层的接口函数访问到底层SPI Nand的驱动,完成对flash上数据的访问操作。
场景二
图4是本应用场景基于SPI Nand flash芯片的嵌入式文件系统启动流程示意图,该流程如下:
步骤401:嵌入式文件系统上电后,调用到本模块;
所述本模块为场景一中所述运行模块302。
步骤402:申请资源并设置数据缓冲器(buffer),对SPI Nand flash芯片进行初始化;
步骤403:根据唯一的芯片类型以及厂商的ID信息,判断文件系统是否支持当前芯片,如果支持,则执行步骤404;否则,执行步骤407;
步骤404:为MTD层建立读、写、擦除的接口;
这里,对文件操作的时会调用到所述接口,以对SPI Nand flash芯片进行访问。
步骤405:建立SPI Nand的坏块表;
这里,所述坏块表用于管理(记录、或删除)坏块标记信息。
步骤406:建立分区,即:将SPI Nand flash划分成boot分区、kernel分区,以便于文件系统的操作;
步骤407:退出本发明系统,向MTD层返回结果。
场景三
图5为本应用场景基于SPI Nand flash芯片的嵌入式文件系统的坏块管理流程示意图,该流程如下:
步骤501:编写用于坏块标记的接口;
步骤502:建立SPI Nand flash的ECC在oob中布局的结构体,以用于保存坏块信息和ECC数据;
步骤503:通过读取SPI Nand flash每个block的坏块标记信息,并写入到坏块表中;
这里,所述坏块表中1可表示正常的块,0表示坏块。
步骤504:文件系统在某个分区地址范围内,对SPI Nand flash进行访问时,通过MTD层获取坏块表的信息;
步骤505:在当前分区地址范围内,根据坏块表的信息来判断当前block是否是坏块,如果是,则执行步骤506;否则,执行步骤507;
步骤506:查找下一个block是否是坏块;
这里,如果查找超出了本分区范围,就退出(步骤508)。
步骤507:继续执行访问操作;
步骤508:向MTD层返回结果。
场景四
图6为本应用场景基于SPI Nand flash芯片的嵌入式文件系统的文件读取流程示意图,该流程如下:
步骤601:挂载文件系统到指定的分区上;
步骤602:在本分区进行文件的内容显示、拷贝等文件操作;
步骤603:文件系统通过MTD层接口调用到读数据接口函数,并且指明从SPI Nand读数据的地址范围以及将数据写入的buffer的地址;
步骤604:执行读命令,将SPI Nand闪存中的数据读取到内存中;
这里,可使用standard、或dual、或qual的SPI模式,这几种模式中qual模式的传输速度最高,但将写保护以及hold线用于数据传输。
步骤605:向MTD层返回结果。
场景五
图7为本应用场景基于SPI Nand flash芯片的嵌入式文件系统的文件更新流程示意图,该流程如下:
步骤701:挂载文件系统到指定的分区上;
步骤702:在本分区上进行文件的新建、内容更新等文件操作;
步骤703:文件系统通过MTD层接口调用到写数据接口函数,并且指明从buffer地址中将数据写入SPI Nand闪存的指定地址内;
步骤704:执行写命令操作,将内存中的数据写入到SPI Nand闪存的指定地址中;
这里,可选择使用standard、或dual、或qual的SPI模式。
步骤705:向MTD层返回结果。
场景六
图8为本应用场景基于SPI Nand flash芯片的嵌入式文件系统文件删除流程示意图,该流程包括:
步骤801:挂载文件系统到指定的分区上;
步骤802:在本分区上进行文件的删除等文件操作;
步骤803:文件系统通过MTD层接口调用到擦除(erase)接口函数,并进行坏块标记的检测,若当前块为坏块,则无法进行擦除操作,跳出擦除操作;若是正常的块,则执行块擦除操作;
步骤804:向MTD层返回结果。
可见,本发明实施例基于SPI Nand flash芯片实现文件系统的操作,与现有技术相比,由于芯片管脚只占用四根线,为PCB的布局节省了空间,满足芯片尺寸小、接口少的要求;而且,由于SPI标准接口是一种高速的,全双工、同步的通信总线,保证数据读写速度,满足文件访问的速度要求;此外,基于SPI标准接口的特点,本发明软件系统级实现复杂度低,设计简单。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种基于新型存储器的嵌入式文件系统的实现方法,其特征在于,所述系统中设有串行外设接口与非闪存SPI Nand flash芯片;该方法包括:
所述系统初始化后,确定所述系统支持所述SPI Nand flash芯片;
设置文件处理时对应的内存技术设备MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;
识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
依据预设条件对所述SPI Nand flash芯片进行分区处理;
文件处理过程中,在指定的分区对所述SPI Nand flash芯片进行访问,完成对文件的访问操作。
2.根据权利要求1所述的方法,其特征在于,所述确定所述系统支持所述SPI Nand flash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
3.根据权利要求1所述的方法,其特征在于,所述文件处理为读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读取过程中使用SPI对应的标准standard模式、或双线Dual模式、或四线Qual模式。
4.根据权利要求1所述的方法,其特征在于,所述文件处理为更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
5.根据权利要求1所述的方法,其特征在于,所述文件处理为删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
6.一种基于新型存储器的嵌入式文件系统,其特征在于,该系统包括:串行外设接口与非闪存SPI Nand flash芯片、初始化设置模块、坏块管理模块、文件处理模块;其中,
所述初始化设置模块,用于所述系统初始化后,确定所述系统支持所述SPINand flash芯片;设置文件处理时对应的内存技术设备MTD层接口;所述MTD层接口,用于访问所述SPI Nand flash芯片时被调用;
还用于依据预设条件对所述SPI Nand flash芯片进行分区处理;
所述坏块管理模块,用于识别所述SPI Nand flash芯片的坏块并进行标记、存储;所存储的坏块标记,用于文件系统访问SPI Nand flash芯片时,对已标记的坏块进行排查;
所述文件处理模块,用于文件处理过程中,在指定的分区对所述SPI Nandflash芯片进行访问,完成对文件的访问操作。
7.根据权利要求6所述的系统,其特征在于,所述初始化设置模块确定所述系统支持所述SPI Nand flash芯片,包括:
检测所述芯片的类型以及所述芯片的ID信息,如果所述芯片的类型以及所述ID信息与预先存储的芯片类型以及ID信息相同,则确定所述系统支持所述SPI Nand flash芯片;否则,确定所述系统不支持所述SPI Nand flash芯片。
8.根据权利要求6所述的系统,其特征在于,所述文件处理模块读取文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用读数据接口函数,依据读取数据的地址范围以及数据写入缓冲器的地址执行读命令,最终将SPI Nand flash芯片中的数据读取到内存中;其中,所述数据读取过程中使用SPI对应的标准standard模式、或双线Dual模式、或四线Qual模式。
9.根据权利要求6所述的系统,其特征在于,所述文件处理模块更新文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
通过MTD层接口调用写数据接口函数,依据指定的缓冲器的地址执行写命令,最终将内存中的数据写入SPI Nand flash芯片指定的地址中;其中,所述数据读写过程中使用SPI对应的standard模式、或Dual模式、或Qual模式。
10.根据权利要求6所述的系统,其特征在于,所述文件处理模块删除文件时,所述在指定的分区对所述SPI Nand flash芯片进行访问,包括:
进行坏块检测,如果确定当前块为坏块,则结束当前块的擦除操作;否则,通过MTD层接口调用擦除erase接口函数,完成对当前块的擦除操作,并将结果返回给MTD层。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510472743.3A CN106445398B (zh) | 2015-08-04 | 2015-08-04 | 一种基于新型存储器的嵌入式文件系统及其实现方法 |
PCT/CN2016/084288 WO2017020647A1 (zh) | 2015-08-04 | 2016-06-01 | 基于新型存储器的嵌入式文件系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510472743.3A CN106445398B (zh) | 2015-08-04 | 2015-08-04 | 一种基于新型存储器的嵌入式文件系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106445398A true CN106445398A (zh) | 2017-02-22 |
CN106445398B CN106445398B (zh) | 2019-05-31 |
Family
ID=57942366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510472743.3A Active CN106445398B (zh) | 2015-08-04 | 2015-08-04 | 一种基于新型存储器的嵌入式文件系统及其实现方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106445398B (zh) |
WO (1) | WO2017020647A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729067A (zh) * | 2017-09-11 | 2018-02-23 | 北京东土科技股份有限公司 | 一种flash芯片驱动的注册方法及装置 |
CN108038065A (zh) * | 2017-12-22 | 2018-05-15 | 湖南国科微电子股份有限公司 | 一种提高Block使用率的方法、装置及系统 |
CN109725939A (zh) * | 2017-10-27 | 2019-05-07 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法、芯片和计算机可读存储介质 |
WO2020199061A1 (zh) * | 2019-03-30 | 2020-10-08 | 华为技术有限公司 | 一种处理方法、装置及相关设备 |
CN111949198A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种坏块管理方法、装置和存储设备 |
CN113312273A (zh) * | 2020-02-26 | 2021-08-27 | 北京君正集成电路股份有限公司 | 一种基于nand flash的序列号和mac地址储存方法 |
CN113742283A (zh) * | 2021-07-20 | 2021-12-03 | 电信科学技术第五研究所有限公司 | 一种基于linux操作系统的nandflash无文件系统的坏块管理方法 |
CN114546292A (zh) * | 2022-02-28 | 2022-05-27 | 深圳市风云实业有限公司 | 一种nand flash坏块管理方法及系统 |
CN114675788A (zh) * | 2022-04-12 | 2022-06-28 | 上海睿赛德电子科技有限公司 | 一种支持多种Flash设备的统一管理方法及系统 |
CN116383097A (zh) * | 2023-03-27 | 2023-07-04 | 深圳市芯存科技有限公司 | Spi Nand flash坏块管理方法和系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334453B (zh) * | 2018-02-28 | 2021-07-20 | 深圳创维数字技术有限公司 | 一种文件调试方法、装置、终端设备及存储介质 |
CN111198843B (zh) * | 2019-12-19 | 2023-03-28 | 西安交通大学 | 一种基于应用处理器片上总线控制的文件系统写加速方法 |
CN116264096A (zh) * | 2022-12-28 | 2023-06-16 | 深圳市芯睿视科技有限公司 | 一种坏块检测方法、计算机程序产品及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
CN103617124A (zh) * | 2013-11-26 | 2014-03-05 | 北京创毅视讯科技有限公司 | 一种闪存管理方法和装置 |
KR20140142960A (ko) * | 2013-06-05 | 2014-12-15 | 중소기업은행 | 병렬 파이프라인 더블래치로 구동되는 spi 낸드 플래시 메모리 |
CN104461379A (zh) * | 2014-10-31 | 2015-03-25 | 上海华为技术有限公司 | 提高nand闪存的稳定性的方法和nand闪存 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289397B (zh) * | 2011-09-13 | 2013-02-13 | 珠海迈科电子科技有限公司 | 一种机顶盒的嵌入式系统自动恢复方法及装置 |
CN103678030A (zh) * | 2012-09-04 | 2014-03-26 | 杭州海康威视数字技术股份有限公司 | 多系统设备启动系统及其方法 |
-
2015
- 2015-08-04 CN CN201510472743.3A patent/CN106445398B/zh active Active
-
2016
- 2016-06-01 WO PCT/CN2016/084288 patent/WO2017020647A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140142960A (ko) * | 2013-06-05 | 2014-12-15 | 중소기업은행 | 병렬 파이프라인 더블래치로 구동되는 spi 낸드 플래시 메모리 |
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
CN103617124A (zh) * | 2013-11-26 | 2014-03-05 | 北京创毅视讯科技有限公司 | 一种闪存管理方法和装置 |
CN104461379A (zh) * | 2014-10-31 | 2015-03-25 | 上海华为技术有限公司 | 提高nand闪存的稳定性的方法和nand闪存 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729067A (zh) * | 2017-09-11 | 2018-02-23 | 北京东土科技股份有限公司 | 一种flash芯片驱动的注册方法及装置 |
CN109725939A (zh) * | 2017-10-27 | 2019-05-07 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法、芯片和计算机可读存储介质 |
CN108038065B (zh) * | 2017-12-22 | 2021-11-12 | 湖南国科微电子股份有限公司 | 一种提高Block使用率的方法、装置及系统 |
CN108038065A (zh) * | 2017-12-22 | 2018-05-15 | 湖南国科微电子股份有限公司 | 一种提高Block使用率的方法、装置及系统 |
WO2020199061A1 (zh) * | 2019-03-30 | 2020-10-08 | 华为技术有限公司 | 一种处理方法、装置及相关设备 |
CN111949198A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种坏块管理方法、装置和存储设备 |
CN113312273A (zh) * | 2020-02-26 | 2021-08-27 | 北京君正集成电路股份有限公司 | 一种基于nand flash的序列号和mac地址储存方法 |
CN113742283A (zh) * | 2021-07-20 | 2021-12-03 | 电信科学技术第五研究所有限公司 | 一种基于linux操作系统的nandflash无文件系统的坏块管理方法 |
CN113742283B (zh) * | 2021-07-20 | 2023-11-24 | 电信科学技术第五研究所有限公司 | 一种基于linux操作系统的nandflash无文件系统的坏块管理方法 |
CN114546292A (zh) * | 2022-02-28 | 2022-05-27 | 深圳市风云实业有限公司 | 一种nand flash坏块管理方法及系统 |
CN114546292B (zh) * | 2022-02-28 | 2023-12-15 | 深圳市风云实业有限公司 | 一种nand flash坏块管理方法及系统 |
CN114675788A (zh) * | 2022-04-12 | 2022-06-28 | 上海睿赛德电子科技有限公司 | 一种支持多种Flash设备的统一管理方法及系统 |
CN116383097A (zh) * | 2023-03-27 | 2023-07-04 | 深圳市芯存科技有限公司 | Spi Nand flash坏块管理方法和系统 |
CN116383097B (zh) * | 2023-03-27 | 2024-05-17 | 深圳市芯存科技有限公司 | Spi Nand flash坏块管理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106445398B (zh) | 2019-05-31 |
WO2017020647A1 (zh) | 2017-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445398B (zh) | 一种基于新型存储器的嵌入式文件系统及其实现方法 | |
CN109426619B (zh) | 访问快闪存储器模块的方法及相关闪存控制器与电子装置 | |
US9053019B2 (en) | Non-volatile memory device, a data processing device using the same, and a swapping method used by the data processing and non-volatile memory devices | |
KR101955145B1 (ko) | 애플리케이션 로딩 방법 및 장치 | |
US20190146908A1 (en) | Method for accessing flash memory module and associated flash memory controller and electronic device | |
US20080016267A1 (en) | Memory controller, flash memory system having memory controller, and method for controlling flash memory | |
KR101555210B1 (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
US20150161040A1 (en) | Data-storage device and data erasing method | |
CN107870769A (zh) | 操作系统的安装方法及装置 | |
CN108415851B (zh) | 一种提升闪存设备启动速度的方法与装置 | |
CN111338562B (zh) | 数据存储装置与数据处理方法 | |
CN113625973B (zh) | 数据写入方法、装置、电子设备及计算机可读存储介质 | |
CN111813703B (zh) | 数据储存装置及逻辑至物理地址映射表的更新方法 | |
EP3252595A1 (en) | Method and device for running process | |
CN116737189B (zh) | 一种申威平台嵌入式系统安装镜像及其制作方法 | |
JP2010500682A (ja) | フラッシュメモリアクセス回路 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
CN104133640B (zh) | 从休眠快速恢复 | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CN116719724B (zh) | eMMC多平台测试方法和装置、电子设备 | |
CN114816491A (zh) | 用于多系统移动终端的系统升级方法、装置及终端 | |
CN101131649A (zh) | 设有闪存的装置的只读存储器升级速度改善方法 | |
CN111722855A (zh) | 一种基于eMMC的固件烧录系统、方法与集成芯片 | |
JP2008084184A (ja) | メモリコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |