一种数据存储和读取的方法及字符型存储器的制作方法

文档序号:6384572阅读:204来源:国知局
专利名称:一种数据存储和读取的方法及字符型存储器的制作方法
技术领域
本发明涉及通信电子技术领域,尤其涉及一种数据存储和读取的方法及字符型存储器。
背景技术
随着科学技术的快速发展,U盘、键盘鼠标、移动硬盘、摄像头等外接设备已经深入到人们的日常生活中。而这些外接设备通常与PC机相连,并且经常需要实时的向PC机输入大量数据,从而将数据保存到与该PC机相连的存储设备,这一过程需要的存储结构如图1所示,传统嵌入式设备的USB传输技术采用Linux内核提供的块设备层读写接口以及USB驱动器;其中读写接口包括vfs_read()接口和vfs_write O接口。当待存储数据从PC机传入设备的USB端时,调用VfS_Write()接口操作块设备层进行数据的写入。具体的数据存储过程如下
当PC机接收到外接设备传送的待存储数据时,PC机通过USB总线将数据写入设备,在设备的USB驱动器端调用vfs_write()接口将待存储数据发送到虚拟文件系统(VirtualFile System,VFS)层和块设备层,经过VFS层和块设备层的相应处理后,存储设备驱动器将处理后的待存储数据写入存储设备中。其中VFS层用于实现数据的缓存和预取;块设备层用于实现块整合等过程。而在这一数据存储过程中,块设备的读写本身就是一个十分复杂的过程,其中包括为了合并上层零碎细小的读写请求而进行的预读与整合写入操作,然后将处理好的请求传向具体的块设备驱动来完成后续的数据存储操作。本发明人发现现有技术中当使用PC机将外接设备的数据存入存储器的过程中存在如下缺陷
第一,写速度慢;待存储数据需要通过延缓写入的方式,经VfS_Write()接口写入块设备层,块整合等过程(而这些工作在USB传输数据前PC端已经处理完成),经历多个过程与memcpy且不能与USB传输并行进行,因此速度很慢;
第二,占用大量内存;由于需要进行延缓写入与块整合等步骤,因此需要大量的内存,并且短时间内对内存的调用频率很大,因此会占用大量的内存,造成其它进程申请内存失败和导致系统运行变得很不流畅。

发明内容
本发明实施例提供一种数据存储和读取的方法及字符型存储器,用于解决现有技术中当使用PC机将外接设备的数据存入存储器的过程中写速度慢以及占用大量内存的问题。一种存储数据的方法,所述方法包括
字符型存储器根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据存入自身;
根据预先设置的第二存储方式,将自身保存的所述待存储数据通过SD总线写入存储设备中。一种数据读取方法,所述方法包括
字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。—种用于上述方法的字符型存储器,所述字符型存储器包括
第一执行单元,用于根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据进行存储;
第二执行单元,用于根据预先设置的第二存储方式,将所述待存储数据通过SD总线写入存储设备中。一种用于上述方法的字符型存储器,所述字符型存储器包括
读取单元,用于从存储设备中读取已存储的、且与上一次读取到的信息量相等的数
据;
发送单元,用于将所述读取单元读取到的数据发送给USB驱动器。可见,使用本发明实施例提供的存储方法时字符型存储器可根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据直接存入自身的相应单元中;根据预先设置的第二存储方式,将自身保存的待存储数据通过SD总线写入存储设备中。该过程避免了现有技术中的写入块设备层,块整合等过程,因此在存储过程中可大大提高存储速度。并且由于不需要进行延缓写入与块整合等步骤,因此不会占用大量的内存。另外,本发明还提供一种数据读取方法,该方法中字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。可见,在本发明实施例提供的读取方法中可通过预读取的方式预先从存储设备读取数据,这一过程并行了读取过程与USB传输数据的过程,因此可大大提高读取速度。


为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为现有技术中存储数据过程需要的存储结构 图2为本发明实施例提供的数据读取方法流程 图3为本发明实施例一提供的一种数据读取方法流程 图4为本发明实施例提供的用于实施例一中的字符型存储器的结构 图5为本发明实施例提供的用于实施例二中的字符型存储器的结构图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。使用本发明实施例提供的存储方法时字符型存储器可根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据直接存入自身的相应单元中;根据预先设置的第二存储方式,将自身保存的待存储数据通过SD总线写入存储设备中。该过程避免了现有技术中的写入块设备层,块整合等过程,因此在存储过程中可大大提高存储速度。并且由于不需要进行延缓写入与块整合等步骤,因此不会占用大量的内存。本发明中涉及的字符型存储器的英文简写为Char SD,如图2所示具体过程如下
步骤21,字符型存储器根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据存入自身;
步骤22,根据预先设置的第二存储方式,将自身保存的所述待存储数据通过SD总线写入存储设备中。具体的,字符型存储器中可包括一个或多个缓存器,当需要进行存储操作、同时又存在多个空的缓存器时步骤21中的第一存储方式中包括判断是否存在一个或多个空的缓存器;其中,将从USB驱动器处接收到的待存储数据存入自身包括
当仅存在一个空的缓存器时,将待存储数据存入空的缓存器中;并继续进行存储接收到的待存储数据的操作;并继续进行存储接收到的待存储数据的操作;
当存在多个空的缓存器时,将所述待存储数据存入其中一个空的缓存器中,选择这一空的缓存器的原则可遵循随机选择或者按序选择等方式;并继续执行存储接收到的待存储数据的操作;
上述并继续进行存储接收到的待存储数据的操作包括如果有新的待存储数据需要存入到缓存器中时,继续进行这一判断步骤,并根据判断结果确定是否存储,存储到哪一个缓存器中。在步骤22中,由于最终需要通过字符型存储器将待带存储数据从自身的缓存器中存入存储设备中,因此,第二存储方式包括判断是否存在一个或多个非空的缓存器,即需要将非空缓存器中的待存储数据存入存储设备中,此时,将自身保存的所述待存储数据通过SD总线写入存储设备中包括
当存在一个非空的缓存器时,将该非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作;
当存在多个非空的缓存器时,按照预先设置的选择方式选择一个非空的缓存器,并将选中的非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作。其中,预先设置的选择方式为
按照保存待存储数据的顺序,将最先保存待存储数据的非空的缓存器作为选中的非空的缓存器;或者也可随机选择进行存储。另外,本发明还提供一种数据读取方法,该方法中字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。可见,在本发明实施例提供的读取方法中可通过预读取的方式预先从存储设备读取数据,这一过程并行了读取过程与USB传输数据的过程,因此可大大提高读取速度。以下以具体实施例进行介绍
实施例一
本发明实施例一提供一种存储数据的方法,用于将外接设备上的数据通过字符型存储器CharSD快速的存入存储设备,如图3所示具体过程如下
步骤31,外接设备将需要进行存储的待存储数据发送给PC机; 其中待存储数据不受类型、长度等限制;为了方便描述本步骤中应当是向PC机发送多个待存储数据;
步骤32,PC机将接收到的待存储数据通过USB驱动器发送给CharSD ;
步骤33,CharSD根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据存入自身;
具体的CharSD中包括一个或多个用于存储待存储数据的缓存器;通过MMC卡/SD卡控制器(MMC/SD Card Controller, MSC)控制CharSD直接将待存储数据从USB端的buffer写入空的缓存器,这一写入过程通过乒乓存储Ping-Pong Buffer来实现,既第一存储方式步骤34 ;
步骤34,判断是否存在一个或多个空的缓存器;如果存在一个空的缓存器,执行步骤35 ;如果存在多个空的缓存器,执行步骤36 ;
步骤35,当存在一个空的缓存器时,将所述待存储数据存入空的缓存器中;并继续进行存储接收到的待存储数据的操作,既步骤32至步骤34 ;
步骤36,当存在多个空的缓存器时,将所述待存储数据存入其中一个空的缓存器中;并继续执行存储接收到的待存储数据的操作;
具体的,本步骤中可随机从多个空的缓存器中选择出一个;或者按照预先设置的顺序进行选择;
当不存在任何一个空的缓存器时,向写进程发出休眠信号使写进程进入休眠状态,所述写进程为向存储设备存储数据的过程。当存在一个空的缓存器时,向写进程发送唤醒信号,使写进程处于唤醒状态,即可对存储设备进行存储操作。具体的,步骤35或步骤36的过程可由CharSD的一个写线程控制完成;
根据预先设置的第二存储方式,将自身保存的所述待存储数据通过SD总线写入存储设备中;第二存储方式需在上述步骤后按序进行如下步骤
步骤37,判断是否存在一个或多个非空的缓存器;如果存在一个非空的缓存器,则进行步骤38 ;如果存在多个非空的缓存器,则进行步骤39 ;
步骤38,当存在一个非空的缓存器时,将非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作,当写操作完成时,标记此缓存器为空,并唤醒写等待进程;
步骤39,当存在多个非空的缓存器时,按照预先设置的选择方式选择一个非空的缓存器,并将选中的非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作,即步骤37,同样地,当写操作完成时,标记此缓存器为空,并唤醒写等待进程;
具体的,步骤38或步骤39可由CharSD的一个读线程控制完成;
具体的,预先设置的选择方式为按照保存待存储数据的顺序,将最先保存待存储数据的非空的缓存器作为选中的非空的缓存器。较佳的,CharSD中缓存器的个数最好为2个。实施例二
本发明实施例二提供一种数据读取方法,具体的该方法包括
字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器,至此,此次读取的任务完成,在传送给USB启动器后继续开始下一次的预读(这次的预读并行了 USB传输的过程),当下一次读请求发出时继续此过程,即本实施例中通过预读取的方式,预先读取存储设备中的数据。并行了读卡的过程与USB传输的过程,大大提高了读取速度。如图4所示,本发明实施例提供一种用于实施例一中的字符型存储器,所述字符型存储器包括
第一执行单元,用于根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据进行存储;
第二执行单元46,用于根据预先设置的第二存储方式,将所述待存储数据通过SD总线写入存储设备中。所述字符型存储器还包括一个或多个缓存器43,以及
第一判断单元41,用于判断所述字符型存储器中是否存在一个或多个空的缓存器43 ;第一执行单元具体用于,当所述第一判断单元41确定存在一个空的缓存器43时,将所述待存储数据存入空的缓存器43中;并继续进行存储接收到的待存储数据的操作;当所述第一判断单元41确定存在多个空的缓存器43时,将所述待存储数据存入其中一个空的缓存器43中;并继续执行存储接收到的待存储数据的操作。所述字符型存储器还包括
第二判断单元4442,用于判断所述字符型存储器中是否存在一个或多个非空的缓存器
43 ;
第二执行单元46具体用于,当所述第二判断单元4442确定存在一个非空的缓存器43时,将所述非空的缓存器43中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作;当所述第二判断单元4442确定存在多个非空的缓存器43时,按照预先设置的选择方式选择一个非空的缓存器43,并将选中的非空的缓存器43中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作。所述字符型存储器还包括
选择单元45,用于按照保存待存储数据的顺序,将最先保存的待存储数据的非空的缓存器43作为选中的非空的缓存器43。如图5所示,本发明实施例提供一种用于实施例二的字符型存储器,所述字符型存储器包括
读取单元51,用于从存储设备中读取已存储的、且与上一次读取到的信息量相等的数
据;
发送单元52,用于将所述读取单元51读取到的数据发送给USB驱动器。具体的,字符型存储器可同时兼顾实施例一和实施例二的功能。综上所述,有益效果
使用本发明实施例提供的存储方法时字符型存储器可根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据直接存入自身的相应单元中;根据预先设置的第二存储方式,将自身保存的待存储数据通过SD总线写入存储设备中。该过程避免了现有技术中的写入块设备层,块整合等过程,因此在存储过程中可大大提高存储速度。并且由于不需要进行延缓写入与块整合等步骤,因此不会占用大量的内存。另外,本发明还提供一种数据读取方法,该方法中字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。可见,在本发明实施例提供的读取方法中可通过预读取的方式预先从存储设备读取数据,这一过程并行了读取过程与USB传输数据的过程,因此可大大提高读取速度。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种存储数据的方法,其特征在于,所述方法包括 字符型存储器根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据存入自身; 根据预先设置的第二存储方式,将自身保存的所述待存储数据通过SD总线写入存储设备中。
2.如权利要求1所述的方法,其特征在于,所述第一存储方式包括 判断是否存在一个或多个空的缓存器; 所述将从USB驱动器处接收到的待存储数据存入自身包括 当存在一个空的缓存器时,将所述待存储数据存入空的缓存器中;并继续进行存储接收到的待存储数据的操作; 当存在多个空的缓存器时,将所述待存储数据存入其中一个空的缓存器中;并继续执行存储接收到的待存储数据的操作。
3.如权利要求2所述的方法,其特征在于,所述第二存储方式包括 判断是否存在一个或多个非空的缓存器; 所述将自身保存的所述待存储数据通过SD总线写入存储设备中包括 当存在一个非空的缓存器时,将所述非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作; 当存在多个非空的缓存器时,按照预先设置的选择方式选择一个非空的缓存器,并将选中的非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作。
4.如权利要求3所述的方法,其特征在于,所述预先设置的选择方式为 按照保存待存储数据的顺序,将最先保存待存储数据的非空的缓存器作为选中的非空的缓存器。
5.一种数据读取方法,其特征在于,所述方法包括 字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。
6.一种用于权利要求1的字符型存储器,其特征在于,所述字符型存储器包括 第一执行单元,用于根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据进行存储; 第二执行单元,用于根据预先设置的第二存储方式,将所述待存储数据通过SD总线写入存储设备中。
7.如权利要求6所述的字符型存储器,其特征在于,所述字符型存储器还包括一个或多个缓存器,以及 第一判断单元,用于判断所述字符型存储器中是否存在一个或多个空的缓存器; 第一执行单元具体用于,当所述第一判断单元确定存在一个空的缓存器时,将所述待存储数据存入空的缓存器中;并继续进行存储接收到的待存储数据的操作;当所述第一判断单元确定存在多个空的缓存器时,将所述待存储数据存入其中一个空的缓存器中;并继续执行存储接收到的待存储数据的操作。
8.如权利要求7所述的字符型存储器,其特征在于,所述字符型存储器还包括第二判断单元,用于判断所述字符型存储器中是否存在一个或多个非空的缓存器; 第二执行单元具体用于,当所述第二判断单元确定存在一个非空的缓存器时,将所述非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作;当所述第二判断单元确定存在多个非空的缓存器时,按照预先设置的选择方式选择一个非空的缓存器,并将选中的非空的缓存器中的待存储数据通过SD总线写入所述存储设备中;并继续执行将待存储数据存入存储设备中的操作。
9.如权利要求8所述的字符型存储器,其特征在于,所述字符型存储器还包括 选择单元,用于按照保存待存储数据的顺序,将最先保存的待存储数据的非空的缓存器作为选中的非空的缓存器。
10.一种用于权利要求5的字符型存储器,其特征在于,所述字符型存储器包括 读取单元,用于从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据; 发送单元,用于将所述读取单元读取到的数据发送给USB驱动器。
全文摘要
本发明涉及通信电子技术领域,尤其涉及一种数据存储和读取的方法及字符型存储器。用于解决现有技术中当使用PC机将外接设备的数据存入存储器的过程中写速度慢以及占用大量内存的问题。存储数据的方法包括字符型存储器根据预先设置的第一存储方式,将从USB驱动器处接收到的待存储数据存入自身;根据预先设置的第二存储方式,将自身保存的所述待存储数据通过SD总线写入存储设备中。数据读取方法包括字符型存储器从存储设备中读取已存储的、且与上一次读取到的信息量相等的数据,并发送给USB驱动器。可见上述方法可避免现有技术中的问题。
文档编号G06F3/06GK103064634SQ20121055153
公开日2013年4月24日 申请日期2012年12月18日 优先权日2012年12月18日
发明者李雅崑 申请人:北京君正集成电路股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1