專利名稱:針對嵌入式arm處理器對sd卡數(shù)據(jù)存儲和刪除方法
技術(shù)領域:
本發(fā)明涉及一種計算機數(shù)據(jù)存儲方法,尤其涉及一種針對嵌入式ARM(Advanced RISC Machines)處理器對SD卡數(shù)據(jù)存儲和刪除方法。
背景技術(shù):
隨著嵌入式技術(shù)的飛速發(fā)展,尤其在工業(yè)控制方面,嵌入式系統(tǒng)以專用性強、成本 低、性能高、穩(wěn)定性好而得到越來越廣泛使用?;贏RM內(nèi)核的微處理器,以性能高、成本 低、能耗省、豐富的外接擴展電路、開發(fā)方便在嵌入式工控方面得到廣泛的使用。數(shù)據(jù)采集存儲作為嵌入式領域的一個重要部分,保存大量嵌入式系統(tǒng)實時采集的 數(shù)據(jù)和系統(tǒng)使用的數(shù)據(jù)。SD卡以其大容量、高性能、而得到廣泛的使用,同時它是一體化固 體介質(zhì),沒有任何移動部分,不用擔心機械運動的損壞,成為嵌入式存儲設備的首選。同時 為了有效的訪問SD卡存儲的數(shù)據(jù),一般在SD卡中引入內(nèi)嵌文件系統(tǒng)?,F(xiàn)有的嵌入式實時數(shù)據(jù)采集系統(tǒng),一般采用無操作系統(tǒng)的嵌入式ARM處理器管理 數(shù)據(jù)采集和存儲任務,在對SD卡操作時,尤其是實時數(shù)據(jù)采集類應用,會出現(xiàn)由于過度頻 繁的小量數(shù)據(jù)寫入以及數(shù)據(jù)刪除需求,使得處理器浪費大量資源用于處理低速外設時間, 在采集和存儲任務之間反復切換,導致實時性受到很大影響。Windows操作系統(tǒng)的廣泛使用,使得FAT文件系統(tǒng)成為首選。由于FAT32文件系統(tǒng) 不像FAT12、FAT16 一樣受到卷大小的限制和文件目錄最大個數(shù)的限制,特別適合作為嵌入 式文件系統(tǒng)。在工業(yè)控制領域,高效的數(shù)據(jù)存儲、讀取、刪除能夠降低外設對CPU資源的損 耗,使得在單次操作數(shù)據(jù)量較小且數(shù)據(jù)存儲頻繁的應用中最大限度的提高嵌入式系統(tǒng)的性 能,尤其是在實時數(shù)據(jù)采集、數(shù)據(jù)處理等應用方面。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種針對無需操作系統(tǒng)支持的嵌入式ARM處理器對SD卡 數(shù)據(jù)存儲和刪除方法,該方法可大幅度提高其數(shù)據(jù)寫入和刪除速度,降低在數(shù)據(jù)采集應用 中SD卡數(shù)據(jù)存儲操作對系統(tǒng)資源的占有率。為了實現(xiàn)上述任務,本發(fā)明采取如下的技術(shù)解決方案予以實現(xiàn)
一種針對嵌入式ARM處理器對SD卡數(shù)據(jù)存儲和刪除方法,其特征在于,該方法將隨機 性和突發(fā)性強的數(shù)據(jù)操作通過緩存和定時器以固定大小或固定時間的方式寫入SD卡,具 體按以下步驟進行
1)ARM處理器對SD卡進行初始化和FAT32文件的建立;
2)在內(nèi)存中建立一個512字節(jié)的數(shù)據(jù)緩存區(qū);
3)設置時鐘定時器,使時鐘定時器倒計500ms產(chǎn)生中斷;
4)對基于ARM處理器的SD卡數(shù)據(jù)操作請求作出判斷 A、如果是數(shù)據(jù)寫請求,則進行以下操作
(1)如數(shù)據(jù)量小于緩存區(qū)大小,則存入緩存區(qū)并啟動定時器;(2)在定時器中斷發(fā)生之前如果沒有第二次數(shù)據(jù)寫入操作,將緩存區(qū)內(nèi)的數(shù)據(jù)寫入SD 卡中;
(3)如果在定時器發(fā)生中斷之前仍有數(shù)據(jù)寫入請求,繼續(xù)將數(shù)據(jù)存入緩存區(qū);
(4)如果數(shù)據(jù)量大于或等于緩存區(qū)大小,則及時寫入SD卡中; B、如果是數(shù)據(jù)刪除請求,則進行以下操作
(1)當文件只占用一個文件簇,該文件簇為2KB字節(jié),讀取相應的簇號并寫入0XFF、 OXFF、OXFF、OXOF ;
(2)當文件占用兩個文件簇或大于兩個文件簇,每個文件簇為2KB字節(jié),判斷該簇號 是否和上一個簇號處于同一數(shù)據(jù)塊中,如果處于同一數(shù)據(jù)塊中繼續(xù)處理該簇號,如果該簇 號和上一個簇號不處于同一簇號中,將修改好的文件簇號寫入SD卡,并從新讀取另一塊數(shù) 據(jù),直至文件占用的簇號被全部置位。本發(fā)明對在嵌入式數(shù)據(jù)采集領域頻率較高且單次數(shù)據(jù)量較小的應用中可大大減 少數(shù)據(jù)保存和刪除所需時間,降低數(shù)據(jù)保存和刪除對處理器資源的需求。本發(fā)明的方法在數(shù)據(jù)刪除操作中引入了判斷方式,減少了對某一簇中數(shù)據(jù)的反復 讀寫次數(shù),實現(xiàn)了不依賴操作系統(tǒng)的嵌入式ARM處理器對SD卡的高效寫入和刪除操作,從 而大幅度降低了處理器在此類事件中的資源占用率,數(shù)據(jù)保存和刪除速度提高了 400%以 上,大幅度提高數(shù)據(jù)存取速度,且不依賴操作系統(tǒng),移植簡單。
圖1是文件寫操作流程圖; 圖2是文件刪除操作流程圖。 下面結(jié)合附圖對本發(fā)明作進一步詳細的說明。
具體實施例方式SD卡上電后默認進入SD通信模式,這時要對SD卡進行初始化,初始化過程主要完 成SD卡工作頻率的設定、卡的容量、卡的大小等信息的獲取,最重要的是SD卡數(shù)據(jù)塊長度 的設置,在嵌入式領域一般設定一塊大小為512字節(jié),這也與Windows操作系統(tǒng)默認的分配 單元大小是一致。該過程通過向SD卡寫入SD卡命令完成。FAT的英文全稱為File Allocation Table,意為文件分配表,32表示每一個文件 簇的簇號使用32個比特位來尋址。簇是文件訪問的最小單位,文件系統(tǒng)對數(shù)據(jù)區(qū)的存儲空 間是按簇進行劃分和管理的,簇是空間分配和回收的基本單位。一般為塊大小的2倍、4倍、 8倍、16倍(即2n倍)。從統(tǒng)計學上講,平均每個文件浪費0. 5簇的空間,簇越大,存儲文件時 空間浪費越多,利用率越低,因此在嵌入式領域不應將一個文件簇設置的過大,一般為塊大 小的4倍或8倍。FAT32文件系統(tǒng)將邏輯盤的空間劃分為三部分,依次是引導區(qū)(BOOT區(qū))、文件分 配表區(qū)(FAT區(qū))、數(shù)據(jù)區(qū)(DATA區(qū))。引導區(qū)(BOOT區(qū))記錄文件系統(tǒng)最基本的參數(shù)以及FAT1、FAT2表以及DATA區(qū)的入 口地址等信息。FATl和FAT2記錄著完全一樣的文件簇鏈索引結(jié)構(gòu),由于該區(qū)數(shù)據(jù)非常重 要,因此使用FAT2作為備份。根目錄區(qū)記錄每一個文件的文件名、文件屬性、創(chuàng)建訪問修改日期以及在FAT表中的位置和文件大小。要創(chuàng)建一個文件就要對該區(qū)進行操作同時修改相 應的TAT索引表,而刪除一個文件也是同樣要修改該區(qū)同時刪除在TAT表中的索引記錄。為提高CPU的效率、降低外設對CPU資源的損耗,要最大限度減少CPU對SD卡數(shù) 據(jù)塊讀取的次數(shù)。這對提高系統(tǒng)實時性發(fā)揮重大作用。在對文件進行寫操作的時候,根據(jù)該文件在FAT區(qū)中記錄的簇號,計算出文件數(shù) 據(jù)存儲在數(shù)據(jù)區(qū)的地址,一般的情況下,當寫入文件數(shù)據(jù)很小,比如十幾比特的信息,這時 如果觸發(fā)一次寫操作,這會導致CPU資源大量耗費在慢速的外設操作上,在這里,需要引入 一個文件塊大小的緩存區(qū)和設置時鐘定時器,定時器的值是根據(jù)數(shù)據(jù)系統(tǒng)的數(shù)據(jù)采集速率 而確定的,一般將定時器的時間間隔設置為500ms,定時器倒計500ms即產(chǎn)生中斷。當文件寫入時,根據(jù)寫入文件的大小決定文件是及時寫入數(shù)據(jù)區(qū)還是存放在緩存 區(qū),同時設定的定時器值并啟動定時器。如果定時器中斷發(fā)生前沒有第二次數(shù)據(jù)寫入,及時 將緩沖區(qū)的數(shù)據(jù)存入,如果在定時器發(fā)生中斷前仍有數(shù)據(jù)請求寫入,將該數(shù)據(jù)繼續(xù)存入緩 存區(qū)。其寫操作流程如附圖1所示首先判斷數(shù)據(jù)塊的大小,如果數(shù)據(jù)塊小于512字節(jié), 存入數(shù)據(jù)緩存區(qū),并啟動定時器,接著判斷定時器是否到達設定的時間(500ms),如果在定 時器發(fā)生中斷之前仍有數(shù)據(jù)寫入請求,繼續(xù)將數(shù)據(jù)存入緩存區(qū);如果沒有則及時將數(shù)據(jù)緩 存區(qū)的數(shù)據(jù)存入SD卡,相反,在定時器還未達到500ms的定時值時,數(shù)據(jù)存儲量已達到數(shù)據(jù) 緩存區(qū)大小時,應及時存入數(shù)據(jù)到SD卡中,防止數(shù)據(jù)溢出。在對文件進行刪除操作時,大量的數(shù)據(jù)操作將發(fā)生在清除該文件占用的FAT簇 號,當文件相對較小時,只要讀取相應的簇號并寫入0XFF、0XFF、0XFF、0X0F,但是當文件較 大時,需要不停的讀取修改寫入文件簇號,會浪費大量的系統(tǒng)資源。減少讀寫塊數(shù)的次數(shù)可 以通過判斷該簇號是否和上一個簇號處于同一數(shù)據(jù)塊中,如果處于同一數(shù)據(jù)塊中繼續(xù)處理 簇號,如果不處于同一簇號中,將修改好的文件簇號寫入SD卡,并從新讀取另一塊數(shù)據(jù),直 至文件占用的簇號被全部置位??梢酝茰y文件越大,該刪除文件方法的效率就越高。其刪除操作流程如附圖2所示首先將文件使用簇數(shù)量減1,如果結(jié)果為0,繼續(xù)判 斷已發(fā)生讀FAT的操作,如果結(jié)果不為0,讀取簇號存取位置數(shù)據(jù)塊修改為0X00,讀取下一 簇號,然后判斷新簇號處于同一數(shù)據(jù)塊內(nèi),如果是,返回;如果不是,將數(shù)據(jù)塊寫入簇號所在 FATUFAT2位置,讀取新簇號存儲位置數(shù)據(jù)塊,返回。如果是,則修改為0X00,然后數(shù)據(jù)塊寫 入簇號所在FAT1、FAT2位置,文件刪除成功返回。如果不是,讀取簇號存取位置數(shù)據(jù)塊,然 后修改為0X00。
權(quán)利要求
一種針對嵌入式ARM處理器對SD卡數(shù)據(jù)存儲和刪除方法,其特征在于,該方法將隨機性和突發(fā)性強的數(shù)據(jù)操作通過緩存和定時器以固定大小或固定時間的方式寫入SD卡,具體按以下步驟進行1)ARM處理器對SD卡進行初始化和FAT32文件的建立;2)在內(nèi)存中建立一個512字節(jié)的數(shù)據(jù)緩存區(qū);3)設置時鐘定時器,使時鐘定時器倒計500ms產(chǎn)生中斷;4)對基于ARM處理器的SD卡數(shù)據(jù)操作請求作出判斷A、如果是數(shù)據(jù)寫請求,則進行以下操作(1)如數(shù)據(jù)量小于緩存區(qū)大小,則存入緩存區(qū)并啟動定時器;(2)在定時器中斷發(fā)生之前如果沒有第二次數(shù)據(jù)寫入操作,將緩存區(qū)內(nèi)的數(shù)據(jù)寫入SD卡中;(3)如果在定時器發(fā)生中斷之前仍有數(shù)據(jù)寫入請求,繼續(xù)將數(shù)據(jù)存入緩存區(qū);(4)如果數(shù)據(jù)量大于或等于緩存區(qū)大小,則及時寫入SD卡中;B、如果是數(shù)據(jù)刪除請求,則進行以下操作(1)當文件只占用一個文件簇,該文件簇為2KB字節(jié),讀取相應的簇號并寫入0XFF、0XFF、0XFF、0X0F;(2)當文件占用兩個文件簇或大于兩個文件簇,每個文件簇為2KB字節(jié),判斷該簇號是否和上一個簇號處于同一數(shù)據(jù)塊中,如果處于同一數(shù)據(jù)塊中繼續(xù)處理該簇號,如果該簇號和上一個簇號不處于同一簇號中,將修改好的文件簇號寫入SD卡,并從新讀取另一塊數(shù)據(jù),直至文件占用的簇號被全部置位。
全文摘要
本發(fā)明公開了一種針對嵌入式ARM處理器對SD卡數(shù)據(jù)存儲和刪除方法,在基于ARM的數(shù)據(jù)采集系統(tǒng)上,利用緩存及定時器實現(xiàn)了數(shù)據(jù)定量或定時存儲以及快速刪除。根據(jù)實時數(shù)據(jù)采集數(shù)據(jù)保存和刪除應用的特點,將隨機性和突發(fā)性強的數(shù)據(jù)操作通過緩存和定時器以固定大小或固定時間的方式寫入SD卡,在數(shù)據(jù)刪除操作中引入了判斷方式,減少了對某一簇中數(shù)據(jù)的反復讀寫次數(shù),從而大幅度降低了處理器在此類事件中的資源占用率,數(shù)據(jù)保存和刪除速度提高了400%以上,且不依賴操作系統(tǒng),移植簡單。提高了系統(tǒng)實時采集和處理數(shù)據(jù)的能力。
文檔編號G06F3/06GK101968724SQ201010532108
公開日2011年2月9日 申請日期2010年11月4日 優(yōu)先權(quán)日2010年11月4日
發(fā)明者余騰, 史昕, 惠飛, 楊瀾, 趙祥模, 雷濤 申請人:長安大學