本發(fā)明涉及數(shù)據(jù)存儲和讀寫技術(shù),尤其涉及一種嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法。
背景技術(shù):
:隨著人工智能技術(shù)的成熟,嵌入式數(shù)據(jù)采集終端越來越多的應(yīng)用到智能化系統(tǒng)中,從事簡單的數(shù)據(jù)采集和單一功能實(shí)現(xiàn)上,但是這些數(shù)據(jù)終端所起到的作用確是無可替代的,智能中心依賴這些數(shù)據(jù)終端收集上來的數(shù)據(jù)進(jìn)行分析和決策。由于這些采集終端的功能較為單一并且應(yīng)用到系統(tǒng)中的數(shù)量較多,從成本和功能性上考慮,這些數(shù)據(jù)采集終端不能采集和存儲大批量數(shù)據(jù)并且數(shù)據(jù)需要一定的實(shí)時性。因此要求數(shù)據(jù)采集終端具有循環(huán)記錄和采集數(shù)據(jù)的功能。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于為克服現(xiàn)有技術(shù)的缺陷,而提供一種嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法,以通過較低成本實(shí)現(xiàn)存儲大批量實(shí)時數(shù)據(jù)。為實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法在鐵電存儲器設(shè)立用于存放動態(tài)標(biāo)志和位移變量的標(biāo)志區(qū),并將Flash存儲器劃分出多于1個用于循環(huán)存放數(shù)據(jù)的數(shù)據(jù)區(qū),循環(huán)記錄和采集方法包括存儲數(shù)據(jù)步驟和采集數(shù)據(jù)步驟;存儲數(shù)據(jù)步驟找出標(biāo)志區(qū)中存儲的當(dāng)前數(shù)據(jù)存儲地址后將數(shù)據(jù)存儲到數(shù)據(jù)區(qū)內(nèi),采集數(shù)據(jù)步驟找出標(biāo)志區(qū)中存儲的循環(huán)采集數(shù)據(jù)地址后從數(shù)據(jù)區(qū)內(nèi)采集數(shù)據(jù)。進(jìn)一步地,存儲數(shù)據(jù)步驟包括:步驟A1,讀取標(biāo)志區(qū)中Flash存儲器的當(dāng)前數(shù)據(jù)存儲地址和數(shù)據(jù)長度,并驗(yàn)證校驗(yàn)值;步驟A2,讀取標(biāo)志區(qū)中Flash存儲器的最大數(shù)據(jù)地址和最小數(shù)據(jù)地址,判斷當(dāng)前數(shù)據(jù)存儲地址是否有效,同時讀取寫均衡數(shù),判斷當(dāng)前數(shù)據(jù)存儲地址所處的數(shù)據(jù)區(qū)寫次數(shù)是否均衡;步驟A3,根據(jù)當(dāng)前數(shù)據(jù)存儲地址讀數(shù)據(jù)區(qū),判斷數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,如果數(shù)據(jù)區(qū)為空,則寫入數(shù)據(jù);步驟A4,將標(biāo)志區(qū)存儲的當(dāng)前數(shù)據(jù)存儲地址更新為最新存儲數(shù)據(jù)地址,數(shù)據(jù)長度增加最新存儲數(shù)據(jù)長度,計算出校驗(yàn)值并更新到標(biāo)志區(qū),同時將下一個待寫入的數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志改為空。進(jìn)一步地,采集數(shù)據(jù)步驟包括:步驟B1,讀取標(biāo)志區(qū)存儲的循環(huán)采集數(shù)據(jù)地址及采集數(shù)據(jù)長度,驗(yàn)證校驗(yàn)值,同時讀取當(dāng)前存儲數(shù)據(jù)地址和存儲數(shù)據(jù)長度,驗(yàn)證校驗(yàn)值;步驟B2,對比當(dāng)前存儲數(shù)地址和循環(huán)采集數(shù)據(jù)地址,確定是否有最新數(shù)據(jù)需要采集;步驟B3,根據(jù)循環(huán)采集數(shù)據(jù)地址讀取對應(yīng)數(shù)據(jù)區(qū)數(shù)據(jù),驗(yàn)證校驗(yàn)值。進(jìn)一步地,嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法還包括修復(fù)數(shù)據(jù)指針步驟,在檢測到數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志為空同時數(shù)據(jù)區(qū)已寫入有存儲數(shù)據(jù)時調(diào)用修復(fù)數(shù)據(jù)指針步驟;修復(fù)數(shù)據(jù)指針步驟包括:步驟C1,讀取標(biāo)志區(qū)中存儲的Flash存儲器最大數(shù)據(jù)地址和最小數(shù)據(jù)地址;步驟C2,根據(jù)最大數(shù)據(jù)地址和最小數(shù)據(jù)地址通過遞歸方法重新定位當(dāng)前數(shù)據(jù)存儲地址。進(jìn)一步地,步驟C2包括:步驟C21,最大數(shù)據(jù)地址與最小數(shù)據(jù)地址相加后除以2,求得當(dāng)前數(shù)據(jù)地址;步驟C22,判斷當(dāng)前數(shù)據(jù)地址所在數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,如果為空,則將當(dāng)前數(shù)據(jù)地址作為最大數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果寫數(shù)據(jù)空標(biāo)志不為空,則執(zhí)行下一個步驟;步驟C23,判斷當(dāng)前數(shù)據(jù)地址及比當(dāng)前數(shù)據(jù)地址小一位的相鄰地址是否為空,如果全為非空,則將當(dāng)前數(shù)據(jù)地址作為最小數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果全為空,則將當(dāng)前數(shù)據(jù)地址作為最大數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果相鄰地址非空而當(dāng)前數(shù)據(jù)地址為空,則將當(dāng)前數(shù)據(jù)地址作為當(dāng)前數(shù)據(jù)存儲地址并退出修復(fù)數(shù)據(jù)指針步驟。進(jìn)一步地,嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法還包括循環(huán)數(shù)據(jù)自動清除步驟,循環(huán)數(shù)據(jù)自動清除步驟在步驟A3之后執(zhí)行,循環(huán)數(shù)據(jù)自動清除步驟包括:步驟D1,將標(biāo)志區(qū)存儲的當(dāng)前數(shù)據(jù)存儲地址更新為最新存儲數(shù)據(jù)地址,判斷最新存儲數(shù)據(jù)地址是否為Flash存儲器的下一個數(shù)據(jù)區(qū),如果不是,則退出,如果是,則執(zhí)行下一步驟;步驟D2,讀取當(dāng)前數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,判斷當(dāng)前數(shù)據(jù)區(qū)是否已經(jīng)存儲數(shù)據(jù),如果為空,則退出,如果不為空,則執(zhí)行下一步驟;步驟D3,讀取標(biāo)志區(qū)的循環(huán)采集數(shù)據(jù)地址,判斷當(dāng)前數(shù)據(jù)區(qū)是否已經(jīng)采集完成,如果沒有采集,則調(diào)用采集數(shù)據(jù)步驟并退出,若已經(jīng)采集完成則執(zhí)行下一步驟;步驟D4,清除當(dāng)前數(shù)據(jù)區(qū)的數(shù)據(jù),并將寫數(shù)據(jù)空標(biāo)志設(shè)為空。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:本發(fā)明通過通過綜合使用鐵電存儲器和Flash存儲器進(jìn)行存儲和采集,鐵電存儲器存儲少量但需要多次讀寫的數(shù)據(jù),F(xiàn)lash存儲器存儲大量而讀寫 次數(shù)少的數(shù)據(jù),通過此種數(shù)據(jù)存儲和采集方式處理,有效提高簡單嵌入式采集終端數(shù)據(jù)穩(wěn)定性,提升效率,同時提高Flash存儲器使用壽命,縮減終端成本。附圖說明圖1為存儲數(shù)據(jù)步驟的流程圖;圖2為采集數(shù)據(jù)步驟的流程圖;圖3為修復(fù)數(shù)據(jù)指針步驟的流程圖;圖4為循環(huán)數(shù)據(jù)自動清除步驟的流程圖。具體實(shí)施方式為了更充分理解本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例對本發(fā)明的技術(shù)方案作進(jìn)一步介紹和說明。本發(fā)明的嵌入式數(shù)據(jù)采集終端的循環(huán)記錄和采集方法在鐵電存儲器設(shè)立用于存放動態(tài)標(biāo)志和位移變量的標(biāo)志區(qū),并將Flash存儲器劃分出多于1個用于循環(huán)存放數(shù)據(jù)的數(shù)據(jù)區(qū)。鐵電存儲器是一種特殊工藝的非易失性的存儲器,是采用人工合成的鉛鋯鈦(PZT)材料形成存儲器結(jié)晶體。當(dāng)一個電場被施加到鐵晶體管時,中心原子順著電場停在低能量狀態(tài)I位置,反之,當(dāng)電場反轉(zhuǎn)被施加到同一鐵晶體管時,中心原子順著電場的方向在晶體里移動并停在另一低能量狀態(tài)。大量中心原子在晶體單胞中移動耦合形成鐵電疇,鐵電疇在電場作用下形成極化電荷。鐵電疇在電場下反轉(zhuǎn)所形成的極化電荷較高,鐵電疇在電場下無反轉(zhuǎn)所形成的極化電荷較低,這種鐵電材料的二元穩(wěn)定狀態(tài)使得鐵電可以作為存儲器。這種特性使鐵電存儲器在掉電后仍能夠繼續(xù)保存數(shù)據(jù),寫入速度快且具有無限次寫入壽命,不容易寫壞。所以,與閃存和EEPROM等較早期的非易失性內(nèi)存技術(shù)比較,鐵電存儲器具有更高的寫入速度和更長的讀寫壽命。Flash存儲器的英文名稱是"FlashMemory",一般簡稱為"Flash",它屬于內(nèi)存器件的一種,是一種不揮發(fā)性(Non-Volatile)內(nèi)存。Flash存儲器的物理特性與常見的內(nèi)存有根本性的差異:目前各類DDR、SDRAM或者RDRAM都屬于揮發(fā)性內(nèi)存,只要停止電流供應(yīng)內(nèi)存中的數(shù)據(jù)便無法保持,因此每次電腦開機(jī)都需要把數(shù)據(jù)重新載入內(nèi)存;Flash存儲器在沒有電流供應(yīng)的條件下也能夠長久地保持?jǐn)?shù)據(jù),其存儲特性相當(dāng)于硬盤,這項(xiàng)特性正是Flash存儲器得以成為各類便攜型數(shù)字設(shè)備的存儲介質(zhì)的基礎(chǔ)。Flash存儲器是非易失存儲器,可以對稱為塊的存儲器單元塊進(jìn)行擦寫和再編程。任何Flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除,每個塊的最大擦寫次數(shù)是十萬次。Flash存儲器容量大但是擦寫次數(shù)有限,不能經(jīng)常擦寫。鐵電存儲器可無限次寫入,但是容量較小,大容量成本較高。綜合這兩類存儲器的特點(diǎn),容量小寫入次數(shù)不限制的鐵電存儲器用于存放動態(tài)標(biāo)志和位移變量,容量大不能經(jīng)常擦寫的Flash存儲器用于循環(huán)存放批量數(shù)據(jù),保證擦寫次數(shù)均衡。鐵電存儲器動態(tài)寫入Flash存儲器數(shù)據(jù)存放的位移地址,其中地址包含:起始地址、循環(huán)采集地址、循環(huán)存儲地址、最大記錄地址、數(shù)據(jù)長度、數(shù)據(jù)檢驗(yàn)等信息。本發(fā)明實(shí)施例的具體流程如圖1至圖4所示。循環(huán)記錄和采集方法包括存儲數(shù)據(jù)步驟、采集數(shù)據(jù)步驟、修復(fù)數(shù)據(jù)指針步驟和循環(huán)數(shù)據(jù)自動清除步驟。存儲數(shù)據(jù)步驟找出標(biāo)志區(qū)中存儲的當(dāng)前數(shù)據(jù)存儲地址后將數(shù)據(jù)存儲到數(shù)據(jù)區(qū)內(nèi),采集數(shù)據(jù)步驟找出標(biāo)志區(qū)中存儲的循環(huán)采集數(shù)據(jù)地址后從數(shù)據(jù)區(qū)內(nèi)采集數(shù)據(jù)。如圖1所示,存儲數(shù)據(jù)步驟包括:步驟A1,讀取標(biāo)志區(qū)中Flash存儲器的當(dāng)前數(shù)據(jù)存儲地址和數(shù)據(jù)長度,并驗(yàn)證校驗(yàn)值;步驟A2,讀取標(biāo)志區(qū)中Flash存儲器的最大數(shù)據(jù)地址和最小數(shù)據(jù)地址, 判斷當(dāng)前數(shù)據(jù)存儲地址是否有效,同時讀取寫均衡數(shù),判斷當(dāng)前數(shù)據(jù)存儲地址所處的數(shù)據(jù)區(qū)寫次數(shù)是否均衡;步驟A3,根據(jù)當(dāng)前數(shù)據(jù)存儲地址讀數(shù)據(jù)區(qū),判斷數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,如果數(shù)據(jù)區(qū)為空,則寫入數(shù)據(jù);步驟A4,將標(biāo)志區(qū)存儲的當(dāng)前數(shù)據(jù)存儲地址更新為最新存儲數(shù)據(jù)地址,數(shù)據(jù)長度增加最新存儲數(shù)據(jù)長度,計算出校驗(yàn)值并更新到標(biāo)志區(qū),同時將下一個待寫入的數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志改為空。在步驟A1中,F(xiàn)lash存儲器的當(dāng)前數(shù)據(jù)存儲地址、數(shù)據(jù)長度和校驗(yàn)值均保存在鐵電存儲器的標(biāo)志區(qū)中。在步驟A2中,當(dāng)前數(shù)據(jù)存儲地址若不在Flash存儲器的最大數(shù)據(jù)地址和最小數(shù)據(jù)地址之間,則為無效,此時退出存儲數(shù)據(jù)步驟并進(jìn)行提醒。步驟A2中,寫均衡數(shù)表明了該數(shù)據(jù)區(qū)曾經(jīng)寫入的次數(shù),將該數(shù)與其他數(shù)據(jù)區(qū)的寫均衡數(shù)進(jìn)行對比,如果數(shù)據(jù)區(qū)寫入次數(shù)過多,便跳到下一個數(shù)據(jù)區(qū)寫入,這樣可以避免其中某個數(shù)據(jù)區(qū)寫入過多而壽命過短。在步驟A3中,如果數(shù)據(jù)區(qū)不為空,則跳到下一個數(shù)據(jù)區(qū)寫入。如圖2所示,采集數(shù)據(jù)步驟包括:步驟B1,讀取標(biāo)志區(qū)存儲的循環(huán)采集數(shù)據(jù)地址及采集數(shù)據(jù)長度,驗(yàn)證校驗(yàn)值,同時讀取當(dāng)前存儲數(shù)據(jù)地址和存儲數(shù)據(jù)長度,驗(yàn)證校驗(yàn)值;步驟B2,對比當(dāng)前存儲數(shù)地址和循環(huán)采集數(shù)據(jù)地址,確定是否有最新數(shù)據(jù)需要采集,如果沒有新的數(shù)據(jù)需要采集,則退出采集數(shù)據(jù)步驟,如果有,則執(zhí)行下一步驟;步驟B3,根據(jù)循環(huán)采集數(shù)據(jù)地址讀取對應(yīng)數(shù)據(jù)區(qū)數(shù)據(jù),驗(yàn)證校驗(yàn)值。在采集數(shù)據(jù)步驟中,循環(huán)采集數(shù)據(jù)地址為Flash存儲器的數(shù)據(jù)地址,是上一次采集數(shù)據(jù)完畢之后數(shù)據(jù)指針?biāo)赶虻牡刂?。在檢測到數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志為空同時數(shù)據(jù)區(qū)已寫入有存儲數(shù)據(jù)時便會調(diào)用修復(fù)數(shù)據(jù)指針步驟,因而修復(fù)數(shù)據(jù)指針步驟在數(shù)據(jù)存儲的任一過程中都有可能調(diào)用。如圖3所示,修復(fù)數(shù)據(jù)指針步驟包括:步驟C1,讀取標(biāo)志區(qū)中存儲的Flash存儲器最大數(shù)據(jù)地址和最小數(shù)據(jù)地址;步驟C2,根據(jù)最大數(shù)據(jù)地址和最小數(shù)據(jù)地址通過遞歸方法重新定位當(dāng)前數(shù)據(jù)存儲地址。其中,步驟C2包括:步驟C21,最大數(shù)據(jù)地址與最小數(shù)據(jù)地址相加后除以2,求得當(dāng)前數(shù)據(jù)地址;步驟C22,判斷當(dāng)前數(shù)據(jù)地址所在數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,如果寫數(shù)據(jù)空標(biāo)志為空,則將當(dāng)前數(shù)據(jù)地址作為最大數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果寫數(shù)據(jù)空標(biāo)志不為空,則執(zhí)行下一個步驟;步驟C23,判斷當(dāng)前數(shù)據(jù)地址及比當(dāng)前數(shù)據(jù)地址小一位的相鄰地址是否為空,如果全為非空,則將當(dāng)前數(shù)據(jù)地址作為最小數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果全為空,則將當(dāng)前數(shù)據(jù)地址作為最大數(shù)據(jù)地址并重復(fù)執(zhí)行步驟C21,如果相鄰地址非空而當(dāng)前數(shù)據(jù)地址為空,則將當(dāng)前數(shù)據(jù)地址作為當(dāng)前數(shù)據(jù)存儲地址并退出修復(fù)數(shù)據(jù)指針步驟。修復(fù)數(shù)據(jù)指針步驟在數(shù)據(jù)存儲的任一過程中都有可能調(diào)用,故其時間效率是非常重要的因素。本發(fā)明通過遞歸方法查找數(shù)據(jù)存儲地址,其耗時低,工作效率高。本發(fā)明的遞歸方法所耗時間可采用迭代法進(jìn)行計算。迭代基本方程為:迭代過程如下:直到時,遞歸過程結(jié)束,此時:以下為實(shí)驗(yàn)測試數(shù)據(jù):測試條件:F=5Mhz,F(xiàn)lash讀取數(shù)據(jù)速度1000μs。數(shù)據(jù)條數(shù)(萬條)計算耗時(μs)實(shí)際耗時(μs)129000305001035000372801004100050190本實(shí)施例的循環(huán)數(shù)據(jù)自動清除步驟在步驟A3之后執(zhí)行。如圖4所示,循環(huán)數(shù)據(jù)自動清除步驟包括:步驟D1,將標(biāo)志區(qū)存儲的當(dāng)前數(shù)據(jù)存儲地址更新為最新存儲數(shù)據(jù)地址,判斷最新存儲數(shù)據(jù)地址是否為Flash存儲器的下一個數(shù)據(jù)區(qū),如果不是,則退出循環(huán)數(shù)據(jù)自動清除步驟,如果是,則執(zhí)行下一步驟;步驟D2,讀取當(dāng)前數(shù)據(jù)區(qū)的寫數(shù)據(jù)空標(biāo)志,判斷當(dāng)前數(shù)據(jù)區(qū)是否已經(jīng)存儲數(shù)據(jù),如果為空,則退出循環(huán)數(shù)據(jù)自動清除步驟,如果不為空,則執(zhí)行下一步驟;步驟D3,讀取標(biāo)志區(qū)的循環(huán)采集數(shù)據(jù)地址,判斷當(dāng)前數(shù)據(jù)區(qū)是否已經(jīng)采集完成,如果沒有采集,則調(diào)用采集數(shù)據(jù)步驟并退出循環(huán)數(shù)據(jù)自動清除 步驟,若已經(jīng)當(dāng)前數(shù)據(jù)區(qū)采集完成則執(zhí)行下一步驟;步驟D4,清除當(dāng)前數(shù)據(jù)區(qū)的數(shù)據(jù),并將寫數(shù)據(jù)空標(biāo)志設(shè)為空。以上陳述僅以實(shí)施例來進(jìn)一步說明本發(fā)明的技術(shù)內(nèi)容,以便于讀者更容易理解,但不代表本發(fā)明的實(shí)施方式僅限于此,任何依本發(fā)明所做的技術(shù)延伸或再創(chuàng)造,均受本發(fā)明的保護(hù)。當(dāng)前第1頁1 2 3