摘 要:介紹一種記錄系統信息表的設計方法,并根據實踐經驗提出優化措施。通過對信息表進行備份、對備份信息表單獨刷新、對備份信息表位置的精心設計等措施,保證信息表能效記錄數據關鍵信息,并且兩份信息表不會同時被破壞。通過對備份信息表的自動讀取保證系統在一個信息表遭到意外破壞時系統仍能正常工作,并自動恢復被損壞的信息表,在數據保護和系統穩定工作方面具有重要意義。
關鍵詞:記錄系統;信息表;電子盤;刷新;邏輯扇區
中圖分類號:TP311 文獻標識碼:B 文章編號:1004-373X(2008)02-087-03
A Method of Designing and Optimizing Information Table in Recording System
GAO Xianfeng,XIANG Bing
(China Airborne Missile Academy,Luoyang,471009,China)
Abstract: This paper introduces a method of designing information table in recording system and gives an optimized method used in actual applications.The designing method ensures that information table can recording important information of the recorded data and two information tables will not be destroyed at the same time through backupping the information table,separately updating backup information table and carefully placing backup information table.The recording system ensures that when one of the two information table is destroyed,the recording system can work normally and recover the destroyed information table through getting the other automatically.It is significant to data-protecting and the recording system reliably working.
Keywords:recording system;information table;E-disk;update;logic sector
記錄系統中信息表的作用是存儲系統加電次數、每次加電記錄數據的起始位置和結束位置等關鍵信息。系統每次加電時都要讀取信息表,從中獲取上次系統加電時已經記錄的數據位置,并確定新數據的起始位置;數據處理系統在處理數據前要讀取信息表,確定每次加電的起始位置和結束位置,以便正確地分段處理數據。若信息表遭到損壞,當系統再次記錄時將無法找到起始記錄位置,無法正常工作;數據處理軟件也無法正確讀取已經存儲的數據。因此信息表是記錄系統的核心部分之一,信息表的設計將影響到記錄系統工作的穩定性。
1 一種記錄系統信息表的設計思路
1.1 記錄系統原理介紹
本文設計的記錄系統是以FPGA為控制核心,以電子盤為存儲器, FPGA通過對電子盤邏輯扇區的直接讀寫實現對各類數據記錄的通用記錄系統。系統原理圖見圖1。記錄系統開始工作前要先用指定文件系統格式化電子盤,然后使用專用的處理軟件在電子盤內產生若干個文件,以P000,P001,…,PXXX依次標識,其中P000用于存放記錄信息表,其余用于存放記錄數據。文件分配好后,使用工具獲取文件P000的起始邏輯扇區地址,并通過計算獲得其余文件的邏輯扇區地址,記錄系統通過對邏輯扇區地址的讀寫實現數據的存儲。
記錄系統的工作過程如下:
系統加電即開始工作,首先是系統復位,復位完成后,系統在FPGA內部建立與信息表大小格式一致的信息表緩存,接著系統從P000文件中讀取信息表,將讀取的信息表內容存入緩存,同時獲取信息表中記錄的本次加電前系統加電次數及上次記錄的結束文件號;然后把獲取的系統加電次數加“1”后存入緩存中相應位置,把上次結束文件號加“1”后作為本次記錄開始文件號和結束文件號存入緩存,再將更新后的信息表緩存中數據存入信息表文件。然后,判斷加電次數和文件號是否達到最大,若二者任意一個達到最大,則停止工作并給出存儲器寫滿指示;若二者均沒有達到最大,系統就把前端采集的數據按照預先安排好的幀格式寫入本次結束文件號指定的文件;當數據寫滿一個文件后,系統把本次記錄結束文件號加“1”,存入緩存后更新信息表并判斷文件號是否達到最大,接下來重復此過程,直到系統斷電或存儲器寫滿。系統工作流程如圖2所示。
1.2 記錄系統中信息表的設計
該信息表存放在信息表文件P000的第1個扇區,為保證系統可靠性,系統設計了一個與之完全一樣的備份信息表,緊隨其后,放在信息表文件的第2個扇區。初始狀態信息表標志字首尾一致,均為EB90(H),系統每更新一次信息表,都要把標志字按位取反一次(EB90(H)按位取反后為146F(H),反之亦然)。若信息表被正常更新,則首尾標志字仍然一致,若信息表更新中出現錯誤,則首尾標志字不一致。若系統在讀取時發現信息表標志字不是EB90(H)或146F(H)其中之一或者首尾標志字不一致則自動讀取備份信息表,若2份信息表都不正確,則系統停止工作,給出信息表錯誤提示[1]。
1.3 在本系統中信息表的設計缺陷
在實際應用中該記錄系統曾出現停止工作的情況,分析信息表文件時發現2個信息表內容全部被改寫為“FF”,系統無法獲取正確的信息表,故停止工作。
經進一步分析認為,由于系統中采用電子盤作為存儲器,而電子盤受其工作機理的限制,在斷電瞬間由于電源的抖動等原因,寫入的數據是不確定的,可能會有一定數量的數據被改寫為“FF(H)”,而此不確定數據的最大數量等于電子盤默認的一次寫入的扇區數256扇區(即128 kB)。如果斷電瞬間,系統正在更新信息表,信息表將有可能被破壞,而由于備份信息表與其相鄰,斷電瞬間寫入的不確定數據也會將其覆蓋,這樣2個信息表都將遭到破壞,系統再次加電或數據處理軟件處理數據時就找不到相關加電信息和數據存儲位置信息,系統將無法正常工作。
2 記錄系統信息表的優化設計
2.1 備份信息表的存放位置設計
由于設計中備份信息表和第一信息表相鄰放置,如果系統正在更新第一信息表時發生突然斷電,錯誤影響范圍將覆蓋備份信息表的全部內容,造成2份信息表全部損壞。如果把備份信息表放在第一信息表時發生突然斷電造成錯誤的數據范圍之外,則能保證備份信息表不被破壞;如果系統正在刷新備份信息表時發生突然斷電,則第一信息表是完好的(見圖3)。
由于發生突然斷電造成的錯誤數據范圍最大為128 kB,因此,把設計中備份信息表的位置由原來的緊隨第一信息表之后,更改為放在第一信息表后512 kB(1 024扇區)的位置,即第一信息表占用P000的第1個扇區,備份信息表占用[GK!5]P000的第1 025個扇區,遠離可能遭到破壞的區域,保證其安全可靠,信息表存放示意圖如圖3所示。
2.2 備份信息表的刷新時刻設計
在原記錄系統中,信息表刷新完成后即開始對備份信息表刷新,二者在時序上的相鄰關系也存在著在斷電時數據被改寫的可能性。因此,把原系統中的刷新信息表和刷新備份信息表的時序關系做了調整,即刷新完畢第一信息表后,并不立即刷新備份信息表,而是先去寫入數據文件,當數據被寫入該文件的二分之一時,暫停數據寫入,刷新備份信息表,完成后再繼續寫入記錄數據。新舊信息表刷新過程對比如圖4所示。
2.3 優化后記錄系統的使用效果
從原理上分析認為優化后的記錄信息表能滿足系統要求,在存放位置和刷新時刻上,均保證了2個信息表的分別刷新。在一個信息表刷新過程中遇到錯誤、遭到破壞,不會影響到另一個信息表,其能保證系統穩定工作。
信息表經優化后的記錄系統在驗證試驗中,由于信息表的刷新時間非常短,恰巧正在刷新信息表時出現故障的機率非常小。雖然經多次斷電試驗,可僅遇到一次系統正在刷新信息表時斷電的情況:第一個信息表及其下面相鄰12 kB的數據全部改寫為“FF(H)”,后面的備份信息表數據正常,經再次加電驗證,系統正確地從備份信息表中讀取到記錄信息,工作正常,并恢復了被破壞的信息表,證明了系統工作的穩定可靠。該系統目前已經投入使用。
3 結 語
經過優化的記錄系統信息表能可靠地記錄數據在電子盤中的存儲信息,并能實時更新,保證了信息的有效性;備份信息表的位置和刷新方式保證了即使遇到正在刷新
信息表時突然斷電等異常情況,兩份信息表至少有一份是完好的。系統自動從完好的信息表中讀取信息,并恢復被破壞的信息表,能夠保證記錄系統穩定可靠地工作。
參 考 文 獻
[1]向冰,高宇.新一代彈載高速記錄系統[J].航空兵器,2007(3):54-56.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。