專利名稱:一種在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種數(shù)據(jù)存儲(chǔ)方法,具體涉及一種在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ) 的方法。
背景技術(shù):
隨著多核處理器技術(shù)的發(fā)展,各種不同功能的處理器被越來(lái)越多的整合在一個(gè)芯 片上。OMAP處理器融合了 DSP核和ARM核,發(fā)揮了雙核優(yōu)勢(shì),使處理器的性能得到了很大的提尚。同時(shí),隨著嵌入式操作系統(tǒng)的不斷發(fā)展,越來(lái)越多的微處理器借助操作系統(tǒng)來(lái)實(shí) 現(xiàn)更多復(fù)雜的功能。其中Linux操作系統(tǒng)憑借眾多優(yōu)勢(shì),拓展了應(yīng)用領(lǐng)域,在嵌入式操作系 統(tǒng)領(lǐng)域占據(jù)了重要地位。為了保證操作系統(tǒng)的穩(wěn)定性和安全性,在Linux操作系統(tǒng)下,需要通過(guò)驅(qū)動(dòng)程序 來(lái)訪問(wèn)底層硬件,應(yīng)用程序不能越過(guò)驅(qū)動(dòng)程序直接對(duì)硬件進(jìn)行操作。所以,在傳統(tǒng)的信號(hào)采 集系統(tǒng)中,底層硬件采集到的數(shù)據(jù)首先被讀取到驅(qū)動(dòng)程序里,然后再傳送到應(yīng)用程序里,最 后由應(yīng)用程序?qū)懭氲綌?shù)據(jù)緩存文件中。這種層層傳遞數(shù)據(jù)的手段,消耗了很多的時(shí)間,降低 了采集系統(tǒng)的效率。特別是當(dāng)被采集信號(hào)頻率高、數(shù)據(jù)量大時(shí),這種方法就成了提高整個(gè)系 統(tǒng)效率的瓶頸。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能避免數(shù)據(jù)在驅(qū)動(dòng)程序和應(yīng)用程序之間的層層傳遞,提 高數(shù)據(jù)的存儲(chǔ)速度的在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ)的方法。本發(fā)明是這樣實(shí)現(xiàn)的1、建立數(shù)據(jù)緩存文件;2、搜索數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元地址;3、將待保存數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元;4、由Linux進(jìn)行數(shù)據(jù)緩存文件的轉(zhuǎn)移。本發(fā)明的具體步驟如下步驟l,Linux系統(tǒng)掛載tempfs文件系統(tǒng),在Linux啟動(dòng)后,在tempfs的掛載點(diǎn)下 創(chuàng)建兩個(gè)數(shù)據(jù)緩存文件;步驟2,Linux創(chuàng)建數(shù)據(jù)緩存文件后,將數(shù)據(jù)緩存文件按4K字節(jié)大小分塊,并初始 化每個(gè)分塊的文件標(biāo)識(shí)符和塊序號(hào);步驟3,Linux初始化數(shù)據(jù)緩存文件后,按照文件標(biāo)識(shí)符和塊序號(hào),由DSP核搜索緩 存文件所有塊的物理存儲(chǔ)地址,并將這些地址保存;步驟4,DSP核根據(jù)搜索得到的緩存文件的存儲(chǔ)地址,將數(shù)據(jù)直接寫(xiě)入這些存儲(chǔ)地 址對(duì)應(yīng)的物理存儲(chǔ)單元中,即將數(shù)據(jù)保存到了緩存文件里;步驟5,當(dāng)OMAP的DSP核填充滿數(shù)據(jù)緩存文件的所有塊時(shí),通知Linux進(jìn)行該數(shù)據(jù)緩存文件的轉(zhuǎn)移;步驟6,OMAP的DSP核使用乒乓操作填充兩個(gè)數(shù)據(jù)緩存文件;步驟7,Linux接收到DSP核發(fā)出的數(shù)據(jù)緩存文件的轉(zhuǎn)移通知后,調(diào)用SHELL命令 中的拷貝操作CP,將文件拷貝到外部的存儲(chǔ)器件里,并修改文件名。本的技術(shù)特點(diǎn)主要體現(xiàn)在1、本發(fā)明所述的方法運(yùn)行在OMAP處理器上,其中DSP核存儲(chǔ)數(shù)據(jù),ARM核運(yùn)行 Linux操作系統(tǒng)進(jìn)行文件管理。2、DSP核和ARM核共享SDRAM存儲(chǔ)區(qū),Linux在該存儲(chǔ)區(qū)掛載tempfs文件系統(tǒng)。3、由Linux在tempfs文件系統(tǒng)的掛載點(diǎn)下創(chuàng)建數(shù)據(jù)緩存文件,并初始化。4、Linux建立兩個(gè)數(shù)據(jù)緩存文件,實(shí)現(xiàn)乒乓存儲(chǔ)。5、由DSP核完成對(duì)數(shù)據(jù)緩存文件物理單元地址的搜索,并保存搜索結(jié)果。6、由DSP核將待保存數(shù)據(jù)直接存儲(chǔ)到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元里,存完一個(gè) 文件后通知Linux進(jìn)行文件轉(zhuǎn)移。7、建立數(shù)據(jù)緩存文件和搜索數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元地址都只是在開(kāi)始數(shù) 據(jù)存儲(chǔ)前進(jìn)行,而且僅操作一次。本發(fā)明在OMAP處理器中,由DSP核直接將數(shù)據(jù)保存到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單 元里,從而直接將采集到的數(shù)據(jù)保存為文件形式,省去了數(shù)據(jù)在驅(qū)動(dòng)程序和應(yīng)用程序之間 的復(fù)制;對(duì)數(shù)據(jù)緩存文件的建立、初始化、轉(zhuǎn)移都由Linux來(lái)完成,發(fā)揮了 Linux的文件管理 優(yōu)勢(shì)。兩者結(jié)合,提高了數(shù)據(jù)的存儲(chǔ)速度。
圖1示出了數(shù)據(jù)緩存文件分塊的結(jié)構(gòu),每個(gè)分塊包括文件標(biāo)識(shí)符、塊序號(hào)和存儲(chǔ) 數(shù)據(jù)三部分。圖2示出了 OMAP的ARM核在數(shù)據(jù)實(shí)時(shí)存儲(chǔ)過(guò)程中的工作流程。圖3示出了 OMAP的DSP核在數(shù)據(jù)實(shí)時(shí)存儲(chǔ)過(guò)程中的工作流程。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作更詳細(xì)地描述。步驟1、0MAP處理器上電后,ARM核啟動(dòng)Linux,進(jìn)入過(guò)程202,掛載tempfs文件系 統(tǒng),然后在掛載點(diǎn)下建立兩個(gè)數(shù)據(jù)緩存文件(如DataCacheFilej和DataCacheFi le_b)。 DSP核進(jìn)入過(guò)程302,等待搜索地址通知。步驟2、ARM核進(jìn)入到過(guò)程203,將兩個(gè)緩存文件以4K字節(jié)大小分塊,按圖1所示 初始化所有分塊的文件標(biāo)識(shí)符和塊序號(hào),然后通知DSP核搜索數(shù)據(jù)緩存文件在SDRAM上的 存儲(chǔ)地址。 步驟3、DSP核接收到搜索地址中斷后,就進(jìn)入到過(guò)程303,搜索兩個(gè)緩存文件的分 塊在SDRAM中的存儲(chǔ)地址,并將地址進(jìn)行保存。步驟4、DSP核工作流程進(jìn)入到過(guò)程304,按順序?qū)?shù)據(jù)寫(xiě)入到緩存文件 DataCacheFi le_a 對(duì)應(yīng)的 SDRAM 中;步驟5、每當(dāng)DSP核將一個(gè)分塊的SDRAM單元填充滿后,工作流程就進(jìn)入到過(guò)程305,判斷是否已經(jīng)填充滿DataCacheFilej的所有分塊,若不是,則回到過(guò)程304,繼續(xù)填 充下一個(gè)分塊。步驟6、若DSP核的過(guò)程305得到的判斷結(jié)果是DataCacheFilej已經(jīng)填充完畢, 則進(jìn)入到過(guò)程306,觸發(fā)ARM核中斷,通知Linux將DataCacheFilej轉(zhuǎn)移到外部存儲(chǔ)器。 然后進(jìn)入到過(guò)程307,標(biāo)志另一個(gè)緩存文件DataCacheFilej*當(dāng)前緩存文件,然后回到過(guò) 程304繼續(xù)運(yùn)行。步驟7、當(dāng)ARM核接收到DSP核觸發(fā)的轉(zhuǎn)移DataCacheFilej的中斷后,ARM核工 作流程進(jìn)入到過(guò)程205,調(diào)用SHELL指令下的復(fù)制指令CP,將DataCacheFilej文件復(fù)制到 外部的存儲(chǔ)器中,并進(jìn)行文件名的修改。然后,ARM核工作流程又回到過(guò)程204,重新等待 DSP核觸發(fā)數(shù)據(jù)緩存文件轉(zhuǎn)移的中斷。
權(quán)利要求
1.一種在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ)的方法,其特征是(1)建立數(shù)據(jù)緩存文件;(2)搜索數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元地址;(3)將待保存數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元;(4)由Linux進(jìn)行數(shù)據(jù)緩存文件的轉(zhuǎn)移。
2.根據(jù)權(quán)利要求1所述的一種在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ)的方法,其特征是具體步 驟為步驟1,Linux系統(tǒng)掛載tempfs文件系統(tǒng),在Linux啟動(dòng)后,在tempfs的掛載點(diǎn)下創(chuàng)建 兩個(gè)數(shù)據(jù)緩存文件;步驟2,Linux創(chuàng)建數(shù)據(jù)緩存文件后,將數(shù)據(jù)緩存文件按4K字節(jié)大小分塊,并初始化每 個(gè)分塊的文件標(biāo)識(shí)符和塊序號(hào);步驟3,Linux初始化數(shù)據(jù)緩存文件后,按照文件標(biāo)識(shí)符和塊序號(hào),由DSP核搜索緩存文 件所有塊的物理存儲(chǔ)地址,并將這些地址保存;步驟4,DSP核根據(jù)搜索得到的緩存文件的存儲(chǔ)地址,將數(shù)據(jù)直接寫(xiě)入這些存儲(chǔ)地址對(duì) 應(yīng)的物理存儲(chǔ)單元中,即將數(shù)據(jù)保存到了緩存文件里;步驟5,當(dāng)OMAP的DSP核填充滿數(shù)據(jù)緩存文件的所有塊時(shí),通知Linux進(jìn)行該數(shù)據(jù)緩存 文件的轉(zhuǎn)移;步驟6,OMAP的DSP核使用乒乓操作填充兩個(gè)數(shù)據(jù)緩存文件;步驟7,Linux接收到DSP核發(fā)出的數(shù)據(jù)緩存文件的轉(zhuǎn)移通知后,調(diào)用SHELL命令中的 拷貝操作CP,將文件拷貝到外部的存儲(chǔ)器件里,并修改文件名。
全文摘要
本發(fā)明提供了一種在Linux下實(shí)現(xiàn)數(shù)據(jù)快速存儲(chǔ)的方法。(1)建立數(shù)據(jù)緩存文件;(2)搜索數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元地址;(3)將待保存數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元;(4)由Linux進(jìn)行數(shù)據(jù)緩存文件的轉(zhuǎn)移。在OMAP處理器中,由DSP核直接將數(shù)據(jù)保存到數(shù)據(jù)緩存文件對(duì)應(yīng)的物理單元里,從而直接將采集到的數(shù)據(jù)保存為文件形式,省去了數(shù)據(jù)在驅(qū)動(dòng)程序和應(yīng)用程序之間的復(fù)制;對(duì)數(shù)據(jù)緩存文件的建立、初始化、轉(zhuǎn)移都由Linux來(lái)完成,發(fā)揮了Linux的文件管理優(yōu)勢(shì)。兩者結(jié)合,提高了數(shù)據(jù)的存儲(chǔ)速度。
文檔編號(hào)G06F17/30GK102147806SQ20111005232
公開(kāi)日2011年8月10日 申請(qǐng)日期2011年3月4日 優(yōu)先權(quán)日2011年3月4日
發(fā)明者付進(jìn), 劉保府, 嵇建飛, 梁國(guó)龍, 王燕, 王逸林, 范展, 裘寒青 申請(qǐng)人:哈爾濱工程大學(xué)