CN117991995B - 一种sd卡文件连续读或写控制方法、系统及存储设备 - Google Patents
一种sd卡文件连续读或写控制方法、系统及存储设备 Download PDFInfo
- Publication number
- CN117991995B CN117991995B CN202410345610.9A CN202410345610A CN117991995B CN 117991995 B CN117991995 B CN 117991995B CN 202410345610 A CN202410345610 A CN 202410345610A CN 117991995 B CN117991995 B CN 117991995B
- Authority
- CN
- China
- Prior art keywords
- file
- card
- address
- reading
- module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 7
- 230000003139 buffering effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据存储技术领域,公开了一种SD卡文件连续读或写控制方法、系统及存储设备。本发明方法在进行一次SD卡文件连续读或写操作过程中,只使用了一次文件指针偏移操作,主要通过连续重复执行SD卡读或写操作来实现文件内数据的读或写,避免了多次重复使用文件指针偏移操作,减少了执行文件指针偏移操作次数。由于文件指针偏移操作通常需要主控芯片CPU直接参与,通常会占用固定的指令周期,但该段时间内没有进行有效的数据传输,并且随着文件内的数据量的不断增加,文件指针偏移操作的耗时将不断增大,避免文件指针偏移操作可以节约这部分时间,提高SD卡文件连续读或写操作过程的数据传输效率。
Description
技术领域
本发明属于数据存储技术领域,具体涉及一种SD卡文件连续读或写控制方法、系统及存储设备。
背景技术
SD卡即安全数字卡(Secure Digital Memory Card),是基于半导体闪存的存储设备。随着半导体技术的不断发展,如今更多的小型嵌入式设备逐渐采用TF卡(Trans-flashCard ),该类存储卡支持SDIO标准接口,可作为小型嵌入式系统的外部存储单元。
FatFs作为一种通用的文件系统模块,完全分离于磁盘 I/O 层,可以嵌入到资源有限的微控制器中,以实现对SD卡内数据的文件管理。目前,当对处于打开状态下的文件进行连续读或写操作时,需要多次连续执行文件指针偏移操作以及文件读或写操作,并且随着文件内的数据量的不断增加,文件指针偏移操作的耗时将不断增大,降低了数据传输效率。
发明内容
本发明的目的在于提出一种SD卡文件连续读或写控制方法,在进行一次SD卡文件连续读或写操作过程中减少了执行文件指针偏移操作次数,利于提高数据传输效率。
本发明为了实现上述目的,采用如下技术方案:
一种SD卡文件连续读或写控制方法,包括如下步骤:
1. 一种SD卡文件连续读或写控制方法,其特征在于,包括如下步骤:
步骤1.在SD卡文件连续读或写操作前,利用片内寄存器创建4个寄存器组,分别存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数;
步骤2.以所确定的文件最大存储字节数和文件指针偏移量为参数,依次执行一次文件指针偏移操作和一次文件读或写操作,确定分配的SD卡读或写操作地址;
步骤3.以所确定的SD卡读或写操作地址、数据缓存地址以及数据缓存字节数为参数,执行一次SD卡读或写操作,确定SD卡读或写操作总字节数;
步骤4.以所确定的文件最大存储字节数、文件指针偏移量以及SD卡读或写操作总字节数为参数,计算文件剩余可用字节数;
步骤5. 在开始一次SD卡读或写操作前,判断步骤4中所述文件剩余可用字节数,是否满足终止条件或是否存在操作终止命令;
若不满足终止条件或存在终止命令时,可继续执行并转到步骤6,否则转到步骤7;
步骤6. 以分配的SD卡操作地址和SD卡读或写操作总字节数为参数计算下一次SD卡读或写操作地址,更新数据缓存地址以及数据缓存字节数,重复执行步骤3;
步骤7. 停止执行步骤3中的SD卡读或写操作,并结束步骤2的文件读或写操作。
此外,在上述SD卡文件连续读或写控制方法的基础上,本发明还提出了一种与之相对应的SD卡文件连续读或写控制系统,其采用如下技术方案:
一种SD卡文件连续读或写控制系统,用于实现上面述及的SD卡文件连续读或写控制方法的步骤,该SD卡文件连续读或写控制系统包括:
参数缓存模块、缓存管理模块、文件操作控制模块以及SD卡操作控制模块;
参数缓存模块包括4个寄存器组,分别对应存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数;每个寄存器组均由三个寄存器组成,分别用于存储对应参数的当前设定参数值、新设定参数值以及异或结果值,且当异或结果值为有效时将当前设定参数值更改为新设定参数值;
缓存管理模块包括缓存计数模块以及地址切换模块;缓存计数模块在文件连续读或写操作开始后,根据数据缓存字节数的当前设定参数值,累计当前缓存空间中读或写的数据长度,当达到所确定的数据缓存字节数时,向SD卡操作控制模块提供当前缓存字节数,同时地址切换模块根据数据缓存地址的当前设定参数值,从另一个缓存空间的首地址开始读或写数据,同时向SD卡操作控制模块提供当前缓存空间首地址。
文件操作控制模块包括指针偏移控制模块以及文件读或写控制模块;指针偏移控制模块根据参数缓存模块中文件指针偏移量的当前设定参数值,执行一次文件指针偏移操作;文件读或写控制模块在开始操作前判断终止条件或终止命令,根据参数缓存模块中文件最大存储字节数的当前设定参数值,执行一次文件读或写操作,并向SD卡操作控制模块提供分配的SD卡读或写操作地址。
SD卡操作控制模块包括操作参数缓存模块、数据长度累计模块、终止操作判断模块以及SD卡读或写控制模块;操作参数缓存模块包括三个寄存器,分别用于缓存SD卡读或写操作地址、SD卡数据缓存地址以及SD卡数据缓存字节数,其中SD卡数据缓存地址,为缓存管理模块中地址切换模块提供的当前缓存空间首地址,SD卡数据缓存字节数,为缓存管理模块中缓存计数模块提供的当前缓存字节数;
数据长度累计模块,用于累计缓存管理模块提供的当前缓存字节数,作为SD卡读或写操作总字节数,并根据分配的SD卡读或写操作地址计算出下一次SD卡读或写操作地址,在一次SD卡读或写操作完成后将下一次SD卡读或写操作地址更新于操作参数缓存模块的对应寄存器,其中下一次SD卡读或写操作地址=分配的SD卡读或写操作地址+SD卡读或写操作总字节数/512。同时根据参数缓存模块的文件最大存储字节数和文件指针偏移量,向终止操作判断模块提供所计算的文件剩余可用字节数,其中文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数;
终止操作判断模块,用于比较数据长度累计模块提供的文件剩余可用字节数与缓存管理模块中的当前缓存字节数,以及响应接收到的终止命令,并且在当文件剩余可用字节数小于当前缓存数据长度或接收到终止命令时,向SD卡读或写控制模块和文件读或写控制模块发送停止信号;
SD卡读或写控制模块,用于在执行开始前判断终止操作判断模块提供的停止信号,以操作参数缓存模块中的SD卡读或写操作地址、SD卡数据缓存地址、SD卡数据缓存字节数为参数,执行一次SD卡读或写操作。
另外,在上述SD卡文件连续读或写控制系统的基础上,本发明还进一步提供了一种存储设备,该存储设备包括主控芯片、缓存芯片以及SD卡。
主控芯片中存储有如上所述的SD卡文件连续读或写控制系统。
其中,缓存芯片受控于控制系统的缓存管理模块,且包含两段地址不重合、空间长度相同的缓存空间,其空间长度能够容纳所确定的数据缓存长度;SD卡受控于控制系统的SD卡操作控制模块,用于配合SD卡操作控制模块完成数据的读或写操作。
本发明具有如下优点:
如上所述,本发明述及了一种SD卡文件连续读或写控制方法、系统及存储设备。其中,本发明控制方法在进行一次SD卡文件连续读或写操作过程中,只使用了一次文件指针偏移操作,主要通过连续重复执行SD卡读或写操作来实现文件内数据的读或写,避免了多次重复使用文件指针偏移操作,减少了执行文件指针偏移操作次数。由于文件指针偏移操作通常需要主控芯片CPU直接参与,通常会占用固定的指令周期,但该段时间内没有进行有效的数据传输,并且随着文件内的数据量的不断增加,文件指针偏移操作的耗时将不断增大,避免文件指针偏移操作可以节约这部分时间,提高了SD卡文件连续读或写操作过程的数据传输效率。本发明方法在结束SD卡文件连续读或写操作后,可使得目标文件处于可操作状态。
附图说明
图1为本发明实施例1中SD卡文件连续读或写控制方法的流程图;
图2为本发明实施例2中SD卡文件连续读或写控制系统的结构框图;
图3为本发明实施例2中参数缓存模块的流程框图;
图4为本发明实施例2中用于存储文件最大存储字节数的寄存器组的流程框图;
图5为本发明实施例2中用于存储文件指针偏移量的寄存器组的流程框图;
图6为本发明实施例2中用于存储数据缓存地址的寄存器组的流程框图;
图7为本发明实施例2中用于存储数据缓存字节数的寄存器组的流程框图;
图8为本发明实施例2中缓存管理模块的流程框图;
图9为本发明实施例2中文件操作控制模块的流程框图;
图10为本发明实施例2中SD卡操作控制模块的结构框图;
图11为本发明实施例2中操作参数缓存模块的流程框图;
图12为本发明实施例2中数据长度累计模块的流程框图;
图13为本发明实施例2中终止操作判断模块的流程框图;
图14为本发明实施例2中SD卡读或写控制模块的流程框图;
图15为本发明实施例3中存储设备的结构框图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
实施例1
如图1所示,本实施例述及了一种SD卡文件连续读或写控制方法,其包括如下步骤:
步骤1.在SD卡文件连续读或写操作前,利用片内寄存器创建4个寄存器组,分别存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数。
文件最大存储字节数,为单个目标文件中可存储字节数的最大值。
文件指针偏移量,为相对文件起始地址的字节偏移量。
数据缓存地址,为数据缓存空间的首地址。
数据缓存字节数,为向缓存空间写入或读出的字节总数。
步骤2. 以所确定的文件最大存储字节数和文件指针偏移量为参数,依次执行一次文件指针偏移操作和一次文件读或写操作,确定分配的SD卡读或写操作地址。
文件指针偏移操作,为以文件指针偏移量为参数,实现文件指针偏移至相应位置,
文件读或写操作,为以文件最大存储字节数为参数,从文件指针偏移量的位置开始向后进行文件读或写操作,当接收到停止信号后立即结束当前的文件读或写操作。
步骤3. 以所确定的SD卡读或写操作地址、数据缓存地址以及数据缓存字节数为参数,执行一次SD卡读或写操作,确定SD卡读或写操作总字节数。
SD卡读或写操作地址,为在文件读或写操作过程中根据文件指针偏移量分配的SD卡读或写操作地址或下一次SD卡读或写操作地址;
SD卡读或写操作总字节数为文件连续读或写操作开始后每次执行SD卡读或写操作的数据缓存字节数的累计总数。
步骤4. 以所确定的文件最大存储字节数、文件指针偏移量以及SD卡读或写操作总字节数为参数,计算文件剩余可用字节数。文件剩余可用字节数的计算公式为:文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数。
步骤5. 在开始一次SD卡读或写操作前,判断步骤4中所述文件剩余可用字节数,是否满足终止条件或是否存在操作终止命令。终止条件为:当文件剩余可用字节数小于数据缓存字节数时,即满足终止条件。终止命令为随机时刻所接收到的停止命令。
若不满足终止条件或存在终止命令时,可继续执行并转到步骤6,否则转到步骤7。
步骤6. 以分配的SD卡读或写操作地址和SD卡读或写操作总字节数为参数计算下一次SD卡读或写操作地址,更新数据缓存地址以及数据缓存字节数,重复执行步骤3。
下一次SD卡读或写操作地址的计算公式为:下一次SD卡读或写操作地址=分配的SD卡读或写操作地址+SD卡读或写操作总字节数/512。
步骤7. 停止执行步骤3中的SD卡读或写操作,并结束步骤2的文件读或写操作。
由上述方法步骤不难看出,在进行一次SD卡文件连续读或写操作过程中,只使用了一次文件指针偏移操作,主要通过连续重复执行SD卡读或写操作来实现文件内数据的读或写,因而避免了多次重复使用文件指针偏移操作,减少了执行文件指针的偏移操作次数。
以包括一个主控芯片、缓存芯片和SD卡的存储设备为例,详细阐述本方法的操作步骤。
根据具体应用需求,在主控芯片对SD卡发启连续读或写操作前,可优先确定文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数,例如:
主控芯片从SD卡中目标文件的第FILE_ADDRESS偏移地址开始写入或读取数据,总块数为WR_BLOCK,即总数据量为WR_BLOCK×512B,文件最大存储字节数可设定为MAX_BLOCK×512B,其中MAX_BLOCK≥WR_BLOCK。
由于片上内存有限,在缓存芯片中分别申请首地址为SRAM_ADDR1和SRAM_ADDR2,长度均为SRAM_LENGTH的两段缓存空间,利用乒乓操作,分N次缓存数据。
每次缓存的数据的块数为L[i],即数据缓存字节数为L[i]×512B,则有总块数WR_BLOCK =∑N i=1L[i],其中,L[i]≤SRAM_LENGTH/512。
为了便于阐述和表示,统一利用SRAM_ADDR代替SRAM_ADDR1和SRAM_ADDR2。
接下来,以FILE_ADDRESS为参数,执行一次文件指针偏移操作,即从当前文件的第FILE_ADDRESS地址开始进行读或写操作。以MAX_BLOCK×512B为参数,执行一次文件读或写操作,即当前文件最大存储字节数为MAX_BLOCK×512B。
文件指针偏移操作和文件读或写操作,均采用现有Fatfs文件系统中相关的文件操作函数,在文件读或写操作过程中可根据FILE_ADDRESS给出调用SD卡读或写操作所需要的SD卡读或写操作地址SD_ADDRSS。然后以SD_ADDRSS、L[k]、SRAM_ADDR为SD卡的读或写操作参数,执行一次SD卡读或写操作,并且累计已读或写操作的数据长度BL =∑k i=1L[i],作为SD卡读或写操作总字节数。以MAX_BLOCK、FILE_ADDRESS、BL为参数,计算文件剩余可用字节数FILE_REMAIN = (MAX_BLOCK-BL)×512 - FILE_ADDRESS。
每当一次SD卡读或写操作执行完成时,以FILE_REMAIN为参数判断文件剩余可用字节数是否小于数据缓存字节数。若小于,则认为当前文件不可继续读或写,停止后续SD卡读或写操作和当前的文件读或写操作。若不小于,则进一步判断是否存在终止操作命令,若存在终止操作命令,则停止后续SD卡读或写操作和当前的文件读或写操作,若不存在,则继续进行下一次SD卡读或写操作。
在下一次SD卡读或写操作开始执行前将SD卡读或写操作地址更新为所计算的下一次SD卡读或写操作地址SD_ADDRSS[k+1] = SD_ADDRSS[k]+ BL,同时更新数据缓存地址和数据缓存字节数,SRAM_ADDR[k+1]= SRAM_ADDR_new,L[k+1]=L_new。其中SRAM_ADDR_new和L_new为数据缓存地址以及数据缓存字节数的最新状态。
在本发明中以文件最大可用字节数为数据长度参数,执行文件读或写操作,由于现有的FatFs文件系统中文件读或写操作函数均采用循环方式,需要等待所设定的数据长度全部操作完成后才能结束,不能满足可随机停止的功能需求,需要修改现有FatFs文件系统中文件的读或写操作函数,在每次循环开始前判断终止条件或终止命令,使其在满足终止条件或存在终止命令时能够终止文件循环读或写流程,以结束文件读或写操作,使得目标文件处于可操作状态,以便于根据具体应用需求进一步拓展剩余可用字节数、关闭当前文件或重新开始一次文件的连续读或写操作。
实施例2
本实施例2述及了一种SD卡文件连续读或写控制系统,该SD卡文件连续读或写控制系统用于实现上述实施例1中的SD卡文件连续读或写控制方法的步骤。
如图2所示,本实施例中SD卡文件连续读或写控制控制系统,包括:
参数缓存模块201、缓存管理模块202、文件操作控制模块203、SD卡操作控制模块204。
如图3所示,参数缓存模块201包括4个寄存器组,分别为寄存器组201_1、寄存器组201_2、寄存器组201_3、寄存器组201_4,这4个寄存器组分别对应存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数。
每个寄存器组均由3个寄存器组成,分别用于存储对应参数的当前设定参数值、新设定参数值以及异或结果值,且当异或结果值为有效时将当前设定参数值更改为新设定参数值。
以图4中示出的用于存储文件最大存储字节数的寄存器组201_1为例,寄存器组201_1由寄存器201_1_1、寄存器201_1_2、寄存器201_1_3组成。
其中,寄存器201_1_1、寄存器201_1_2、寄存器201_1_3分别用于存储文件最大存储字节数的当前设定参数值、新设定参数值以及异或结果值。
同理,如图5所示,本实施例中用于存储文件指针偏移量的寄存器组201_2,由寄存器201_2_1、寄存器201_2_2、寄存器201_2_3组成。
其中,寄存器201_2_1、寄存器201_2_2、寄存器201_2_3分别用于存储文件指针偏移量的当前设定参数值、新设定参数值以及异或结果值。
同理,如图6所示,本实施例中用于存储数据缓存地址的寄存器组201_3,由寄存器201_3_1、寄存器201_3_2、寄存器201_3_3组成。
其中,寄存器201_3_1、寄存器201_3_2、寄存器201_3_3分别用于存储数据缓存地址的当前设定参数值、新设定参数值以及异或结果值。
同理,如图7所示,本实施例中用于存储数据缓存字节数的寄存器组201_4,由寄存器201_4_1、寄存器201_4_2、寄存器201_4_3组成。
其中,寄存器201_4_1、寄存器201_4_2、寄存器201_4_3分别用于存储数据缓存字节数的当前设定参数值、新设定参数值以及异或结果值。
本实施例中寄存器201_1_1、寄存器201_2_1、寄存器201_3_1、寄存器201_4_1还能够向其他模块提供当前设定参数值。当异或结果值为有效时,将当前设定参数值更改为新设定参数值,以便于针对不同的文件读或写操作需求,实现不同的参数配置。
如图8所示,缓存管理模块202包括缓存计数模块202_1和地址切换模块202_2。
在文件连续读或写操作开始后,缓存计数模块202_1根据数据缓存字节数的当前设定参数值,累计当前缓存空间中读或写的数据长度,当达到所确定的数据缓存字节数时,向SD卡操作控制模块204提供当前缓存字节数,同时地址切换模块202_2根据数据缓存地址的当前设定参数值,从另一个缓存空间的首地址开始读或写数据,同时向SD卡操作控制模块204提供当前缓存空间首地址。
如图9所示,文件操作控制模块203包括指针偏移控制模块203_1和文件读或写控制模块203_2,指针偏移控制模块203_1根据参数缓存模块201文件指针偏移量的当前设定参数值,执行一次文件指针的偏移操作;文件读或写控制模块203_2在开始操作前判断终止条件或终止命令,根据参数缓存模块201中文件最大存储字节数的当前设定参数值,执行一次文件读或写操作,并向所述SD卡操作控制模块204提供分配的SD卡读或写操作地址。
如图10所示,SD卡操作控制模块204包括操作参数缓存模块204_1、数据长度累计模块204_2、终止操作判断模块204_3和SD卡读或写控制模块204_4。
如图11所示,操作参数缓存模块204_1包括寄存器204_1_1、寄存器204_1_2、寄存器204_1_3,分别用于缓存SD卡读或写操作地址、SD卡数据缓存地址以及SD卡数据缓存字节数。其中SD卡读或写操作地址,为文件读或写控制模块203_2分配的SD卡读或写操作地址或所计算的下一次SD卡读或写操作地址,SD卡数据缓存地址和SD卡数据缓存字节数,为缓存管理模块202提供的当前缓存空间首地址和当前缓存字节数。
如图12所示,数据长度累计模块204_2,用于累计缓存管理模块202提供的当前缓存字节数,作为SD卡读或写操作总字节数,根据分配的SD卡读或写操作地址计算出下一次SD卡读或写操作地址,在一次SD卡读或写操作完成后将下一次SD卡读或写操作地址更新于操作参数缓存模块204_1的寄存器204_1_1,其中下一次SD卡读或写操作地址=分配的SD卡读或写操作地址+SD卡读或写操作总字节数/512。同时根据参数缓存模块201的文件最大存储字节数和文件指针偏移量,向终止操作判断模块204_3提供所计算的文件剩余可用字节数,其中文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数。
如图13所示,终止操作判断模块204_3,用于比较数据长度累计模块204_2提供的文件剩余可用字节数与缓存管理模块202的当前缓存字节数,以及响应所接收到的终止命令,当文件剩余可用字节数小于当前缓存数据长度或接收到终止命令时,向SD卡读或写控制模块和文件操作控制模块203的文件读或写控制模块发送停止信号。
如图14所示,SD卡读或写控制模块204_4,在执行操作前判断终止操作判断模块204_3提供的停止信号,以操作参数缓存模块204_1的SD卡读或写操作地址、SD卡数据缓存地址、SD卡数据缓存字节数为参数,执行一次SD卡读或写操作,控制相关硬件完成SD卡的数据读或写操作。
现有的FatFs文件系统中虽然可以支持快速查找功能,但需要在主控芯片内存中创建对应文件所占簇的映射列表,其中簇一般由多个块组成,其大小一般为512字节的整数倍,然而,随着文件内数据量的不断增大,该方法对内存占用将逐渐增加,同时也限制了文件容量的可拓展功能,后续操作可能会存在一定的局限性。本实施例述及的控制系统中,参数缓存模块201、缓存管理模块202、文件操作控制模块203以及SD卡操作控制模块204所涉及的输入、输出参数以及中间变量均可采用固定大小的寄存器完成存放,寄存器总体数量较少且固定,不需要跟随文件内数据量而变动,因而能够解决现有技术中随着文件内数据量的不断增大,对内存占用将逐渐增加的问题。
本实施例中的数据缓存地址可以确定为主控芯片的缓存地址或缓存芯片的缓存地址,可根据具体应用场景灵活选择,在下述实施例3中给出了一种包含缓存芯片的存储设备,因此在下述实施例3中的数据缓存地址,可确定为缓存芯片3的缓存地址。
实施例3
如图15所示,本实施例3述及了一种包括SD卡1、主控芯片2以及缓存芯片3的存储设备。主控芯片2中存储有上述实施例2中的SD卡文件连续读或写控制系统。
如图2所示,SD卡文件连续读或写控制系统包括参数缓存模块201、缓存管理模块202、文件操作控制模块203以及SD卡操作控制模块204,具体结构请参见实施例2中的相应结构。
如图3至图7所示,参数缓存模块201包括4个寄存器组201_1、寄存器组201_2、寄存器组201_3、寄存器组201_4,且每个寄存器组由3个寄存器成,分别用于存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数的当前设定参数值、新设定参数值以及异或结果值。当异或结果值为有效时,将当前设定参数值更改为新设定参数值,在实际应用中,当操作不同目标文件时,可实现不同的参数配置。
如图8所示,缓存管理模块202包括缓存计数模块202_1和地址切换模块202_2。
在文件连续读或写操作开始后,缓存计数模块202_1根据数据缓存字节数的当前设定参数值,累计当前缓存空间中读或写的数据长度,当达到所确定的数据缓存字节数时,向SD卡操作控制模块204提供当前缓存字节数,同时地址切换模块202_2根据数据缓存地址的当前设定参数值,从另一个缓存空间的首地址开始读或写数据,同时向SD卡操作控制模块204提供当前缓存空间首地址。
如图9所示,文件操作控制模块203包括指针偏移控制模块203_1和文件读或写控制模块203_2。指针偏移控制模块203_1根据参数缓存模块201中文件指针偏移量的当前设定参数值,执行一次文件指针的偏移操作。文件读或写控制模块203_2在开始操作前判断终止条件或终止命令,根据参数缓存模块201中文件最大存储字节数的当前设定参数值,执行一次文件的读或写操作,并向SD卡操作控制模块204提供分配的SD卡读或写操作地址。
如图10至图14所示,SD卡操作控制模块204包括操作参数缓存模块204_1、数据长度累计模块204_2、终止操作判断模块204_3和SD卡读或写控制模块204_4。
操作参数缓存模块204_1包括三个寄存器,分别用于缓存SD卡读或写操作地址、SD卡数据缓存地址以及SD卡数据缓存字节数。SD卡读或写操作地址为文件读或写控制模块203_2分配的SD卡读或写操作地址或所计算的下一次SD卡读或写操作地址,SD卡数据缓存地址和SD卡数据缓存字节数为缓存管理模块202提供的当前缓存空间首地址和当前缓存字节数。
数据长度累计模块204_2,用于累计缓存管理模块202提供的当前缓存字节数,作为SD卡读或写操作总字节数,根据分配的SD卡读或写操作地址计算出下一次SD卡读或写操作地址,在一次SD卡读或写操作完成后将下一次SD卡读或写操作地址更新于操作参数缓存模块204_1的寄存器204_1_1,其中,下一次SD卡读或写操作地址=SD卡读或写操作地址+SD卡读或写操作总字节数/512。同时根据参数缓存模块201的文件最大存储字节数和文件指针偏移量,向终止操作判断模块204_3提供所计算的文件剩余可用字节数,其中文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数。
终止操作判断模块204_3,用于比较数据长度累计模块204_2提供的文件剩余可用字节数与缓存管理模块202的当前缓存字节数,以及响应所接收到的终止命令,当文件剩余可用字节数小于当前缓存数据长度或接收到终止命令时,向SD卡读或写控制模块204_4和文件操作控制模块203的文件读或写控制模块发送停止信号。
SD卡读或写控制模块204_4,在执行操作前判断终止操作判断模块204_3提供的停止操作命令,以操作参数缓存模块204_1的SD卡读或写操作地址、SD卡数据缓存地址、SD卡数据缓存字节数为参数,执行一次SD卡读或写操作,控制主控芯片2与SD卡1之间的SDIO硬件接口,完成SD卡数据读或写操作中的命令和数据交互。
缓存芯片3受控于控制系统的缓存管理模块202,且包含两段地址不重合、空间长度相同的缓存空间,其空间长度能够容纳所确定的数据缓存长度。SD卡1受控于控制系统的SD卡操作控制模块204,用于配合SD卡操作控制模块204完成数据的读或写操作。
当存储设备中主控芯片2准备对SD卡1中某一文件执行连续读或写操作时,参照实施例1中的方法,实现对缓存芯片3和SD卡1的缓存乒乓操作和文件的连续读或写操作。
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。
Claims (6)
1.一种SD卡文件连续读或写控制方法,其特征在于,包括如下步骤:
步骤1.在SD卡文件连续读或写操作前,利用片内寄存器创建4个寄存器组,分别存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数;
所述文件最大存储字节数,为单个目标文件中可存储字节数的最大值;所述文件指针偏移量,为相对文件起始地址的字节偏移量;所述数据缓存地址,为数据缓存空间的首地址;所述数据缓存字节数,为向缓存空间写入或读出的字节总数;
步骤2.以所确定的文件最大存储字节数和文件指针偏移量为参数,依次执行一次文件指针偏移操作和一次文件读或写操作,确定分配的SD卡读或写操作地址;
所述文件指针偏移操作,为以所述文件指针偏移量为参数,实现文件指针偏移至相应位置;所述文件读或写操作,为以所述文件最大存储字节数为参数,从所述文件指针偏移量的位置开始向后进行文件读或写操作,当接收到停止信号后立即结束当前的文件读或写操作;
所述SD卡读或写操作地址,为在文件读或写操作过程中根据文件指针偏移量分配的SD卡读或写操作地址或步骤6中下一次SD卡读或写操作地址;所述SD卡读或写操作总字节数,为文件连续读或写操作开始后每次执行所述SD卡读或写操作的数据缓存字节数的累计总数;
步骤3.以所确定的SD卡读或写操作地址、数据缓存地址以及数据缓存字节数为参数,执行一次SD卡读或写操作,确定SD卡读或写操作总字节数;
步骤4.以所确定的文件最大存储字节数、文件指针偏移量以及SD卡读或写操作总字节数为参数,计算文件剩余可用字节数;
所述步骤4中,文件剩余可用字节数的计算公式为:文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数;
步骤5.在开始一次SD卡读或写操作前,判断步骤4中所述文件剩余可用字节数,是否满足终止条件或是否存在操作终止命令;
若不满足终止条件或存在终止命令时,继续执行并转到步骤6,否则转到步骤7;
步骤6.以分配的SD卡读或写操作地址和SD卡读或写操作总字节数为参数计算下一次SD卡读或写操作地址,更新数据缓存地址以及数据缓存字节数,重复执行步骤3;
所述步骤6中,下一次SD卡读或写操作地址的计算公式为:下一次SD卡读或写操作地址=分配的SD卡读或写操作地址+SD卡读或写操作总字节数/512;
步骤7.停止执行步骤3中的SD卡读或写操作,并结束步骤2的文件读或写操作。
2.根据权利要求1所述的SD卡文件连续读或写控制方法,其特征在于,
所述步骤5中,终止条件,为当所述文件剩余可用字节数小于所述数据缓存字节数时,即满足终止条件;所述终止命令,为随机时刻所接收到的停止命令。
3.一种SD卡文件连续读或写控制系统,用于实现如上述权利要求1至2任一项所述的SD卡文件连续读或写控制方法的步骤,其特征在于,所述控制系统包括:
参数缓存模块、缓存管理模块、文件操作控制模块以及SD卡操作控制模块;
所述参数缓存模块包括4个寄存器组,分别对应存储所确定的文件最大存储字节数、文件指针偏移量、数据缓存地址以及数据缓存字节数;每个所述寄存器组均由三个寄存器组成,分别用于存储对应参数的当前设定参数值、新设定参数值以及异或结果值,且当异或结果值为有效时将当前设定参数值更改为新设定参数值;
所述缓存管理模块包括缓存计数模块以及地址切换模块;所述缓存计数模块在文件连续读或写操作开始后,根据数据缓存字节数的当前设定参数值,累计当前缓存空间中读或写的数据长度,每当达到所确定的数据缓存字节数时,向所述SD卡操作控制模块提供当前缓存字节数,并重新累计另一个缓存空间中读或写的数据长度,同时所述地址切换模块向所述SD卡操作控制模块提供当前缓存空间首地址,并根据数据缓存地址的当前设定参数值,从另一个缓存空间的首地址开始读或写数据。
4.根据权利要求3所述的SD卡文件连续读或写控制系统,其特征在于,
所述文件操作控制模块包括指针偏移控制模块以及文件读或写控制模块;
所述指针偏移控制模块根据参数缓存模块中文件指针偏移量的当前设定参数值,执行一次文件指针偏移操作;
所述文件读或写控制模块在开始操作前判断终止条件或终止命令,根据所述参数缓存模块中文件最大存储字节数的当前设定参数值,执行一次文件读或写操作,并向所述SD卡操作控制模块提供分配的SD卡读或写操作地址。
5.根据权利要求3所述的SD卡文件连续读或写控制系统,其特征在于,
所述SD卡操作控制模块包括操作参数缓存模块、数据长度累计模块、终止操作判断模块以及SD卡读或写控制模块;
所述操作参数缓存模块包括三个寄存器,分别用于缓存所述SD卡读或写操作地址、SD卡数据缓存地址以及SD卡数据缓存字节数;所述SD卡数据缓存地址,为所述缓存管理模块中地址切换模块提供的当前缓存空间首地址,所述SD卡数据缓存字节数,为所述缓存管理模块中缓存计数模块提供的当前缓存字节数;
所述数据长度累计模块,用于累计所述缓存管理模块提供的当前缓存字节数,作为SD卡读或写操作总字节数,并根据分配的SD卡读或写操作地址计算出下一次SD卡读或写操作地址,在一次SD卡读或写操作完成后将下一次SD卡读或写操作地址更新于所述操作参数缓存模块的对应寄存器,其中下一次SD卡读或写操作地址=分配的SD卡读或写操作地址+SD卡读或写操作总字节数/512;同时根据所述参数缓存模块的文件最大存储字节数和文件指针偏移量,向所述终止操作判断模块提供所计算的文件剩余可用字节数,其中文件剩余可用字节数=文件最大存储字节数-文件指针偏移量-SD卡读或写操作总字节数;
所述终止操作判断模块,用于比较所述数据长度累计模块提供的文件剩余可用字节数与缓存管理模块中的当前缓存字节数,以及响应接收到的终止命令,并且在当文件剩余可用字节数小于当前缓存数据长度或接收到终止命令时,向SD卡读或写控制模块和文件读或写控制模块发送停止信号;
所述SD卡读或写控制模块,用于在执行开始前判断终止操作判断模块提供的停止信号,以操作参数缓存模块中的SD卡读或写操作地址、SD卡数据缓存地址、SD卡数据缓存字节数为参数,执行一次SD卡读或写操作。
6.一种存储设备,包括主控芯片、缓存芯片以及SD卡,其特征在于,所述主控芯片中存储有如上述权利要求3至5任一项所述的SD卡文件连续读或写控制系统;
所述缓存芯片受控于所述控制系统的缓存管理模块,且包含两段地址不重合、空间长度相同的缓存空间,其空间长度能够容纳所确定的数据缓存长度;所述SD卡受控于控制系统的SD卡操作控制模块,用于配合所述SD卡操作控制模块完成数据的读或写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410345610.9A CN117991995B (zh) | 2024-03-26 | 2024-03-26 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410345610.9A CN117991995B (zh) | 2024-03-26 | 2024-03-26 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117991995A CN117991995A (zh) | 2024-05-07 |
CN117991995B true CN117991995B (zh) | 2024-06-07 |
Family
ID=90893514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410345610.9A Active CN117991995B (zh) | 2024-03-26 | 2024-03-26 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117991995B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1184536A (zh) * | 1995-03-22 | 1998-06-10 | 艾利森电话股份有限公司 | 与数字信号处理有关的装置和方法以及包括这种装置的处理设备 |
GB0130929D0 (en) * | 2001-12-24 | 2002-02-13 | Vulcan Machines Ltd | Data write access |
CN102436428A (zh) * | 2011-11-11 | 2012-05-02 | 华南理工大学 | 基于fpga的sd卡文件管理控制器 |
CN102681952A (zh) * | 2012-05-12 | 2012-09-19 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
WO2016194979A1 (ja) * | 2015-06-02 | 2016-12-08 | 日本電気株式会社 | ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム |
CN106843759A (zh) * | 2017-01-17 | 2017-06-13 | 苏州同元软控信息技术有限公司 | 一种基于动态系统结果数据的快速读写方法 |
CN108037965A (zh) * | 2017-12-29 | 2018-05-15 | 飞天诚信科技股份有限公司 | 一种读写目标芯片的方法及装置 |
CN113821458A (zh) * | 2021-09-18 | 2021-12-21 | 日立楼宇技术(广州)有限公司 | 一种数据操作方法、装置、计算机设备和存储介质 |
CN114490439A (zh) * | 2022-02-11 | 2022-05-13 | 武汉中旗生物医疗电子有限公司 | 基于无锁环形共享内存的数据写入、读取、通信方法 |
CN115145481A (zh) * | 2022-05-11 | 2022-10-04 | 北京微纳星空科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN115756556A (zh) * | 2022-11-10 | 2023-03-07 | 武汉凌久微电子有限公司 | 一种基于图形处理器的bios更新方法 |
CN116955225A (zh) * | 2022-12-06 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 数据缓存方法、装置、电子设备和可读介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2373595B (en) * | 2001-03-15 | 2005-09-07 | Italtel Spa | A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol |
US7788463B2 (en) * | 2007-02-13 | 2010-08-31 | Microsoft Corporation | Cyclic buffer management |
US8266366B2 (en) * | 2008-04-11 | 2012-09-11 | SanDisk Technologies, Inc. | Memory device operable in read-only and write-once, read-many (WORM) modes of operation |
CN111522507B (zh) * | 2020-04-14 | 2021-10-01 | 中山大学 | 一种低延迟的文件系统地址空间管理方法、系统及介质 |
-
2024
- 2024-03-26 CN CN202410345610.9A patent/CN117991995B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1184536A (zh) * | 1995-03-22 | 1998-06-10 | 艾利森电话股份有限公司 | 与数字信号处理有关的装置和方法以及包括这种装置的处理设备 |
GB0130929D0 (en) * | 2001-12-24 | 2002-02-13 | Vulcan Machines Ltd | Data write access |
CN102436428A (zh) * | 2011-11-11 | 2012-05-02 | 华南理工大学 | 基于fpga的sd卡文件管理控制器 |
CN102681952A (zh) * | 2012-05-12 | 2012-09-19 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
WO2016194979A1 (ja) * | 2015-06-02 | 2016-12-08 | 日本電気株式会社 | ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム |
CN106843759A (zh) * | 2017-01-17 | 2017-06-13 | 苏州同元软控信息技术有限公司 | 一种基于动态系统结果数据的快速读写方法 |
CN108037965A (zh) * | 2017-12-29 | 2018-05-15 | 飞天诚信科技股份有限公司 | 一种读写目标芯片的方法及装置 |
CN113821458A (zh) * | 2021-09-18 | 2021-12-21 | 日立楼宇技术(广州)有限公司 | 一种数据操作方法、装置、计算机设备和存储介质 |
CN114490439A (zh) * | 2022-02-11 | 2022-05-13 | 武汉中旗生物医疗电子有限公司 | 基于无锁环形共享内存的数据写入、读取、通信方法 |
CN115145481A (zh) * | 2022-05-11 | 2022-10-04 | 北京微纳星空科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN115756556A (zh) * | 2022-11-10 | 2023-03-07 | 武汉凌久微电子有限公司 | 一种基于图形处理器的bios更新方法 |
CN116955225A (zh) * | 2022-12-06 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 数据缓存方法、装置、电子设备和可读介质 |
Non-Patent Citations (2)
Title |
---|
CMOS的读写与口令的获得和清除;王秀妍;抚顺石油学院学报;19980925(第03期);全文 * |
面向NVM存储系统的快速文件访问系统;贺庆建;蔡涛;王杰;牛德姣;;计算机应用;20201231(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117991995A (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101241446B (zh) | 非易失数据存储装置中虚拟文件系统命令调度方法和设备 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US11726704B2 (en) | Buffer optimization for solid-state drives | |
US9569381B2 (en) | Scheduler for memory | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN111752484A (zh) | 一种ssd控制器、固态硬盘及数据写入方法 | |
JP3194201B2 (ja) | キャッシュモード選択方法 | |
US20080225858A1 (en) | Data transferring apparatus and information processing system | |
CN109213423A (zh) | 基于地址屏障无锁处理并发io命令 | |
CN117991995B (zh) | 一种sd卡文件连续读或写控制方法、系统及存储设备 | |
CN117806989A (zh) | 基于持久化内存的高速数据处理方法、装置、设备及介质 | |
CN111061652B (zh) | 一种基于mpi-io中间件的非易失内存管理方法与系统 | |
CN107861887B (zh) | 一种串行易失性存储器的控制方法 | |
CN112052189B (zh) | 存储器装置、电子装置以及与其相关的读取方法 | |
CN111338567B (zh) | 一种基于Protocol Buffer的镜像缓存方法 | |
CN1333346C (zh) | 一种访问文件的方法 | |
CN111367474B (zh) | 面向嵌入式存储器的fat文件系统后分配方法及系统 | |
CN102073604B (zh) | 一种同步动态存储器读写控制方法、装置和系统 | |
CN116166606B (zh) | 基于共享紧耦合存储器的高速缓存控制架构 | |
CN112988074B (zh) | 一种存储系统管理软件适配方法及装置 | |
CN111966294B (zh) | 存储数据的方法、装置、设备及存储介质 | |
CN118245406A (zh) | 数据访问方法和系统、psram控制器、存储介质 | |
CN109213424A (zh) | 并发io命令的无锁处理方法 | |
US20240168684A1 (en) | Efficient Deallocation and Reset of Zones in Storage Device | |
TWI742565B (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 |