首页> 中国专利> 针对嵌入式ARM处理器对SD卡数据存储和删除方法

针对嵌入式ARM处理器对SD卡数据存储和删除方法

摘要

本发明公开了一种针对嵌入式ARM处理器对SD卡数据存储和删除方法,在基于ARM的数据采集系统上,利用缓存及定时器实现了数据定量或定时存储以及快速删除。根据实时数据采集数据保存和删除应用的特点,将随机性和突发性强的数据操作通过缓存和定时器以固定大小或固定时间的方式写入SD卡,在数据删除操作中引入了判断方式,减少了对某一簇中数据的反复读写次数,从而大幅度降低了处理器在此类事件中的资源占用率,数据保存和删除速度提高了400%以上,且不依赖操作系统,移植简单。提高了系统实时采集和处理数据的能力。

著录项

  • 公开/公告号CN101968724A

    专利类型发明专利

  • 公开/公告日2011-02-09

    原文格式PDF

  • 申请/专利权人 长安大学;

    申请/专利号CN201010532108.7

  • 申请日2010-11-04

  • 分类号G06F3/06;G06F17/30;

  • 代理机构西安恒泰知识产权代理事务所;

  • 代理人李郑建

  • 地址 710064 陕西省西安市南二环中段

  • 入库时间 2023-12-18 01:48:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-18

    未缴年费专利权终止 IPC(主分类):G06F 3/06 专利号:ZL2010105321087 申请日:20101104 授权公告日:20120523

    专利权的终止

  • 2012-05-23

    授权

    授权

  • 2011-03-23

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20101104

    实质审查的生效

  • 2011-02-09

    公开

    公开

说明书

技术领域

本发明涉及一种计算机数据存储方法,尤其涉及一种针对嵌入式ARM(Advanced RISC Machines)处理器对SD卡数据存储和删除方法。

背景技术

随着嵌入式技术的飞速发展,尤其在工业控制方面,嵌入式系统以专用性强、成本低、性能高、稳定性好而得到越来越广泛使用。基于ARM内核的微处理器,以性能高、成本低、能耗省、丰富的外接扩展电路、开发方便在嵌入式工控方面得到广泛的使用。

数据采集存储作为嵌入式领域的一个重要部分,保存大量嵌入式系统实时采集的数据和系统使用的数据。SD卡以其大容量、高性能、而得到广泛的使用,同时它是一体化固体介质,没有任何移动部分,不用担心机械运动的损坏,成为嵌入式存储设备的首选。同时为了有效的访问SD卡存储的数据,一般在SD卡中引入内嵌文件系统。

现有的嵌入式实时数据采集系统,一般采用无操作系统的嵌入式ARM处理器管理数据采集和存储任务,在对SD卡操作时,尤其是实时数据采集类应用,会出现由于过度频繁的小量数据写入以及数据删除需求,使得处理器浪费大量资源用于处理低速外设时间,在采集和存储任务之间反复切换,导致实时性受到很大影响。

Windows操作系统的广泛使用,使得FAT文件系统成为首选。由于FAT32文件系统不像FAT12、FAT16一样受到卷大小的限制和文件目录最大个数的限制,特别适合作为嵌入式文件系统。在工业控制领域,高效的数据存储、读取、删除能够降低外设对CPU资源的损耗,使得在单次操作数据量较小且数据存储频繁的应用中最大限度的提高嵌入式系统的性能,尤其是在实时数据采集、数据处理等应用方面。

发明内容

本发明的目的在于,提供一种针对无需操作系统支持的嵌入式ARM处理器对SD卡数据存储和删除方法,该方法可大幅度提高其数据写入和删除速度,降低在数据采集应用中SD卡数据存储操作对系统资源的占有率。

为了实现上述任务,本发明采取如下的技术解决方案予以实现:

一种针对嵌入式ARM处理器对SD卡数据存储和删除方法,其特征在于,该方法将随机性和突发性强的数据操作通过缓存和定时器以固定大小或固定时间的方式写入SD卡,具体按以下步骤进行:

1)ARM处理器对SD卡进行初始化和FAT32文件的建立;

2)在内存中建立一个512字节的数据缓存区;

3)设置时钟定时器,使时钟定时器倒计500ms产生中断;

4)对基于ARM处理器的SD卡数据操作请求作出判断:

A、如果是数据写请求,则进行以下操作:

(1)如数据量小于缓存区大小,则存入缓存区并启动定时器;

(2)在定时器中断发生之前如果没有第二次数据写入操作,将缓存区内的数据写入SD卡中;

(3)如果在定时器发生中断之前仍有数据写入请求,继续将数据存入缓存区;

(4)如果数据量大于或等于缓存区大小,则及时写入SD卡中;

B、如果是数据删除请求,则进行以下操作:

(1)当文件只占用一个文件簇,该文件簇为2KB字节,读取相应的簇号并写入0XFF、0XFF、0XFF、0X0F;

(2)当文件占用两个文件簇或大于两个文件簇,每个文件簇为2KB字节,判断该簇号是否和上一个簇号处于同一数据块中,如果处于同一数据块中继续处理该簇号,如果该簇号和上一个簇号不处于同一簇号中,将修改好的文件簇号写入SD卡,并从新读取另一块数据,直至文件占用的簇号被全部置位。

本发明对在嵌入式数据采集领域频率较高且单次数据量较小的应用中可大大减少数据保存和删除所需时间,降低数据保存和删除对处理器资源的需求。

本发明的方法在数据删除操作中引入了判断方式,减少了对某一簇中数据的反复读写次数,实现了不依赖操作系统的嵌入式ARM处理器对SD卡的高效写入和删除操作,从而大幅度降低了处理器在此类事件中的资源占用率,数据保存和删除速度提高了400%以上,大幅度提高数据存取速度,且不依赖操作系统,移植简单。

附图说明

图1是文件写操作流程图;

图2是文件删除操作流程图。

下面结合附图对本发明作进一步详细的说明。

具体实施方式

SD卡上电后默认进入SD通信模式,这时要对SD卡进行初始化,初始化过程主要完成SD卡工作频率的设定、卡的容量、卡的大小等信息的获取,最重要的是SD卡数据块长度的设置,在嵌入式领域一般设定一块大小为512字节,这也与Windows操作系统默认的分配单元大小是一致。该过程通过向SD卡写入SD卡命令完成。

FAT的英文全称为File Allocation Table,意为文件分配表,32表示每一个文件簇的簇号使用32个比特位来寻址。簇是文件访问的最小单位,文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位。一般为块大小的2倍、4倍、8倍、16倍(即2n倍)。从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低,因此在嵌入式领域不应将一个文件簇设置的过大,一般为块大小的4倍或8倍。

FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。

引导区(BOOT区)记录文件系统最基本的参数以及FAT1、FAT2表以及DATA区的入口地址等信息。FAT1和FAT2记录着完全一样的文件簇链索引结构,由于该区数据非常重要,因此使用FAT2作为备份。根目录区记录每一个文件的文件名、文件属性、创建访问修改日期以及在FAT表中的位置和文件大小。要创建一个文件就要对该区进行操作同时修改相应的TAT索引表,而删除一个文件也是同样要修改该区同时删除在TAT表中的索引记录。

为提高CPU的效率、降低外设对CPU资源的损耗,要最大限度减少CPU对SD卡数据块读取的次数。这对提高系统实时性发挥重大作用。

在对文件进行写操作的时候,根据该文件在FAT区中记录的簇号,计算出文件数据存储在数据区的地址,一般的情况下,当写入文件数据很小,比如十几比特的信息,这时如果触发一次写操作,这会导致CPU资源大量耗费在慢速的外设操作上,在这里,需要引入一个文件块大小的缓存区和设置时钟定时器,定时器的值是根据数据系统的数据采集速率而确定的,一般将定时器的时间间隔设置为500ms,定时器倒计500ms即产生中断。

当文件写入时,根据写入文件的大小决定文件是及时写入数据区还是存放在缓存区,同时设定的定时器值并启动定时器。如果定时器中断发生前没有第二次数据写入,及时将缓冲区的数据存入,如果在定时器发生中断前仍有数据请求写入,将该数据继续存入缓存区。

其写操作流程如附图1所示:首先判断数据块的大小,如果数据块小于512字节,存入数据缓存区,并启动定时器,接着判断定时器是否到达设定的时间(500ms),如果在定时器发生中断之前仍有数据写入请求,继续将数据存入缓存区;如果没有则及时将数据缓存区的数据存入SD卡,相反,在定时器还未达到500ms的定时值时,数据存储量已达到数据缓存区大小时,应及时存入数据到SD卡中,防止数据溢出。

在对文件进行删除操作时,大量的数据操作将发生在清除该文件占用的FAT簇号,当文件相对较小时,只要读取相应的簇号并写入0XFF、0XFF、0XFF、0X0F,但是当文件较大时,需要不停的读取修改写入文件簇号,会浪费大量的系统资源。减少读写块数的次数可以通过判断该簇号是否和上一个簇号处于同一数据块中,如果处于同一数据块中继续处理簇号,如果不处于同一簇号中,将修改好的文件簇号写入SD卡,并从新读取另一块数据,直至文件占用的簇号被全部置位。可以推测文件越大,该删除文件方法的效率就越高。

其删除操作流程如附图2所示:首先将文件使用簇数量减1,如果结果为0,继续判断已发生读FAT的操作,如果结果不为0,读取簇号存取位置数据块修改为0X00,读取下一簇号,然后判断新簇号处于同一数据块内,如果是,返回;如果不是,将数据块写入簇号所在FAT1、FAT2位置,读取新簇号存储位置数据块,返回。如果是,则修改为0X00,然后数据块写入簇号所在FAT1、FAT2位置,文件删除成功返回。如果不是,读取簇号存取位置数据块,然后修改为0X00。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号