CN101968724B - 针对嵌入式arm处理器对sd卡数据存储和删除方法 - Google Patents
针对嵌入式arm处理器对sd卡数据存储和删除方法 Download PDFInfo
- Publication number
- CN101968724B CN101968724B CN2010105321087A CN201010532108A CN101968724B CN 101968724 B CN101968724 B CN 101968724B CN 2010105321087 A CN2010105321087 A CN 2010105321087A CN 201010532108 A CN201010532108 A CN 201010532108A CN 101968724 B CN101968724 B CN 101968724B
- Authority
- CN
- China
- Prior art keywords
- data
- card
- bunch
- file
- timer
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种针对嵌入式ARM处理器对SD卡数据存储和删除方法,在基于ARM的数据采集***上,利用缓存及定时器实现了数据定量或定时存储以及快速删除。根据实时数据采集数据保存和删除应用的特点,将随机性和突发性强的数据操作通过缓存和定时器以固定大小或固定时间的方式写入SD卡,在数据删除操作中引入了判断方式,减少了对某一簇中数据的反复读写次数,从而大幅度降低了处理器在此类事件中的资源占用率,数据保存和删除速度提高了400%以上,且不依赖操作***,移植简单。提高了***实时采集和处理数据的能力。
Description
技术领域
本发明涉及一种计算机数据存储方法,尤其涉及一种针对嵌入式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。
Claims (1)
1.一种针对嵌入式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卡,并重新读取另一数据块,直至文件占用的簇号被全部置位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105321087A CN101968724B (zh) | 2010-11-04 | 2010-11-04 | 针对嵌入式arm处理器对sd卡数据存储和删除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105321087A CN101968724B (zh) | 2010-11-04 | 2010-11-04 | 针对嵌入式arm处理器对sd卡数据存储和删除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101968724A CN101968724A (zh) | 2011-02-09 |
CN101968724B true CN101968724B (zh) | 2012-05-23 |
Family
ID=43547885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105321087A Expired - Fee Related CN101968724B (zh) | 2010-11-04 | 2010-11-04 | 针对嵌入式arm处理器对sd卡数据存储和删除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101968724B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323907A (zh) * | 2011-08-19 | 2012-01-18 | 长安大学 | 嵌入式arm处理器对nandflash数据存储和删除方法 |
CN106557572A (zh) * | 2016-11-11 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种安卓应用程序文件的提取方法及*** |
CN110427340B (zh) * | 2018-04-28 | 2023-08-04 | 伊姆西Ip控股有限责任公司 | 用于文件存储的方法、装置和计算机存储介质 |
CN113612699B (zh) * | 2021-08-02 | 2023-12-08 | 上海航天测控通信研究所 | 一种提高IP over CCSDS传输效率的方法 |
CN113961558B (zh) * | 2021-10-08 | 2022-06-14 | 上海信宝博通电子商务有限公司 | 前端数据存储方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553496A (zh) * | 2003-06-05 | 2004-12-08 | 中兴通讯股份有限公司 | 一种用于访问***芯片外sdram的控制器及其实现方法 |
CN1661586A (zh) * | 2005-01-21 | 2005-08-31 | 长沙科瑞捷机电技术有限公司 | 一种基于arm的pc104嵌入式计算机 |
-
2010
- 2010-11-04 CN CN2010105321087A patent/CN101968724B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553496A (zh) * | 2003-06-05 | 2004-12-08 | 中兴通讯股份有限公司 | 一种用于访问***芯片外sdram的控制器及其实现方法 |
CN1661586A (zh) * | 2005-01-21 | 2005-08-31 | 长沙科瑞捷机电技术有限公司 | 一种基于arm的pc104嵌入式计算机 |
Non-Patent Citations (1)
Title |
---|
丁富舜等.低端嵌入式***中SD卡读写的实现.《科技资讯》.2007,(第21期),第218-219页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101968724A (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101522848B1 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
CN101968724B (zh) | 针对嵌入式arm处理器对sd卡数据存储和删除方法 | |
CN110968253B (zh) | 一种数据存储方法、装置及*** | |
US20230046216A1 (en) | Data management system and method of controlling | |
Ji et al. | Lightweight data compression for mobile flash storage | |
US20200117361A1 (en) | Data stability in data storage system | |
EP3026545B1 (en) | File processing method and storage device | |
GB2411746A (en) | Selecting file system protocols according to content | |
US11455122B2 (en) | Storage system and data compression method for storage system | |
CN104571955A (zh) | 提高存储容量的方法和装置 | |
CN103049396B (zh) | 数据的刷写方法及装置 | |
CN101968796B (zh) | 一种双向并发执行的文件级可变长数据分块方法 | |
Lee et al. | iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics | |
CN105094709A (zh) | 一种固态盘存储***的动态数据压缩方法 | |
CN108089825B (zh) | 一种基于分布式集群的存储*** | |
CN101707633A (zh) | 一种基于文件***的消息中间件持久消息的存储方法 | |
Rumble | Memory and object management in RAMCloud | |
Shin et al. | Providing QoS through host controlled flash SSD garbage collection and multiple SSDs | |
CN117472285A (zh) | 固态硬盘用智能运行加速方法、计算机设备及存储介质 | |
CN108958657B (zh) | 一种数据存储方法、存储设备及存储*** | |
KR100852729B1 (ko) | 데이타 압축 관리장치 | |
US9646014B1 (en) | Systems and methods for selective defragmentation | |
Ren et al. | {Memory-Centric} Data Storage for Mobile Systems | |
CN105608014B (zh) | 一种使用mram的存储设备 | |
Kim et al. | Advil: A pain reliever for the storage performance of mobile devices |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120523 Termination date: 20211104 |