本發明專利技術采用一種嵌入式系統中基于使用描述表的數據操作方法,該方法是利用FLASH、FRAM和SDRAM(或者DDR)三種存儲器構成的一個嵌入式系統內存完成的,該方法包括步關鍵數據初始化、新增關鍵數據操作、刪除關鍵數據、關鍵數據恢復四個步驟。采用本發明專利技術所述的技術方案優點在于:根據FRAM中的關鍵數據使用描述表的狀態來把關鍵數據增加到FLASH中或者從FLASH中刪除,由于采用先備份數據再增加或刪除數據的操作方法,即便在數據操作時系統出現異常,系統也可以恢復到數據操作前的狀態,從而保證了關鍵數據的安全性和系統的可靠性。
【技術實現步驟摘要】
本專利技術涉及數據操作方法
,尤其涉及。
技術介紹
嵌入式系統具有低功耗,便攜等特點,常常用于各種工業產品及民用產品中,如各種工業生產、消防和安防系統中都用到嵌入式系統。嵌入式系統通常脫離個人電腦或工業主機(如工控機),自成獨立系統。由于尺寸要求等原因,嵌入式系統存儲空間往往有限;又因為嵌入式系統常常應用于各種安全性要求比較高的場合,因此數據的可靠操作變得十分重要。以嵌入式考勤系統或門禁系統為例,考勤機需要采集人臉或指紋等用戶樣本,并通過算法提取用戶樣本特征,把樣本特征存儲于非易失性的存儲器(通常是指FLASH)中,以此樣本特征作為模板。當用戶考勤時,考勤系統實時采集新的用戶樣本,并通過算法提取新樣本特征,然后與存儲于系統中的所有樣本特征比對,如果有模板與之匹配,則考勤成功,并產生考勤成功記錄,方便日后查詢和考核;如果沒有任何模板與之匹配,則考勤失敗。因此特征數據是非常重要的,對其操作必須安全可靠,否則系統將產生嚴重故障。另一個例子是安防系統,如分布式光纖振動測量系統,系統通過模式識別學習訓練算法獲取一系列樣本特征,并存儲于非易失性的存儲器(通常是指FLASH)中,以此樣本特征作為模板。系統在線監測時,當振動事件發生后,系統采集到了事件數據并通過模式識別算法提取事件特征,然后與所有模板樣本特征做比對,獲得若干個值,選取與某個樣本(假設為樣本M)最相似的值V,判定如果V高于閥值,則認為此振動事件屬于M事件,然后產生報警記錄,并把報警記錄保存于非易失性存儲器中,便于事后查詢;否則,如果判定結果為小于閥值,則認為沒有事件發生,或者忽略不計。上述兩個嵌入式系統代表了此類應用的共同特性,即有樣本關鍵數據(如特征數據)的存儲或刪除等操作。由于此類系統應用于重要場合,因此數據的安全操作需要非常重視。如果操作不當,造成樣本特征數據或記錄數據丟失,則后果是災難性的,既無法恢復也無法修補,因此必須采取有效的措施防止關鍵數據丟失。嵌入式系統的關鍵數據如數據庫、特征數據、操作系統等一般都存于非易失性存儲器中,因此通常都用到FLASH存儲器。FLASH存儲器一般分為很多個SECTOR,每個SECTOR包括一定數量的存儲單元。對于大容量的FLASH,還分為不同的BANK,每個BANK還包括一定數目的SECTOR。FLASH的擦除操作一般都是以SECTOR、BANK或者是整片FLASH為單位。在對FLASH進行寫操作的時候,每個BIT可以通過編程由I編為0,但不可以由O修改為I。為了保證寫操作的正確性,在執行寫操作前,都要執行擦除操作。擦除操作會把FLASH的一個SECT0、一個BANK或者是整片FLASH的值都修改為OxFF,這樣寫操作就可以正確完成了。一般數據操作方法為把數據寫入到分配好的存儲空間去,需要時讀取;增加數據時(如增加新的樣本特征數據)往分配好的空余的空間寫入新數據。此類方法的缺陷是當數據在操作時(比如寫操作),一旦發生斷電或其它異常狀況使得系統進入失控狀態,則寫入的數據可能沒寫完整,而原來的數據又可能已被刪除,由此造成數據的不完整性或者丟失。斷電重啟或系統復位后,系統無法恢復到原來的狀態,導致系統出現災難性后果。
技術實現思路
為了解決現有技術中存在的問題,本專利技術提供,以保證數據庫、特征數據、操作系統等關鍵數據的安全性和系統的可靠性。為了達到上述目的,本專利技術采用,所述數據操作方法是利用FLASH、FRAM和SDRAM(或者DDR)三種存儲器構成的一個嵌入式系統內存完成的,該方法包括以下四個步驟 步驟一關鍵數據初始化在系統設計時,把FLASH劃分成如特征數據區、記錄數據區、操作系統區、數據庫區等多個空間,每個區包括至少一個SECTOR ;進一步的,對FLASH所有的SECTOR進行編號,特別地,保留一個SECTOR,用來作為數據轉儲(數據備份)操作;進一步的,把關鍵數據空間劃分為N個關鍵數據空間子塊,每個關鍵數據空間子塊的大小為一條關鍵數據量的大小;進一步的,對所述關鍵數據空間子塊進行編號,編號依次從1、2...到N ;在FRAM里面建立一張關鍵數據使用描述表,開辟一個空間作為關鍵數據轉儲操作的標記;進一步的,所述關鍵數據使用描述表用以描述FLASH中每條關鍵數據的使用情況,如果已經有有效數據寫入的,就是有效的,反之如果是空白的,則是無效的(不可用);進一步的,所述關鍵數據使用描述表用位(bit)表示,每個位對應一條關鍵數據;當某一條關鍵數據已經登記(錄入)時,表明這條關鍵數據已經占用了某個FLASH關鍵數據空間子塊,這時在關鍵數據使用描述表相應的位置置I ;否則,那些尚未被登記(即無效)的關鍵數據空間子塊,其關鍵數據使用描述表對應的位置則置O ;進一步的,所述關鍵數據轉儲操作的標記中存放兩個字節型的標記A和B,以及發生轉儲操作的FLASH的SECTOR編號;在SDRAM中開辟一個空間,空間大小跟FLASH中關鍵數據空間大小一樣,且FRAM中關鍵數據使用描述表中的每一位都對應著FLASH和SDRAM中關鍵數據空間的一個關鍵數據空間子塊,FLASH的每一個關鍵數據空間子塊和SDRAM中的每一個關鍵數據空間子塊--對應;步驟二 新增關鍵數據操作當一條新的關鍵數據準備好之后,先讀取FRAM中的關鍵數據使用描述表,根據這張表找出FLASH中任何一個尚未被使用的關鍵數據空間子塊i,并可算出其所在FLASH中的扇區號,假設其扇區號為k ;然后執行關鍵數據增加操作第一步,擦除FLASH中用于備份的SECTOR ;第二步,設置FRAM中的轉儲標記,其中設置A = 0,B= 1,SECTOR編號=k ;第三步,讀取FLASH中編號為k的SECTOR中的全部數據到SDRAM,然后把這部分數據寫入FLASH中用于備份的SECTOR中,并做校驗,這一步叫做轉儲;弟四步,如果轉儲成功,則設直FRAM中的轉儲標記,其中設直A = 1,B = I ;如果系統發生異常,則FRAM中的轉儲標記A = 0,B = I不會改變;第五步,在SDRAM的關鍵數據區中找到編號為i特征數據子塊,把要增加的關鍵數據寫入這個關鍵數據子塊空間;第六步,設置FRAM中的轉儲標記,其中設置A = 1,B = O ;第七步,擦除FLASH中編號為k的SECTOR ;第八步,把SDRAM中與FLASH編號為k的SECTOR相對應的數據塊(一個SECTOR大小的數據塊)寫入FLASH中編號為k的SECTOR中,并做校驗;第九步,如果第八步寫入成功,則設置FRAM中的轉儲標記,其中設置A= 1,B= I ;如果系統發生異常,則設置FRAM中的轉儲標記A = 1,B = 0,SECTOR編號=k,不會改變;第十步,設置FRAM中的關鍵數據使用描述表的第i位為I,表明FLASH中與此相對應的關鍵數據空間子塊已經有效;步驟三刪除關鍵數據操作當要刪除一條已經登記(已存在于FLASH中)的關鍵數據時,先找出這條關鍵數據在FLASH中的位置,例如其位置在編號為k的SECTOR中,所在的關鍵數據空間子塊編號為i ;刪除操作如下第一步,設置FRAM中的轉儲標記,其中設置A = 0,B= 1,SECTOR編號=k ;第二步,擦除FLASH中用于備份的SECTOR ;第三步,讀取FL本文檔來自技高網...
【技術保護點】
一種嵌入式系統中基于使用描述表的數據操作方法,所述數據操作方法是利用FLASH、FRAM和SDRAM三種存儲器構成的一個嵌入式系統內存完成的,其特征在于:該方法包括以下四個步驟:步驟一:關鍵數據初始化在系統設計時,把FLASH劃分成如關鍵數據區、記錄數據區、操作系統區、數據庫區等多個空間,每個區包括至少一個SECTOR;進一步的,對FLASH所有的SECTOR進行編號,特別地,保留一個SECTOR,用來作為數據轉儲(數據備份)操作;進一步的,把關鍵數據區劃分為N個關鍵數據空間子塊,每個關鍵數據空間子塊的大小為一條關鍵數據量的大小;進一步的,對所述關鍵數據空間子塊進行編號,編號依次從1、2...到N;在FRAM里面建立一張關鍵數據使用描述表,開辟一個空間作為關鍵數據轉儲操作的標記區;進一步的,所述關鍵數據使用描述表用以描述FLASH中每條關鍵數據的使用情況,如果已經有有效數據寫入的,就是有效的,反之如果是空白的,則是無效的(不可用);進一步的,所述關鍵數據使用描述表用位(bit)表示,每個位對應一條關鍵數據;當某一條關鍵數據已經登記(錄入)時,表明這條關鍵數據已經占用了某個FLASH關鍵數據空間子塊,這時在關鍵數據使用描述表相應的位置置1;否則,那些尚未被登記(即無效)的關鍵數據空間子塊,其關鍵數據使用描述表對應的位置則置0;進一步的,所述關鍵數據轉儲操作的標記區中存放兩個字節型的標記A和B,以及發生轉儲操作的FLASH的SECTOR編號;在SDRAM中開辟一個空間,空間大小跟FLASH中關鍵數據區大小一樣,且FRAM中關鍵數據使用描述表中的每一位都對應著FLASH和SDRAM中關鍵數據區的一個關鍵數據空間子塊,FLASH的每一個關鍵數據空間子塊和SDRAM中的每一個關鍵數據空間子塊一一對應;步驟二:新增關鍵數據當一條新的關鍵數據準備好之后,先讀取FRAM中的關鍵數據使用描述表,根據這張表找出FLASH中任何一個尚未被使用的關鍵數據空間子塊i,并可算出其所在FLASH中的扇區號,假設其扇區號為k;然后執行關鍵數據增加操作:第一步,擦除FLASH中用于備份的SECTOR;第二步,設置FRAM中的轉儲標記,其中設置A=0,B=1,SECTOR編號=k;第三步,讀取FLASH中編號為k的SECTOR中的全部數據到SDRAM,然后把這部分數據寫入FLASH中用于備份的SECTOR中,并做校驗,這一步叫做轉儲;第四步,如果轉儲成功,則設置FRAM中的轉儲標記,其中設置A=1,B=1;如果系統發生異常,則FRAM中的轉儲標記A=0,B=1不會改變;第五步,在SDRAM的關鍵數據區中找到編號為i關鍵數據子塊,把要增加的關鍵數據寫入這個關鍵數據子塊空間;第六步,設置FRAM中的轉儲標記,其中設置A=1,B=0;第七步,擦除FLASH中編號為k的SECTOR;第八步,把SDRAM中與FLASH編號為k的SECTOR相對應的數據塊(一個SECTOR大小的數據塊)寫入FLASH中編號為k的SECTOR中,并做校驗;第九步,如果第八步寫入成功,則設置FRAM中的轉儲標記,其中設置A=1,B=1;如果系統發生異常,則設置FRAM中的轉儲標記A=1,B=0,SECTOR編號=k,不會改變;第十步,設置FRAM中的關鍵數據使用描述表的第i位為1,表明FLASH中與此相對應的關鍵數據空間子塊已經有效;步驟三:刪除關鍵數據當要刪除一條已經登記(已存在于FLASH中)的關鍵數據時,先找出這條關鍵數據在FLASH中的位置,例如其位置在編號為k的SECTOR中,所在的關鍵數據空間子塊編號為i;刪除操作如下:第一步,設置FRAM中的轉儲標記,其中設置A=0,B=1,SECTOR編號=k;第二步,擦除FLASH中用于備份的SECTOR;第三步,讀取FLASH中編號為k的SECTOR中的全部數據到SDRAM,然后把這部分數據寫入FLASH中用于備份的SECTOR中,并做校驗,完成轉儲;第四步,如果轉儲成功,則設置FRAM中的轉儲標記,其中設置A=1,B=1;如果系統發生異常,則FRAM中的轉儲標記A=0,B=1不會改變;第五步,在FRAM中的關鍵數據使用描述表里找出與要刪除的編號為 i的關鍵數據空間子塊相對應的位置,設置該位為0;步驟四:關鍵數據恢復若系統在新增關鍵數據操作和刪除關鍵數據操作時發生異常故障,導致關鍵數據丟失,待系統重新上電或者復位后,關鍵數據恢復步驟如下:第一步,讀取備份SECTOR的數據到SDRAM中,獲得備份數據,此時FRAM中的轉儲標記沒有改變,即A...
【技術特征摘要】
【專利技術屬性】
技術研發人員:黃正,
申請(專利權)人:上海華魏光纖傳感技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。