CN114063910B - 文件处理方法及装置、文件处理系统及存储介质 - Google Patents
文件处理方法及装置、文件处理系统及存储介质 Download PDFInfo
- Publication number
- CN114063910B CN114063910B CN202111261744.5A CN202111261744A CN114063910B CN 114063910 B CN114063910 B CN 114063910B CN 202111261744 A CN202111261744 A CN 202111261744A CN 114063910 B CN114063910 B CN 114063910B
- Authority
- CN
- China
- Prior art keywords
- block
- flash memory
- storage
- physical address
- target file
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 153
- 238000012545 processing Methods 0.000 title claims abstract description 45
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 230000015654 memory Effects 0.000 claims abstract description 149
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000006870 function Effects 0.000 claims description 41
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 230000002093 peripheral effect Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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/0614—Improving the reliability of storage systems
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/064—Management of blocks
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开提供了一种文件处理方法及装置、文件处理系统及存储介质;所述方法应用于单片机,包括:从应用层接收文件处理请求;其中,文件处理请求包含:待处理的目标文件的第一物理地址;第一物理地址为:指代存储目标文件名的字符串;根据第一物理地址确定存储目标文件的第二物理地址,其中,第二物理地址包括:根据第一物理地址确定的目标文件的存储块、存储页和存储列;将第二物理地址传输给驱动层;其中,第二物理地址,用于供驱动层将目标文件写入闪存器或者从闪存器读取目标文件;本公开提供的方法使得单片机可以搭建简单、高效、低成本的控制平台,并且提升了控制平台的可靠性。
Description
技术领域
本公开涉及软件技术领域,具体地,涉及一种文件处理方法及装置、文件处理系统及存储介质。
背景技术
随着高性能、低功耗以及小封装的单片机芯片的发展,单片机程序在消费电子、工业控制、汽车电子等领域得到了越来越多的应用;由于单片机程序单线程的特性,对文件系统的管理不能直接移植嵌入式linux以及其他复杂操作系统的文件系统,但是,对于各种单片机程序的应用场景,又需要对文件的可靠操作和处理。
因此,需要一种能提升单片机程序的可靠性以及高效的文件处理装置。
发明内容
本公开提供一种文件处理方法及装置、文件处理系统及存储介质。
本公开第一方法提供一种文件处理方法,所述方法包括:从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件名的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;
根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列;
将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
可选地,所述方法还包括:
确定所述闪存器内可用存储块的块信息;
根据所述块信息,将所述目标文件写入到所述闪存器的可用存储块内,其中,正常块为可用的存储块。
可选地,所述确定所述闪存器内可用存储块的块信息,包括:
获取所述闪存器的块位图表;其中,所述块位图表中一个比特对应于所述闪存器的一个存储块,其中,第一取值的所述比特指示对应的存储块为所述异常块或已占用块,第二取值的所述比特指示对应的存储块为所述可用存储块;其中,所述第二取值不同于所述第一取值。
可选地,所述确定所述闪存器内可用存储块的块信息,包括:
扫描所述闪存器;
根据扫描的结果,确定出所述闪存器的所述异常块和所述已占用块;
至少记录所述异常块和所述已占用块的块信息。
可选地,所述方法还包括:
记录N个所述存储块的擦写次数;
若N-M个存储块的擦写次数满足大于预设阈值的条件,确定所述N-M个存储块的优先级在第一使用优先级区域;
若M个存储块的擦写次数满足小于或等于预设阈值的条件,确定所述M个存储块的优先级在第二使用优先级区域;其中,第二使用优先级高于所述第一使用优先级;
确定所述目标文件所需占用的存储块的块数X;
若所述块数X小于或等于M,利用处于第二使用优先级的X个存储块对所述目标文件进行擦写;
若所述块数X大于M,利用处于第二优先级的M个存储块和处于第一优先级的X-M个存储块对所述目标文件进行擦写。
可选地,所述闪存器通过SPI与所述单片机连接;
所述驱动层包括:
SPI驱动函数,用于传输所述闪存器和所述单片机之间的数据,
闪存驱动函数,用于控制所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
可选地,所述闪存器通过SPI与所述单片机连接;
所述驱动层包括:
SPI驱动函数,用于传输所述闪存器和所述单片机之间的数据,
闪存驱动函数,用于控制所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开的第二方面提供了文件处理系统,所述系统用于执行上述第一方面提供的方法,所述系统包括:
单片机;
闪存器,所述闪存器通过SPI与所述单片机连接,所述闪存器用于提供对所述目标文件进行擦写的存储块。
可选地,所述系统还包括:
电可擦可编程只读存储器,所述电可擦可编程只读存储器与所述单片机连接,用于存储元数据块的块信息。
本公开第三方面提供一种文件处理装置,应用于单片机,所述装置包括:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;
确定模块,用于根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列;
传输模块,用于将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开的第四方面提供一种存储介质,所述存储介质存储有计算机可执行指令;所述计算机可执行指令被处理器执行后,能够实现第一方面提供的文件处理方法。
本公开的实施例提供的技术方案可以包括以下有益效果:本公开实施例从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列的地址;将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件;本公开实施例的将第二物理地址传输给驱动层,第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列的地址是驱动层可以直接调用的,如此,对于单片机结合闪存器的基础上的文件处理方法,与现有技术中单片机存在未使用闪存器,导致可靠性相比,本公开实施例提供的方法可以提升单片机数据写入和数据读取的可靠性,并且闪存器以及驱动层能使得单片机适用更多的控制平台的器件要求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为一示例性实施例示出的文件处理方法的流程示意图;
图2为一示例性实施例示出的文件处理方法的流程示意图;
图3为一示例性实施例示出的文件处理方法的流程示意图;
图4为一示例性实施例示出的文件处理方法的流程示意图;
图5为一示例性实施例示出的文件处理方法的流程示意图;
图6为一示例性实施例示出的文件处理系统的结构示意图;
图7为一示例性实施例示出的文件处理装置的结构示意图;
图8为一示例性实施例示出的文件处理系统的模型示意图;
图9为示例性实施例示出的文件处理系统的中间层的模型示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开实施例的一些方面相一致的装置和方法的例子。
本公开实施例中,结合图1所示,提供了一种文件处理方法,应用于单片机,所述方法包括:
步骤S101,从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件的名字符串;
步骤S102,根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列的地址;
步骤S103,将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开实施例中,在步骤S101之前,应用层会将逻辑地址转换成所述物理地址,并生成文件处理请求。
本公开实施例中,在步骤S101中,中间层会从应用层接收文件处理请求。在软件层次结构中,所述中间层为应用层的底层。
第一物理地址为指代存储目标文件名的字符串,为一个包含了存储在闪存器所在的行、列以及块的指代字符组成。示例性的,字符串的第一物理地址可为:0x0FFFFF00。
本公开实施例中,在步骤S102中,根据所述第一物理地址确定存储所述目标文件的第二物理地址。第二物理地址是由第一物理地址的数值一分为三部分的地址得到的,第二物理地址包括:存储块、存储页和存储列的地址。也就是目标文件所在的存储块,存储块所在的存储列和存储页的地址。
本公开实施例中,在步骤S103中,将第二物理地址传输给驱动层。驱动层可以理解为软件层次结构的底层,为与硬件直接交互的软件代码。
示例性,在本公开实施例中,该驱动层可包括:驱动闪存器的数据写入和读出的驱动代码。
在一个实施例中,驱动层包括:闪存驱动函数和SPI驱动函数。
所述闪存器通过SPI与单片机连接,可作为单片机的SPI外设。单片机通过SPI与闪存器连接,SPI驱动函数驱动SPI实现单片机与闪存器之间数据的传输。
本公开实施例中,SPI驱动函数可以针对每种单片机外设的特性各不相同,因此可以独立设计,用于适配各自架构的单片机,进而实现对传输各自架构的单片机与闪存器之间的数据。
本公开实施例中,驱动层的闪存驱动函数通过第二物理地址将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。该闪存驱动函数又可以称之为Nand Flash函数。
本公开实施例中,驱动层的Nand Flash函数,由于各个厂家的Nand Flash存储器的器件,在读写、擦除逻辑上指令各不相同,由此该Nand Flash函数是根据各个Nand Flash的器件操作要求确定的。
本公开实施例中,所述闪存器为Nand Flash存储器,为Flash存储器的一种,具有容量较大,改写速度快的有点,适用于大量数据的存储,并且制造成本低廉、访问控制简单,且容量可以做到非常高,可以配合单片机芯片在各个领域搭建简单、高效、低成本的控制平台。
本公开实施例中,SPI驱动函数可以针对每种单片机SPI外设的特性,SPI驱动函数可以独立设计,由此可以适配各种架构的单片机。Nand Flash驱动函数可以根据闪存器,Nand Flash存储器的器件不同导致的读写、擦除逻辑上指令的不同,而设计不同的闪存驱动函数。由此,可以使得不同种类的单片机与不同种类的闪存器,Nand Flash存储器相互配合使用,进而实现了不同种类Nand Flash存储器能解决不同种类的单片机所需要高效的要求,以及可靠存储大容量文件的需求。
本公开实施例中,结合图2所示,所述方法还包括:
步骤S104,确定所述闪存器内可用存储块的块信息;
步骤S105,根据所述块信息,将所述目标文件写入到所述闪存器的可用存储块内,其中,正常块为可用的存储块。
本公开实施例中,在步骤S104中,内存器内可用存储块的块信息包括:存储块的地址以及存储块的是否可用的信息。
本公开实施例中,在步骤S105中,可用的存储块是指,能够可以正常存储并且尚未使用的空闲存储块。
在一个实施例中,存储块的情况分为:可正常擦写的块、未被占用的块、被占用的块以及不可正常擦写的坏块。
本公开实施例中,不可正常擦写的坏块是指:即使没有被占用,多次写入仍然失败的块。
本公开实施例中,可以根据确定所述存储器内可用存储块的块信息,构建块位图,该块位图用于显示存储块是否可用的状态。
本公开实施例中,通过闪存器内可用存储块的块信息,将目标文件写入到可以正常写入目标文件的可用存储块中,如此,可以提高目标文件成功写入的概率,并且提升写入效率。
本公开实施例中,结合图3所示,所述步骤S104,确定所述闪存器内可用存储块的块信息,包括:
步骤S1041,获取所述闪存器的块位图表;其中,所述块位图表中一个比特对应于所述闪存器的一个存储块,其中,第一取值的所述比特指示对应的存储块为所述异常块或已占用块,第二取值的所述比特指示对应的存储块为所述可用存储块;其中,所述第二取值不同于所述第一取值。
本公开实施例中,一个比特对应于所述闪存器的一个存储块,整个闪存器需要的容量一般不会超过256字节,一个字节由8个比特组成。
本公开实施例中,块位图表可以存储在闪存器固定的存储块中,也可以在闪存器之外配置一颗小容量的EEPROM,电可擦除可编程只读存储器。存储该块位图表。
本公开实施例中,第一取值可以为“1”,第二取值可以为“0”。
本公开实施例中,通过不同的取值分辨存储块的状态,便于对闪存器的可用存储块进行区分。进而便于在写入目标文件时选择可用存储块,提升效率。
本公开实施例中,结合图4所示,所述步骤S104,确定所述闪存器内可用存储块的块信息,包括:
步骤S1042,扫描所述闪存器;
步骤S1043,根据扫描的结果,确定出所述闪存器的所述异常块和所述已占用块;
步骤S1044,至少记录所述异常块和所述已占用块的块信息。
本公开实施例中,可以通过扫描工具扫描所述闪存器,得到扫面结果;根据扫描结果,确定出异常块和已被占用块的信息;至少记录所述异常块和所述已占用块的块信息。
本公开实施例中,可以选择在程序第一次或每次初始化时扫描闪存器;或者周期性地扫描闪存器。每次扫描得到的扫描结果,更新记录的所述异常块和所述已占用块的块信息。
本公开实施例中,可以记录的所述异常快和所述已占用块的块信息存储在闪存器或外置的电可擦除可编程只读存储器中。
本公开实施例中,通过记录所述异常快和所述已占用块的块信息,可以使得在驱动层将目标文件写入所述闪存器的块中时,选择正常且未被占用的可用存储块,如此,可以提升目标文件的写入效率。
本公开实施例中,结合图5所示,所述方法还包括:
步骤S1061,记录N个所述存储块的擦写次数;
步骤S1062,若N-M个存储块的擦写次数满足大于预设阈值的条件,确定所述N-M个存储块的优先级在第一使用优先级区域;
步骤S1063,若M个存储块的擦写次数满足小于或等于预设阈值的条件,确定所述M个存储块的优先级在第二使用优先级区域;其中,第二使用优先级高于所述第一使用优先级;
步骤S1064,确定所述目标文件所需占用的存储块的块数X;
步骤S1065,若所述块数X小于或等于M,利用处于第二使用优先级的X个存储块对所述目标文件进行擦写;
步骤S1066,若所述块数X大于M,利用处于第二优先级的M个存储块和处于第一优先级的X-M个存储块对所述目标文件进行擦写。
本公开实施例中,N的取值范围为0,1,2,3···n;n为自然数。
本公开实施例中,M的取值范围为0,1,2,3···m;m为自然数;M的值小于N的值。
本公开实施例中,X的取值范围为0,1,2,3···x;x为自然数;X的值小于N的值。
本公开实施例中,在步骤S1062中,若N-M个存储块的擦写次数满足大于预设阈值的条件,这里,预设阈值可以取值为10、20、30、40等取值。预设阈值可以动态的调整,可以依据存储块的最高上限值或者N个所述存储块的擦写次数最高的值来设定。
在一个实施例中,从记录的N个所述存储块的擦写次数中,次数最高的为10次,则将10设置为预设阈值。在进一步对块多次写入目标文件,擦除目标文件之后,所有的存储块的擦写次数的最低值变成了10之后,得到N个所述存储块的擦写次数中,次数最高的为20次,则将20设置为预设阈值。以此类推,预设阈值可以根据N个所述存储块的擦写次数最高的值来设定。
在一个实施例中,也可以依据存储块的能擦写的最高擦写次数来设定。例如,任一存储块的能擦写的最高擦写次数为K,诸如K取值为一百万,1000000,则设定预设阈值为K/100000、K/10000、K/1000、K/100、K/10等取值。
在一个实施例中,还可以依据N个存储块中的擦写次数中的擦写次数的最高值、最低值、中位数、众数等数值来设定预设阈值。诸如最高值与最低值之间的数值、中位数或众数等数值设定预设阈值的大小。
本公开实施例中,关于预设阈值的设定,是动态变化的,在闪存器刚使用时,N个所述存储块的擦写次数都较低,可以选择N个所述存储块中的最高擦写次数来设定预设阈值。每当最高擦写次数增加,则重新设定预设阈值。
本公开实施例中,在步骤S1062中,若N-M个存储块的擦写次数满足大于预设阈值的条件,确定所述N-M个存储块的优先级在第一使用优先级区域。这里,有N-M个存储块的擦写次数大于预设阈值。
本公开实施例中,在步骤S1063中,若M个存储块的擦写次数满足小于或等于预设阈值的条件,确定所述M个存储块的优先级在第二使用优先级区域。这里,有M个存储块的擦写次数小于预设阈值。
本公开实施例中,擦写次数大于预设阈值的存储块,处于第一使用优先级区域;擦写次数小于或等于预设阈值的存储块,处于第二使用优先级区域,则有N-M个存储块处于第一使用优先级区域,有M个存储块处于第二使用优先级区域,第二使用优先级区域的第二使用优先级高于第一使用优先级区域的第一使用优先级。
本公开实施例中,根据目标文件所需占用的存储块的块数X写入目标文件至存储器。若块数X小于或等于M,则执行步骤S1065,若块数X大于M,则执行步骤S1066。
在一个实施例中,若预设阈值设置为10,目标文件所需占用的存储块的块数为40,有500个存储块的处于第二使用优先级区域,则占用第二使用优先级区域的存储块。
在一个实施例中,若目标文件所需占用的存储块的块数为600,有500个存储块的处于第二使用优先级区域,则先占用第二使用优先级区域的500个存储块,再占用第一使用优先级区域的100个存储块。
本公开实施例中,关于目标文件所需占用的存储块的块数X,可以是根据目标文件大小的3到5倍的存储空间确定的。
本公开实施例中,通过结合存储块的实际擦写次数以及目标文件需要占用的目标存储块数,以及存储块的使用优先级,对存储块进行合理的选择,使得每个存储块的擦写次数都趋于平均,实现对块的负载均衡的管理,如此,就可以防止一直对单个存储块进行连续擦写,可以延长存储块的使用寿命,保证每个存储块在产品的生命周期内度能够被均匀擦写,提升产品的可靠性。
本公开实施例中,所述闪存器通过SPI与所述单片机连接;
所述驱动层包括:
SPI驱动函数,用于传输所述闪存器和所述单片机之间的数据,
闪存驱动函数,用于控制所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开实施例中,驱动层包括SPI驱动函数可以针对每种单片机外设的特性各不相同,因此可以独立设计,用于适配各自架构的单片机,进而实现对传输各自架构的单片机与闪存器之间的数据。
本公开实施例中,单片机通过SPI与闪存器连接,SPI驱动函数驱动SPI实现单片机与闪存器之间数据的传输。
本公开实施例中,驱动层的闪存驱动函数通过第二物理地址将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开实施例中,驱动层的Nand Flash函数,由于各个厂家的Nand Flash存储器的器件,在读写、擦除逻辑上指令各不相同,由此可以根据各个平台的器件要求,设计各种闪存驱动函数。
本公开实施例中,所述闪存器为Nand Flash存储器,为Flash存储器的一种,具有容量较大,改写速度快的有点,适用于大量数据的存储,并且制造成本低廉、访问控制简单,且容量可以做到非常高,可以配合单片机芯片在各个领域搭建简单、高效、低成本的控制平台。
本公开实施例中,SPI驱动函数可以针对每种单片机SPI外设的特性,SPI驱动函数可以独立设计,由此可以适配各种架构的单片机。Nand Flash驱动函数可以根据闪存器,Nand Flash存储器的器件不同导致的读写、擦除逻辑上指令的不同,而设计不同的闪存驱动函数。由此,可以使得不同种类的单片机与不同种类的闪存器,Nand Flash存储器相互配合使用,进而实现了不同种类Nand Flash存储器能解决不同种类的单片机所需要高效的要求,以及可靠存储大容量文件的需求。
本公开实施例中,结合图6所示,提供一种文件处理系统600,所述系统用于执行上述实施例中的文件处理方法,所述系统包括:
单片机601;
闪存器602,所述闪存器通过SPI与所述单片机连接,所述闪存器用于提供对所述目标文件进行擦写的存储块。
本公开实施例中,SPI驱动函数可以针对每种单片机外设的特性各不相同,因此可以独立设计,用于适配各自架构的单片机,进而实现对传输各自架构的单片机与闪存器之间的数据。
本公开实施例中,单片机通过SPI与闪存器连接,SPI驱动函数驱动SPI实现单片机与闪存器之间数据的传输。
本公开实施例中,驱动层的闪存驱动函数通过第二物理地址将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本公开实施例中,驱动层的Nand Flash函数,由于各个厂家的Nand Flash存储器的器件,在读写、擦除逻辑上指令各不相同,由此可以根据各个平台的器件要求,设计各种闪存驱动函数。
本公开实施例中,所述闪存器为Nand Flash存储器,为Flash存储器的一种,具有容量较大,改写速度快的有点,适用于大量数据的存储,并且制造成本低廉、访问控制简单,且容量可以做到非常高,可以配合单片机芯片在各个领域搭建简单、高效、低成本的控制平台。
本公开实施例中,SPI驱动函数可以针对每种单片机SPI外设的特性,SPI驱动函数可以独立设计,由此可以适配各种架构的单片机。Nand Flash驱动函数可以根据闪存器,Nand Flash存储器的器件不同导致的读写、擦除逻辑上指令的不同,而设计不同的闪存驱动函数。由此,可以使得不同种类的单片机与不同种类的闪存器,Nand Flash存储器相互配合使用,进而实现了不同种类Nand Flash存储器能解决不同种类的单片机所需要高效的要求,以及可靠存储大容量文件的需求。
本公开实施例中,结合图6所示,所述系统还包括:
电可擦可编程只读存储器603,所述电可擦可编程只读存储器与所述单片机连接,用于存储元数据块的块信息。
本公开实施例中,可以将元数据块的块信息存储在电可擦可编程只读存储器603,如此,可以使元数据块的块信息稳定存储在固定的区域。
在闪存器每次被扫描后,更新一次所述电可擦可编程只读存储器603记录的块信息。
结合上述实施例提供一下示例:
示例1:一种文件处理系统,尤其是基于单片机程序的Nand Flash可靠文件系统。
涉及软件技术领域,尤其涉及下位机软件设计。
随着高性能、低功耗、小封装的单片MCU芯片的发展,单片机程序在消费电子、工业控制、汽车电子等领域得到了越来越多的应用。
Nand Flash由于其制造成本低廉、访问控制简单,且容量可以做到非常高,配合MCU可以在各个领域搭建简单、高效、低成本的控制平台。
由于单片机程序单线程的特性,对文件系统的管理不能直接移植嵌入式linux以及其他复杂操作系统的文件系统。但是,针对各种单片机程序的应用场景,对文件的可靠操作和管理又有越来越多的需求。
针对以上所述,本公开提供一种可靠的适用于单片机程序的小型文件系统,使用SPI的nand flash作为存储器件,解决了单片机程序高效、可靠存储大容量文件的问题。
使用软件抽象,将单片机程序Nand Flash硬件驱动层与文件系统、应用层分开,可以应用于各种业务场景。
使用本公开的技术方案方案,可以实现对使用nand flash的单片机程序各类文件进行管理,包括实现文件的写入/读取,坏块管理、Flash Block负载均衡。
文件处理系统的框图如图8所示。
结合图8所示,对文件处理系统做如下说明:
1,整体文件系统框架,包括:SPI驱动函数、Nand Flash驱动函数、Super Block+坏块管理+负载均衡的中间层、文件存储以及上层应用调用。
2,SPI驱动函数:针对每种单片机SPI外设的特性,接口驱动都不太相同,可以独立设计,适配各种架构的单片机。
3,Nand Flash驱动函数:由于各个厂家的Flash器件,在读写、擦除逻辑上指令各不相同,可以根据各个平台的器件要求,设计各种Nand驱动函数;
4,中间层,如图9所示
包括Super Block、地址转换、文件逻辑页-物理页位图、负载均衡机制,属于本方案的核心机制。
4.1Super Block:
超级块Super Block,也称元数据块,是包含记录文件处理系统的整体信息的链表,至少包括以下信息:文件地址表、Flash坏块位图以及文件起始块(BLOCK)的定义信息等;上述文件处理系统的整体信息必须存储在固定的存储区域,可以存储在闪存器Flash固定的块Block中,或者可以存储在Flash之外配置的一颗小容量的电可擦可编程只读存储,EEPROM中。
存储的信息包括:
文件地址表:存储各个文件的开始地址信息;
Flash坏块位图:对整颗Flash的全部Block制作一个坏块位图表,一个bit代表一个Block,需要的容量一般不会超过256Bytes。在程序第一次初始化时进行全Flash扫描,“1”代表该Block坏块,不能使用;“0”表示Block正常可用。在实际的写入文件中,对该位图进行实时维护刷新;该位图也可用于上位机对Flash状态进行查询;
文件起始BLOCK定义:根据单片机程序的特点,存储的文件,例如MP3音频文件、视频文件、数据文件,数量一般都是固定的。该区域信息可用于存储文件的起始物理地址,以及根据需要存储文件的大小信息。
4.2地址转换:
无论是应用层程序读/写,都会传递一个实际的物理地址给中间层,地址转换机制可以对物理地址进行处理,转换成flash的Block、Column、Row信息,给底层进行调用。
4.3文件逻辑页、物理页位图
由于Flash的特性,出现坏块的Block随机,并不能保证一个文件连续存储,因此,对于每个文件,维护一张逻辑Block-物理Block位图表,实现文件在逻辑上连续存储,物理上可以断续存储的特性。
4.4负载均衡机制
Flash的Block的擦写次数有限,为了增加产品使用寿命,对于Flash的写入,不能够对单个Block进行连续擦写。该机制对所要读/写的每个文件,根据产品实际情况,按照文件大小*3~5倍的存储空间进行处理,在写入时,对地址进行滚动写入,保证每个Block在产品的生命周期内都能够被均匀擦写,保证产品可靠性。
5,文件存储:对各个文件的读写进行封装,实现对上层应用的透明性,以及文件系统的可维护性。
6,上层应用调用:实现对文件存储部分所封装函数的调用,实现产品的业务逻辑。
本公开实施例中,结合图7所示,提供一种文件处理装置700,应用于单片机,所述装置700包括:
接收模块701,用于从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;
确定模块702,用于根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列的地址;
传输模块703,用于将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本公开实施例中,提供一种存储介质,所述存储介质中有计算机可执行指令,所述计算机可执行指令被处理器执行实现上述所述的反馈方法中的步骤。
或者,本发明实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种文件处理方法,其特征在于,应用于单片机,所述方法包括:
从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;
根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列;
将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
2.根据权利要求1所述的文件处理方法,其特征在于,所述方法还包括:
确定所述闪存器内可用存储块的块信息;
根据所述块信息,将所述目标文件写入到所述闪存器的可用存储块内,其中,正常块为可用的存储块。
3.根据权利要求2所述的文件处理方法,其特征在于,所述确定所述闪存器内可用存储块的块信息,包括:
获取所述闪存器的块位图表;其中,所述块位图表中一个比特对应于所述闪存器的一个存储块,其中,第一取值的所述比特指示对应的存储块为异常块或已占用块,第二取值的所述比特指示对应的存储块为所述可用存储块;其中,所述第二取值不同于所述第一取值。
4.根据权利要求2所述的文件处理方法,其特征在于,所述确定所述闪存器内可用存储块的块信息,包括:
扫描所述闪存器;
根据扫描的结果,确定出所述闪存器的异常块和已占用块;
至少记录所述异常块和所述已占用块的块信息。
5.根据权利要求2所述的文件处理方法,其特征在于,所述方法还包括:
记录N个所述存储块的擦写次数;
若N-M个存储块的擦写次数满足大于预设阈值的条件,确定所述N-M个存储块的优先级在第一使用优先级区域;
若M个存储块的擦写次数满足小于或等于预设阈值的条件,确定所述M个存储块的优先级在第二使用优先级区域;其中,第二使用优先级高于所述第一使用优先级;
确定所述目标文件所需占用的存储块的块数X;
若所述块数X小于或等于M,利用处于第二使用优先级的X个存储块对所述目标文件进行擦写;
若所述块数X大于M,利用处于第二优先级的M个存储块和处于第一优先级的X-M个存储块对所述目标文件进行擦写。
6.根据权利要求1所述的文件处理方法,其特征在于, 所述闪存器通过传输外设接口SPI与所述单片机连接;
所述驱动层包括:
SPI驱动函数,用于传输所述闪存器和所述单片机之间的数据,
闪存驱动函数,用于控制所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
7.一种文件处理系统,其特征在于,所述系统用于执行权利要求1-6任一项所述的方法,所述系统包括:
单片机;
闪存器,所述闪存器通过SPI与所述单片机连接,所述闪存器用于提供对所述目标文件进行擦写的存储块。
8.根据权利要求7所述的文件处理系统,其特征在于,所述系统还包括:
电可擦可编程只读存储器,所述电可擦可编程只读存储器与所述单片机连接,用于存储元数据块的块信息。
9.一种文件处理装置,其特征在于,应用于单片机,所述装置包括:
接收模块,用于从应用层接收文件处理请求;其中,所述文件处理请求包含:待处理的目标文件的第一物理地址;所述第一物理地址为:指代存储目标文件名的字符串;
确定模块,用于根据所述第一物理地址确定存储所述目标文件的第二物理地址,其中,所述第二物理地址包括:根据所述第一物理地址确定的所述目标文件的存储块、存储页和存储列;
传输模块,用于将所述第二物理地址传输给驱动层;其中,所述第二物理地址,用于供所述驱动层将所述目标文件写入闪存器或者从所述闪存器读取所述目标文件。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令;所述计算机可执行指令被处理器执行后,能够实现权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111261744.5A CN114063910B (zh) | 2021-10-28 | 2021-10-28 | 文件处理方法及装置、文件处理系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111261744.5A CN114063910B (zh) | 2021-10-28 | 2021-10-28 | 文件处理方法及装置、文件处理系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114063910A CN114063910A (zh) | 2022-02-18 |
CN114063910B true CN114063910B (zh) | 2024-04-02 |
Family
ID=80235664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111261744.5A Active CN114063910B (zh) | 2021-10-28 | 2021-10-28 | 文件处理方法及装置、文件处理系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114063910B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6378015B1 (en) * | 1999-01-25 | 2002-04-23 | George Yen | Flash memory module comprising an IDE interface engageable in a vertical position perpendicular to a motherboard and having an IDE expansion slot |
EP2189895A1 (en) * | 2008-11-24 | 2010-05-26 | Deutsche Thomson OHG | Flash based memory comprising a Flash translation layer and method for storing a file therein |
CN107967125A (zh) * | 2017-12-20 | 2018-04-27 | 北京京存技术有限公司 | 闪存转换层的管理方法、装置及计算机可读存储介质 |
CN109918024A (zh) * | 2019-02-28 | 2019-06-21 | 深圳和而泰数据资源与云技术有限公司 | 存储管理方法、装置、单片机设备和可读存储介质 |
CN110799935A (zh) * | 2018-12-04 | 2020-02-14 | 深圳市大疆创新科技有限公司 | 数据存储方法、闪存设备、智能电池、可移动平台 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978516B2 (en) * | 2007-12-27 | 2011-07-12 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
JP6076506B2 (ja) * | 2014-01-29 | 2017-02-08 | 株式会社日立製作所 | ストレージ装置 |
-
2021
- 2021-10-28 CN CN202111261744.5A patent/CN114063910B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6378015B1 (en) * | 1999-01-25 | 2002-04-23 | George Yen | Flash memory module comprising an IDE interface engageable in a vertical position perpendicular to a motherboard and having an IDE expansion slot |
EP2189895A1 (en) * | 2008-11-24 | 2010-05-26 | Deutsche Thomson OHG | Flash based memory comprising a Flash translation layer and method for storing a file therein |
CN107967125A (zh) * | 2017-12-20 | 2018-04-27 | 北京京存技术有限公司 | 闪存转换层的管理方法、装置及计算机可读存储介质 |
CN110799935A (zh) * | 2018-12-04 | 2020-02-14 | 深圳市大疆创新科技有限公司 | 数据存储方法、闪存设备、智能电池、可移动平台 |
CN109918024A (zh) * | 2019-02-28 | 2019-06-21 | 深圳和而泰数据资源与云技术有限公司 | 存储管理方法、装置、单片机设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114063910A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7039788B1 (en) | Method and apparatus for splitting a logical block | |
US8769192B2 (en) | Data read method for a plurality of host read commands, and flash memory controller and storage system using the same | |
US7702880B2 (en) | Hybrid mapping implementation within a non-volatile memory system | |
CN1658171B (zh) | 通过控制频繁受访问扇区对非易失性存储器的更快写操作 | |
US7559004B1 (en) | Dynamic redundant area configuration in a non-volatile memory system | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US8180953B2 (en) | Data accessing method for flash memory, and storage system and controller system thereof | |
US7526599B2 (en) | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system | |
US9268687B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US20100318760A1 (en) | Memory controller, nonvolatile storage device, and nonvolatile storage system | |
US20100057979A1 (en) | Data transmission method for flash memory and flash memory storage system and controller using the same | |
CN100520735C (zh) | 存储器空间管理方法及其相关系统 | |
US10013187B2 (en) | Mapping table accessing method, memory control circuit unit and memory storage device | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
US20130304964A1 (en) | Data processing method, and memory controller and memory storage device using the same | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
US9009442B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US8572350B2 (en) | Memory management, memory control system and writing method for managing rewritable semiconductor non-volatile memory of a memory storage system | |
CN114063910B (zh) | 文件处理方法及装置、文件处理系统及存储介质 | |
CN111813340A (zh) | 基于固态硬盘的指令响应方法、系统、装置及电子设备 | |
CN113138720B (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 | |
CN106406746A (zh) | 映射表存取方法、存储器控制电路单元及存储器存储装置 | |
CN111583976B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN114610230A (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 |