CN101876956B - Sd卡的文件存取方法及装置 - Google Patents

Sd卡的文件存取方法及装置 Download PDF

Info

Publication number
CN101876956B
CN101876956B CN200910242482.0A CN200910242482A CN101876956B CN 101876956 B CN101876956 B CN 101876956B CN 200910242482 A CN200910242482 A CN 200910242482A CN 101876956 B CN101876956 B CN 101876956B
Authority
CN
China
Prior art keywords
file
card
physical cluster
sub
data
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
CN200910242482.0A
Other languages
English (en)
Other versions
CN101876956A (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.)
Shanxi Zhongtianxin Technology Co ltd
Zhongxing Intelligent System Technology Co ltd
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CN200910242482.0A priority Critical patent/CN101876956B/zh
Publication of CN101876956A publication Critical patent/CN101876956A/zh
Application granted granted Critical
Publication of CN101876956B publication Critical patent/CN101876956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)

Abstract

本发明提供了一种SD卡的文件写入方法,所述文件写入涉及从不连续的内存地址向SD卡的连续物理簇中写入文件数据的一次DMA传输过程,所述方法包括:配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中。本发明可以提高SD卡直接内存存取的速度,并减少CPU的资源占用。

Description

SD卡的文件存取方法及装置
技术领域
本发明涉及数据传输控制领域,特别是涉及SD卡的文件读取方法、SD卡的文件写入方法、SD卡的文件读取装置及SD卡的文件写入装置。
背景技术
长期以来,以Flash Memory为存储体的SD卡(card)因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。
一般而言,SD卡采用FAT((File Allocation Table,文件分配表)系统对其存储的各种文件进行组织与管理,并将与文件相关的信息存储在FAT表中,以供日后存取文件时使用。FAT表是在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。
SD卡的文件存取通常采用DMA(直接内存存取)的方式实现,公知的是,一次DMA传输只能针对物理上连续存储的数据进行,然而在实际中,一个文件所对应的内存地址可能是不连续的(如经MMU映射获得的CPU内存地址),或者,在SD卡FAT表中一个文件对应的簇在物理上是不连续的,在这种情况下,只能通过多次DMA传输才能完成一次文件的存取过程。显然严重影响数据的存取效度,还由于一次DMA传输结束,就会通过中断的方式通知CPU,而多次传输就会多次中断通知,还严重占用了CPU的资源。
因而,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够提高SD卡直接内存存取的速度,并减少CPU的资源占用。
发明内容
本发明所要解决的技术问题是提供一种SD卡的文件存取机制,以提高SD卡直接内存存取的速度,并减少CPU的资源占用。
为了解决上述技术问题,本发明实施例公开了一种SD卡的文件写入方法,所述文件写入涉及从不连续的内存地址向SD卡的连续物理簇中写入文件数据的一次DMA传输过程,所述方法包括:
配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中。
优选的,所述文件具有结束标识,所述将文件从内存写入SD卡的步骤具体包括以下子步骤:
子步骤S11、从内存中首段文件数据的起始地址开始,读取相应长度的数据,自所述SD卡连续物理簇的起始位置开始写入,并标记下次写入的物理簇位置;
子步骤S12、从内存中下一段数据的起始地址开始,读取相应长度的数据,并自所述标记的物理簇位置开始写入,并标记下次写入的物理簇位置;
子步骤S13、判断是否读到文件的结束标识,若是,则执行子步骤S14;若否,则返回子步骤S12;
子步骤S14、通知CPU当次文件传输结束。
本发明实施例还公开了一种SD卡的文件读取方法,所述文件读取涉及从SD卡的连续物理簇向不连续的内存地址写入文件数据的一次DMA传输过程,所述方法包括:
配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中。
优选的,所述文件具有结束标识,所述将文件从SD卡写入内存的步骤具体包括以下子步骤:
子步骤S21、依据内存中首个地址段的信息,从SD卡连续物理簇的起始位置开始,提取相应长度的数据写入该首个地址段中,并标记下次提取的物理簇位置;
子步骤S22、依据内存中下一个地址段的信息,自所述标记的物理簇位置开始,提取相应长度的数据写入该下一个地址段中,并标记下次提取的物理簇位置;
子步骤S23、判断是否读到文件的结束标识,若是,则执行子步骤S24;若否,则返回子步骤S22;
子步骤S24、通知CPU当次文件传输结束。
本发明实施例还公开了一种SD卡的文件写入方法,所述文件写入涉及从连续内存地址向SD卡中不连续的物理簇组中写入文件数据的一次DMA传输过程,所述方法包括:
配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中。
优选的,所述文件具有结束标识,所述将文件从内存写入SD卡的步骤具体包括以下子步骤:
子步骤S31、依据SD卡中首组物理簇的簇数,从所述内存连续地址的起始地址开始,提取相应长度的数据写入该首组物理簇中,并标记下次提取的内存地址;
子步骤S32、依据SD卡中下一组物理簇的簇数,从所述标记的内存地址开始,提取相应长度的数据写入该下一组物理簇中,并标记下次提取的内存地址;
子步骤S33、判断是否读到文件的结束标识,若是,则执行子步骤S34;若否,则返回子步骤S32;
子步骤S34、通知CPU当次文件传输结束。
本发明实施例还公开了一种SD卡的文件读取方法,所述文件读取涉及从SD卡中不连续的物理簇组向连续的内存地址段写入文件数据的一次DMA传输过程,所述方法包括:
配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中。
优选的,所述文件具有结束标识,所述将文件从内存写入SD卡的步骤具体包括以下子步骤:
子步骤S41、从SD卡中首组物理簇的起始位置开始,读取相应长度的数据,自所述内存地址段的起始地址开始写入,并标记下次写入的内存地址;
子步骤S42、从SD卡中下一组物理簇的起始位置开始,读取相应长度的数据,自所述标记的内存地址开始写入,并标记下次写入的内存地址;
子步骤S43、判断是否读到文件的结束标识,若是,则执行子步骤S44;若否,则返回子步骤S42;
子步骤S44、通知CPU当次文件传输结束。
本发明实施例还公开了一种SD卡的文件写入装置,用于以DMA的方式从不连续的内存地址向SD卡的连续物理簇中一次写入文件数据,所述装置包括:
第一配置单元,用于配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
第一DMA控制器,用于依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中。
本发明实施例还公开了一种SD卡的文件读取装置,用于以DMA的方式从SD卡的连续物理簇向不连续的内存地址一次写入文件数据,所述装置包括:
第二配置单元,用于配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
第二DMA控制器,用于依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中。
本发明实施例还公开了一种SD卡的文件写入装置,用于以DMA的方式从连续内存地址向SD卡中不连续的物理簇组中一次写入文件数据,所述装置包括:
第三配置单元,用于配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
第三DMA控制器,用于依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中。
本发明实施例还公开了一种SD卡的文件读取装置,用于以DMA的方式从SD卡中不连续的物理簇组向连续的内存地址段一次写入文件数据,所述装置包括:
第四配置单元,用于配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
第四DMA控制器,用于依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中。
与现有技术相比,本发明具有以下优点:
本发明主要适用于所述SD卡的直接内存存取涉及一端为连续空间,另一端为不连续空间的情形,即从不连续的内存地址向SD卡的连续物理簇中读/写文件数据,或者,从连续内存地址向SD卡中不连续的物理簇组中读/写文件数据的一次DMA传输过程。本发明基于简单的DMA配置,将不连续的地址空间组织为可连续传输的DMA数据结构,通过一次DMA传输完成对文件读/写,从而提高了SD卡直接内存存取的速度,并由于无需多次中断通知CPU,进一步减少了CPU的资源占用。
附图说明
图1是FAT文件系统中数据区的链式数据存储结构的示意图;
图2是本发明的一种SD卡的文件写入方法实施例1的流程图;
图3是本发明的一种SD卡的文件读取方法实施例1的流程图;
图4是本发明的一种SD卡的文件写入方法实施例2的流程图;
图5是本发明的一种SD卡的文件读取方法实施例2的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为使本领域技术人员更好地理解本发明,以下简单介绍FAT系统。
FAT文件系统在实际的物理存储介质中的区域划分如下表所示,即一个实际、连续的物理存储介质通过FAT文件系统被分成不同区域,各个区域分别为:
  引导区(BOOT区) 文件分配表1区(FAT区) 文件分配表2区(备用) 根文件夹区 数据区(其它文件夹和所有文件数据区)
FAT文件系统对数据区的存储空间是按簇来进行划分和管理的,也就是说,簇是存储空间分配和回收的基本单位,参考图1所示的数据区的链式数据存储结构,即在FAT表11中记录了实际物理存储位置12的簇信息。通常,一个簇由物理上连续的n个512个字节组成。
在FAT文件系统中,当文件被删除并且在同一位置被写入新数据,它们的片段通常是分散的,即一个文件实际的物理存储位置并不一定是连续物理空间,而文件数据区的存储是通过FAT的链式结构来决定的,即每个簇在实际的物理存储中是连续的。
例如,假设当前的FAT文件系统的每个簇由64个sector组成,每个sector是512字节,那么每个簇的容量就是32K,3.2M的文件就需要100个簇组成,假设这100个簇的空间划分情况如下表所示:
  文件分配表 目录 A文件 B文件 A文件 B文件 A文件
  第0簇   第1簇   第2-11簇  第12-64簇  第65-88簇  第89-92簇  第93-99簇
即A文件分布在第2-11、65-88及93-99簇;B文件分布在第12-64、89-92簇;在这种情况下,当需要进行A文件的直接内存存取时,则需要发起三次DMA操作才能得以完成,具体而言,需要首先配置第2-11簇当前对应的源地址、目标地址及传输长度,然后进行第一次DMA传输,传输完后通过中断操作通知CPU;再配置第65-88簇当前对应的源地址、目标地址及传输长度,然后进行第二次DMA传输,传输完后再通过中断操作通知CPU;再配置第93-99簇当前对应的源地址、目标地址及传输长度,然后进行第三次DMA传输,传输完后再通过中断操作通知CPU;当需要进行B文件的直接内存存取时,同样需要发起两次DMA操作才能得以完成。因而导致存取效度低下,严重占用CPU资源的问题。
除了上述FAT系统中文件存储在不连续的物理空间的情形,在实际中,还有可能出现的一种情形是,文件的内存地址是不连续的,这种情形在MMU(Memory Manage Unit,存储器管理器)从CPU得到逻辑地址并转换为内存的实际物理地址时常常出现。假设C文件分布在内存地址0x0000000起始的512字节,以及,0x1000000起始的1024字节的两个地址段中,在这种情况下,即使与SD卡中一段连续物理簇空间进行C文件存取,也需要发起两次DMA操作才能得以完成。即第一次进行内存地址0x0000000起始的512字节数据的DMA传输,传输完后通过中断操作通知CPU;然后再进行内存地址0x1000000起始的1024字节数据的DMA传输,传输完后再通过中断操作通知CPU;因而同样导致存取效度低下,严重占用CPU资源的问题。
本发明正是针对上述问题提出的,一种SD卡的直接内存存取机制。本发明主要适用于所述SD卡的直接内存存取涉及一端为连续空间,另一端为不连续空间的情形,即从不连续的内存地址向SD卡的连续物理簇中读/写文件数据,或者,从连续内存地址向SD卡中不连续的物理簇组中读/写文件数据的一次DMA传输过程。本发明实施例的核心构思之一在于,基于简单的DMA配置,将不连续的地址空间组织为可连续传输的DMA数据链表结构,从而通过一次DMA传输操作,完成现有技术中需要多次DMA传输操作才能完成的文件读/写过程。以下将通过从不连续的内存地址向SD卡的连续物理簇中写入文件数据,从SD卡的连续物理簇向不连续的内存地址写入文件数据,从连续内存地址向SD卡中不连续的物理簇组中写入文件数据,以及,从SD卡中不连续的物理簇组向连续的内存地址段写入文件数据四个实施例来具体说明本发明。
方法实施例1:
参考图2所示的一种SD卡的文件写入方法实施例1的流程图,所述文件写入涉及从不连续的内存地址向SD卡的连续物理簇中写入文件数据的一次DMA传输过程,本实施例具体可以包括以下步骤:
步骤201、配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
步骤202、依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中。
在实际中,所述文件具有结束标识,在本发明的一种优选实施例中,所述步骤202具体可以包括以下子步骤:
子步骤S11、从内存中首段文件数据的起始地址开始,读取相应长度的数据,自所述SD卡连续物理簇的起始位置开始写入,并标记下次写入的物理簇位置;
子步骤S12、从内存中下一段数据的起始地址开始,读取相应长度的数据,并自所述标记的物理簇位置开始写入,并标记下次写入的物理簇位置;
子步骤S13、判断是否读到文件的结束标识,若是,则执行子步骤S14;若否,则返回子步骤S12;
子步骤S14、通知CPU当次文件读取结束。
例如,假设当前需要将存在于内存中大小为3.2M的D文件写入SD卡中,在内存中,D文件的数据包括:地址0x0000000起始长度为1M字节的数据、0x1000000起始长度为0.5M字节的数据、0x4320000起始长度为1.7M字节的数据。并且,当前SD卡的FAT文件系统的每个簇由64个sector组成,每个sector是512字节,对于所述3.2M的D文件,从FAT表中找到可用的100个连续簇号为第8-108簇,从而将D文件写入第8-108簇中。
通过配置上述内存中的多段地址和长度,以及,SD卡的连续物理簇信息后(既可由上述一段起始簇至目标簇表示,也可由起始簇和长度表示),发起一次DMA操作,所进行的数据传输过程为:
首先,从0x0000000读取该1M字节的数据,写入SD卡的第8-40簇,并标记当前写入的簇信息;
然后,从0x1000000读取该0.5M字节的数据,写入SD卡的第41-57簇,并标记当前写入的簇信息;
再者,从0x4320000读取该1.7M字节的数据,获得文件结束标识,写入SD卡的第58-108簇,写完之后以中断的方式通知CPU本次传输结束。
一般而言,在向SD卡写入文件的过程中,会先在FAT根文件区中创建这个文件的属性信息,然后从FAT表中找到可用的簇号,把起始簇号存入FAT根文件区中,根据文件大小指定存储位置,并在相应的簇号中进行标记,直到文件使用的结束簇。
需要说明的是,在本发明实施例中,所标记的下次写入的物理簇位置可以是当前结束写入的簇位置,也可以是下次开始写入的簇位置,本领域技术人员依据实际情况相应采用均可,本发明对此不作限制。
方法实施例2:
参考图3所示的一种SD卡的文件读取方法实施例1的流程图,所述文件读取涉及从SD卡的连续物理簇向不连续的内存地址写入文件数据的一次DMA传输过程,本实施例具体可以包括以下步骤:
步骤301、配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
步骤302、依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中。
在实际中,所述文件具有结束标识,在本发明的一种优选实施例中,所述步骤302具体可以包括以下子步骤:
子步骤S21、依据内存中首个地址段的信息,从SD卡连续物理簇的起始位置开始,提取相应长度的数据写入该首个地址段中,并标记下次提取的物理簇位置;
子步骤S22、依据内存中下一个地址段的信息,自所述标记的物理簇位置开始,提取相应长度的数据写入该下一个地址段中,并标记下次提取的物理簇位置;
子步骤S23、判断是否读到文件的结束标识,若是,则执行子步骤S24;若否,则返回子步骤S22;
子步骤S24、通知CPU当次文件传输结束。
例如,假设当前需要将SD卡第8-108簇中大小为3.2M的D文件写入内存中,但内存中没有完整的3.2M的连续地址空间,只有一段起始地址为0x0000000长度为1M字节的地址段1,以及,一段起始地址为0x1000000长度为0.5M字节的地址段2,以及,一段起始地址为0x4320000长度为1.7M字节的地址段3。
通过配置上述SD卡的连续物理簇信息,以及,内存中的多段地址信息(既可由上述起始地址和长度表示,也可直接由一段起始至目标的地址信息表示),发起一次DMA操作,所进行的数据传输过程为:
首先,读取SD卡的第8-40簇中1M字节的数据,从0x0000000开始写入,并标记下次提取的簇位置;
然后,读取SD卡的第41-57簇0.5M字节的数据,从0x1000000gavc开始写入,并标记下次提取的簇位置;
再者,读取SD卡的第58-108簇该1.7M字节的数据,获得文件结束标识,从0x4320000开始写入,写完之后以中断的方式通知CPU本次传输结束。
一般而言,当用户需要读取SD卡中的一个文件,会到FAT根文件区中找到文件的起始簇。FAT根文件区记载了该文件的名称、属性以及大小等。FA根文件区中的文件起始簇是一个指针,根据这个簇号能够定位该文件在FAT表中的位置,找到文件所使用的簇,并将这些簇中存储的数据写入内存,如果是多个簇,则每个簇再指向下一个,形成一个FAT链,直到文件所使用的最后一个簇。
需要说明的是,在本发明实施例中,所标记的下次提取的物理簇位置可以是当前结束提取的簇位置,也可以是下次开始提取的簇位置,本领域技术人员依据实际情况相应采用均可,本发明对此不作限制。
方法实施例3:
参考图4所示的一种SD卡的文件写入方法实施例2的流程图,所述文件写入涉及从连续内存地址向SD卡中不连续的物理簇组中写入文件数据的一次DMA传输过程,本实施例具体可以包括以下步骤:
步骤401、配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
步骤402、依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中。
在实际中,所述文件具有结束标识,在本发明的一种优选实施例中,所述步骤402具体可以包括以下子步骤:
子步骤S31、依据SD卡中首组物理簇的簇数,从所述内存连续地址的起始地址开始,提取相应长度的数据写入该首组物理簇中,并标记下次提取的内存地址;
子步骤S32、依据SD卡中下一组物理簇的簇数,从所述标记的内存地址开始,提取相应长度的数据写入该下一组物理簇中,并标记下次提取的内存地址;
子步骤S33、判断是否读到文件的结束标识,若是,则执行子步骤S34;若否,则返回子步骤S32;
子步骤S34、通知CPU当次文件传输结束。
例如,假设当时需要将内存中自地址0x4320000起始存储的3.2M的D文件写入SD卡中,当前SD卡的FAT文件系统的每个簇由64个sector组成,每个sector是512字节,对于一个3.2M的D文件,需要100个簇的空间,但是当前SD卡中没有100簇的连续空间,而只在第25簇起始有连续20簇的空间(簇组1),在第125簇起始有连续30簇的空间(簇组2),在第325簇起始有连续10簇的空间(簇组3),以及,在第525簇起始有连续40簇的空间(簇组4)。在这种情况下,可以配置该D文件的内存地址空间及多个簇组的信息(既可由上述起始簇和长度表示,也可直接由一段起始簇至目标簇表示),然后开始一次DMA传输操作,具体过程为:
首先,从内存起始地址0x4320000开始提取连续20簇大小的数据,写入簇组1中(第25-45簇),并标记下次提取的内存地址;
然后,从上一次标记的内存地址开始提取连续30簇大小的数据,写入簇组2中(第125-155簇),并标记下次提取的内存地址;
再者,从上一次标记的内存地址开始提取连续10簇大小的数据,写入簇组3中(第325-335簇),并标记下次提取的内存地址;
最后,从上一次标记的内存地址开始提取连续40簇大小的数据,此时读取结束标记,然后写入簇组4中(第第525-565簇),并在写入后通知CPU当次文件传输结束。
方法实施例4:
参考图5所示的一种SD卡的文件读取方法实施例2的流程图,所述文件读取涉及从SD卡中不连续的物理簇组向连续的内存地址段写入文件数据的一次DMA传输过程,本实施例具体可以包括以下步骤:
步骤501、配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
步骤502、依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中。
在实际中,所述文件具有结束标识,在本发明的一种优选实施例中,所述步骤502具体可以包括以下子步骤:
子步骤S41、从SD卡中首组物理簇的起始位置开始,读取相应长度的数据,自所述内存地址段的起始地址开始写入,并标记下次写入的内存地址;
子步骤S42、从SD卡中下一组物理簇的起始位置开始,读取相应长度的数据,自所述标记的内存地址开始写入,并标记下次写入的内存地址;
子步骤S43、判断是否读到文件的结束标识,若是,则执行子步骤S44;若否,则返回子步骤S42;
子步骤S44、通知CPU当次文件传输结束。
例如,假设当前SD卡的FAT文件系统的每个簇由64个sector组成,每个sector是512字节,对于一个3.2M的D文件,需要占用100个簇,这100个簇在SD卡中的位置如下表所示:
即该D文件由第25簇起始的连续20簇组成的簇组1、由第125簇起始组成的连续30簇组成的簇组2、由第325簇起始组成的连续10簇组成的簇组3、以及,由第525簇起始组成的连续40簇组成的簇组4组成。
若将D文件写入内存,且内存中自地址0x4320000起始,有一段大于或等于3.2M地址空间,则配置该D文件的多个簇空间信息及内存地址段信息(既可由上述起始地址和长度表示,也可直接由一段起始至目标的地址信息表示),然后开始一次DMA传输操作,具体过程为:
首先,从SD卡中簇组1开始读取连续20簇的数据,从内存中自地址0x4320000开始写入相应大小的数据,并标记下次写入的内存地址;
然后,从SD卡中簇组2开始读取连续30簇的数据,从上一次标记的内存地址开始写入相应大小的数据,写入后再标记下次写入的内存地址;
再者,从SD卡中簇组3开始读取连续10簇的数据,从上一次标记的内存地址开始写入相应大小的数据,写入后再标记下次写入的内存地址;
最后,从SD卡中簇组4开始读取连续40簇的数据,此时会读到结束标识,从上一次标记的内存地址开始写入相应大小的数据,写入后通知CPU当次文件传输结束。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
对应于上述方法实施例,本发明还提供了四种实现SD卡文件存取的装置实施例,具体包括:
装置实施例1:
一种SD卡的文件写入装置,用于以DMA的方式从不连续的内存地址向SD卡的连续物理簇中一次写入文件数据,本实施例具体可以包括:
第一配置单元,用于配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
第一DMA控制器,用于依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中。
装置实施例2:
一种SD卡的文件读取装置,用于以DMA的方式从SD卡的连续物理簇向不连续的内存地址一次写入文件数据,本实施例具体可以包括:
第二配置单元,用于配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
第二DMA控制器,用于依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中。
装置实施例3:
一种SD卡的文件写入装置,用于以DMA的方式从连续内存地址向SD卡中不连续的物理簇组中一次写入文件数据。本实施例具体可以包括:
第三配置单元,用于配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
第三DMA控制器,用于依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中。
装置实施例4:
一种SD卡的文件读取装置,用于以DMA的方式从SD卡中不连续的物理簇组向连续的内存地址段一次写入文件数据,本实施例具体可以包括:
第四配置单元,用于配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
第四DMA控制器,用于依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中。
在具体实现中,DMA传输通常是在DMA控制器(DMAC)的控制下完成的。DMAC可以从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和SD卡之间进行。在DMAC的内部,有若干个寄存器:地址寄存器,存放DMA传输时存放数据的存储单元地址;字节计数器,存放DMA传输的字节数;控制寄存器,存放由CPU设定的DMA传输方式,控制命令等;状态寄存器:存放DMAC当前的状态,包括有无DMA请求,是否结束等。当SD卡要求存取一批数据时,由DMAC发一个信号给CPU,CPU获得该信号后,让出总线的控制权,这时DMA控制器就获得总线控制权,之后,开始进行数据传送;一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。为了保证CPU与DMA在总线上进行数据的有效传输,无论采用哪种DMA的传输方式,DMA都需要在数据传输完成后向CPU归还总线控制权。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者系统所固有的要素。
以上对本发明所提供的一种SD卡的文件存取方法及一种SD卡的文件存取装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种SD卡的文件写入方法,其特征在于,所述文件写入涉及从不连续的内存地址向SD卡的连续物理簇中写入文件数据的一次DMA传输过程,所述方法包括:
配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中;
其中,所述文件具有结束标识,所述依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中的步骤具体包括以下子步骤:
子步骤S11、从内存中首段文件数据的起始地址开始,读取相应长度的数据,自所述SD卡连续物理簇的起始位置开始写入,并标记下次写入的物理簇位置;
子步骤S12、从内存中下一段数据的起始地址开始,读取相应长度的数据,并自所述标记的物理簇位置开始写入,并标记下次写入的物理簇位置;
子步骤S13、判断是否读到文件的结束标识,若是,则执行子步骤S14;若否,则返回子步骤S12;
子步骤S14、通知CPU当次文件传输结束。
2.一种SD卡的文件读取方法,其特征在于,所述文件读取涉及从SD卡的连续物理簇向不连续的内存地址写入文件数据的一次DMA传输过程,所述方法包括:
配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中;
其中,所述文件具有结束标识,所述依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中的步骤具体包括以下子步骤:
子步骤S21、依据内存中首个地址段的信息,从SD卡连续物理簇的起始位置开始,提取相应长度的数据写入该首个地址段中,并标记下次提取的物理簇位置;
子步骤S22、依据内存中下一个地址段的信息,自所述标记的物理簇位置开始,提取相应长度的数据写入该下一个地址段中,并标记下次提取的物理簇位置;
子步骤S23、判断是否读到文件的结束标识,若是,则执行子步骤S24;若否,则返回子步骤S22;
子步骤S24、通知CPU当次文件传输结束。
3.一种SD卡的文件写入方法,其特征在于,所述文件写入涉及从连续内存地址向SD卡中不连续的物理簇组中写入文件数据的一次DMA传输过程,所述方法包括:
配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中;
其中,所述文件具有结束标识,所述依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中的步骤具体包括以下子步骤:
子步骤S31、依据SD卡中首组物理簇的簇数,从所述内存连续地址的起始地址开始,提取相应长度的数据写入该首组物理簇中,并标记下次提取的内存地址;
子步骤S32、依据SD卡中下一组物理簇的簇数,从所述标记的内存地址开始,提取相应长度的数据写入该下一组物理簇中,并标记下次提取的内存地址;
子步骤S33、判断是否读到文件的结束标识,若是,则执行子步骤S34;若否,则返回子步骤S32;
子步骤S34、通知CPU当次文件传输结束。
4.一种SD卡的文件读取方法,其特征在于,所述文件读取涉及从SD卡中不连续的物理簇组向连续的内存地址段写入文件数据的一次DMA传输过程,所述方法包括:
配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中;
其中,所述文件具有结束标识,所述依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中的步骤具体包括以下子步骤:
子步骤S41、从SD卡中首组物理簇的起始位置开始,读取相应长度的数据,自所述内存地址段的起始地址开始写入,并标记下次写入的内存地址;
子步骤S42、从SD卡中下一组物理簇的起始位置开始,读取相应长度的数据,自所述标记的内存地址开始写入,并标记下次写入的内存地址;
子步骤S43、判断是否读到文件的结束标识,若是,则执行子步骤S44;若否,则返回子步骤S42;
子步骤S44、通知CPU当次文件传输结束。
5.一种SD卡的文件写入装置,其特征在于,用于以DMA的方式从不连续的内存地址向SD卡的连续物理簇中一次写入文件数据,所述装置包括:
第一配置单元,用于配置第一文件传输信息,所述第一文件传输信息包括:内存中多段文件数据的起始地址及数据长度信息,以及,SD卡中连续物理簇的信息;
第一DMA控制器,用于依次从所述内存的多段起始地址读取相应长度的数据,连续写入所述SD卡的连续物理簇中;
其中,所述文件具有结束标识,所述第一DMA控制器具体由以下方式实现:
子步骤S11、从内存中首段文件数据的起始地址开始,读取相应长度的数据,自所述SD卡连续物理簇的起始位置开始写入,并标记下次写入的物理簇位置;
子步骤S12、从内存中下一段数据的起始地址开始,读取相应长度的数据,并自所述标记的物理簇位置开始写入,并标记下次写入的物理簇位置;
子步骤S13、判断是否读到文件的结束标识,若是,则执行子步骤S14;若否,则返回子步骤S12;
子步骤S14、通知CPU当次文件传输结束。
6.一种SD卡的文件读取装置,其特征在于,用于以DMA的方式从SD卡的连续物理簇向不连续的内存地址一次写入文件数据,所述装置包括:
第二配置单元,用于配置第二文件传输信息,所述第二文件传输信息包括:SD卡中连续物理簇的信息,以及,内存中的多段地址信息;
第二DMA控制器,用于依次提取所述SD卡连续物理簇中相应长度的数据,分别写入所述内存中对应的地址段中;
其中,所述文件具有结束标识,所述第二DMA控制器具体由以下方式实现:
子步骤S21、依据内存中首个地址段的信息,从SD卡连续物理簇的起始位置开始,提取相应长度的数据写入该首个地址段中,并标记下次提取的物理簇位置;
子步骤S22、依据内存中下一个地址段的信息,自所述标记的物理簇位置开始,提取相应长度的数据写入该下一个地址段中,并标记下次提取的物理簇位置;
子步骤S23、判断是否读到文件的结束标识,若是,则执行子步骤S24;若否,则返回子步骤S22;
子步骤S24、通知CPU当次文件传输结束。
7.一种SD卡的文件写入装置,其特征在于,用于以DMA的方式从连续内存地址向SD卡中不连续的物理簇组中一次写入文件数据,所述装置包括:
第三配置单元,用于配置第三文件传输信息,所述第三文件传输信息包括:内存中的连续地址段信息,以及,SD卡中多个物理簇组的信息;
第三DMA控制器,用于依次提取所述内存的连续地址段中相应长度的数据,分别写入所述SD卡中对应的物理簇组中;
其中,所述文件具有结束标识,所述第三DMA控制器具体由以下方式实现:
子步骤S31、依据SD卡中首组物理簇的簇数,从所述内存连续地址的起始地址开始,提取相应长度的数据写入该首组物理簇中,并标记下次提取的内存地址;
子步骤S32、依据SD卡中下一组物理簇的簇数,从所述标记的内存地址开始,提取相应长度的数据写入该下一组物理簇中,并标记下次提取的内存地址;
子步骤S33、判断是否读到文件的结束标识,若是,则执行子步骤S34;若否,则返回子步骤S32;
子步骤S34、通知CPU当次文件传输结束。
8.一种SD卡的文件读取装置,其特征在于,用于以DMA的方式从SD卡中不连续的物理簇组向连续的内存地址段一次写入文件数据,所述装置包括:
第四配置单元,用于配置第四文件传输信息,所述第四文件传输信息包括:SD卡中多组物理簇的起始位置及长度信息,以及,内存地址段的信息;
第四DMA控制器,用于依次从所述SD卡多组物理簇的起始位置读取相应长度的数据,连续写入所述内存地址段中;
其中,所述文件具有结束标识,所述第四DMA控制器具体由以下方式实现:
子步骤S41、从SD卡中首组物理簇的起始位置开始,读取相应长度的数据,自所述内存地址段的起始地址开始写入,并标记下次写入的内存地址;
子步骤S42、从SD卡中下一组物理簇的起始位置开始,读取相应长度的数据,自所述标记的内存地址开始写入,并标记下次写入的内存地址;
子步骤S43、判断是否读到文件的结束标识,若是,则执行子步骤S44;若否,则返回子步骤S42;
子步骤S44、通知CPU当次文件传输结束。
CN200910242482.0A 2009-12-15 2009-12-15 Sd卡的文件存取方法及装置 Active CN101876956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910242482.0A CN101876956B (zh) 2009-12-15 2009-12-15 Sd卡的文件存取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910242482.0A CN101876956B (zh) 2009-12-15 2009-12-15 Sd卡的文件存取方法及装置

Publications (2)

Publication Number Publication Date
CN101876956A CN101876956A (zh) 2010-11-03
CN101876956B true CN101876956B (zh) 2015-05-06

Family

ID=43019514

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910242482.0A Active CN101876956B (zh) 2009-12-15 2009-12-15 Sd卡的文件存取方法及装置

Country Status (1)

Country Link
CN (1) CN101876956B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176839B (zh) * 2011-12-26 2017-05-24 艾默生网络能源有限公司 Sd卡数据的传输/调度方法、装置及数据采集系统
CN105046296B (zh) * 2015-06-30 2018-06-22 上海玮舟微电子科技有限公司 安全数码卡的数据传输方法及装置
CN108345551B (zh) * 2017-01-23 2020-05-12 杭州海康威视数字技术股份有限公司 一种存储数据的方法及装置
CN106843775A (zh) * 2017-03-06 2017-06-13 郑州云海信息技术有限公司 一种数据写入方法及系统
KR20180109139A (ko) * 2017-03-27 2018-10-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN109697019B (zh) * 2017-10-20 2022-12-27 北京京东尚科信息技术有限公司 基于fat文件系统的数据写入的方法和系统
CN109558072B (zh) * 2018-10-10 2022-03-25 建荣半导体(深圳)有限公司 音频播放芯片的存储空间扩展方法、系统、音频播放芯片及存储装置
CN114756490A (zh) * 2022-03-21 2022-07-15 奥比中光科技集团股份有限公司 一种dma数据搬运方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622058A (zh) * 2004-12-31 2005-06-01 北京中星微电子有限公司 一种写存储器的实现方法
CN1794214A (zh) * 2005-12-22 2006-06-28 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622058A (zh) * 2004-12-31 2005-06-01 北京中星微电子有限公司 一种写存储器的实现方法
CN1794214A (zh) * 2005-12-22 2006-06-28 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置

Also Published As

Publication number Publication date
CN101876956A (zh) 2010-11-03

Similar Documents

Publication Publication Date Title
CN101876956B (zh) Sd卡的文件存取方法及装置
CN102301349B (zh) 访问存储控制器控制的存储芯片中根据列条带化的行数据
CN102799534B (zh) 基于固态存储介质的存储系统及方法、冷热数据识别方法
CN103034562A (zh) 闪存介质控制器中的元数据处理
CN107239526B (zh) 文件系统实现方法、碎片整理方法、操作位置定位方法
US20130166818A1 (en) Memory logical defragmentation during garbage collection
CN103631536B (zh) 一种利用ssd的无效数据优化raid5/6写性能的方法
CN103197898A (zh) 存储控制装置、存储装置和控制存储控制装置的控制方法
CN104346357A (zh) 一种嵌入式终端的文件存取方法及系统
CN105335098A (zh) 一种基于存储级内存的日志文件系统性能提高方法
CN103092782A (zh) 用于闪存器件的闪存控制器硬件架构
CN101533408A (zh) 一种海量数据的处理方法及处理装置
CN105612518A (zh) 用于自主存储器搜索的方法及系统
CN101645043B (zh) 写数据的方法、读数据的方法及存储设备
US20110004720A1 (en) Method and apparatus for performing full range random writing on a non-volatile memory
US20080120456A1 (en) Method for flash memory data management
CN103608866A (zh) 用于闪存存储器的数据擦除方法及装置
CN103838853A (zh) 一种基于不同存储介质的混合文件系统
TWI459202B (zh) 資料處理方法、記憶體控制器與記憶體儲存裝置
WO2017213908A1 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN103049224A (zh) 将数据导入物理磁带的方法、装置和系统
US11630595B2 (en) Methods and systems of efficiently storing data
CN102541755A (zh) 闪存存储器及其接收数据的方法
CN111142780A (zh) 一种大文件存储文件系统以及大文件处理方法
CN103309619A (zh) 一种闪存数据存储方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170524

Address after: 030032 Shanxi province Taiyuan Dachang economic and Technological Development Zone g.credit Industrial Park Road No. 13

Patentee after: SHANXI ZHONGTIANXIN SCIENCE AND TECHNOLOGY CO.,LTD.

Address before: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Patentee before: VIMICRO Corp.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 030000 Zhongxing Technology Industrial Park, No.13, Dachang South Road, Taiyuan Tanghuai Park, Shanxi comprehensive reform demonstration zone, Taiyuan City, Shanxi Province

Patentee after: Zhongxing Intelligent System Technology Co.,Ltd.

Address before: 030000 zhongtianxin Industrial Park, No.13, Dachang South Road, Shanxi demonstration zone, Taiyuan City, Shanxi Province

Patentee before: Shanxi zhongtianxin Technology Co.,Ltd.

Address after: 030000 zhongtianxin Industrial Park, No.13, Dachang South Road, Shanxi demonstration zone, Taiyuan City, Shanxi Province

Patentee after: Shanxi zhongtianxin Technology Co.,Ltd.

Address before: 030032 Shanxi province Taiyuan Dachang economic and Technological Development Zone g.credit Industrial Park Road No. 13

Patentee before: SHANXI ZHONGTIANXIN SCIENCE AND TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address