鄭瀟





摘 要:本文介紹了一種安全快速存儲機頂盒系統信息的方法。通過在閃存(Flash Memory)中建立有效的塊備份機制,保證數據存儲的安全;通過控制數據在Flash塊中不同位置上輪流存儲,減少塊擦除的頻率,從而提高數據存儲的速度,并延長Flash的使用壽命。
關鍵詞:機頂盒;閃存;塊;塊擦除
中圖分類號:TP333 文獻標識碼:A 文章編號:1003-5168(2019)17-0028-03
Abstract: This paper introduced a safe and fast way to store the information of STB system. To assure the security of data storage, an effective block backup mechanism is established in Flash Memory. By controlling the data to be stored in turn from the different positions in Flash block, reduced the frequency of block abrasion , so improve the speed of data storage and active the life of Flash .
Keywords: STB block;flash memory;block;block erase
1 研究背景
閃存是一種非易失性存儲器,可以對塊的存儲器單元塊進行擦寫和再編程。任何Flash器件的寫入操作只能在空或已擦除的單元內進行,所以,大多數情況下,在進行寫入操作之前,必須先執行塊擦除操作。NOR Flash和NAND Flash是現在市場上兩種主要的非易失閃存器。由于介紹的機頂盒采用的是NOR Flash,因此,本文只對NOR Flash進行重點介紹。Intel于1988年首先開發出NOR Flash 技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。NOR Flash的優點是:①芯片內執行,這樣應用程序可以直接在Flash內運行,不必再把代碼讀到系統RAM中;②傳輸效率很高;③存儲數據保存時間長;④擦寫次數高達10萬次以上;⑤數據更新速度比EPROM和EEPROM快。但是,低寫入和擦除速度大大影響其性能[1-3]。
近年來,隨著數字電視產業的不斷發展,作為數字電視終端的數字電視機頂盒被越來越多的用戶所使用。機頂盒需要對系統信息(語言、音量、分辨率、節目數等)、節目庫、CA信息等數據進行存儲,所以NOR Flash廣泛應用于傳統數字電視機頂盒中。由于NOR Flash進行數據存儲前必須進行塊擦除操作,因此,在實際使用NOR Flash過程中存在以下幾個問題:①存儲大量數據時需要等待較長時間;②存儲數據時斷電會造成數據丟失;③頻繁擦寫數據塊,易造成Flash損壞。綜上所述,如何保證數據存儲的安全及減少塊擦除的次數是本文論述的重點。
2 實際項目中遇到的問題
在負責的實際項目中,曾經有印度用戶反饋機頂盒在使用過程中存在概率性丟失系統信息的問題,給用戶使用帶來一定困擾。該款機頂盒由主芯片(MSD5017)、內存(H5PS5162GFR-S6C)、閃存(MX25L6455EXCI)和Tuner(TDA18250)四大模塊組成。經技術支持確認,當機頂盒在保存系統信息過程中斷電,很容易出現數據丟失的問題。經軟件工程師的分析定位,由于閃存模塊的固有特性(存儲數據前必須進行塊擦除),所以,機頂盒在存儲系統信息的過程中斷電,就會引起機頂盒系統信息的丟失。由于先前機頂盒存儲系統信息的方法是直接將數據存儲于Flash指定塊中,當系統信息需要更新時,必須先將塊中的數據保存到內存中,然后擦除該塊,最后再將更新后的系統信息寫入該塊。因此,如果在存儲數據過程中斷電,就會出現系統信息丟失的問題。為了解決機頂盒系統信息丟失的問題,并延長Flash使用壽命,本文設計出一種安全快速存儲機頂盒系統信息的方法,能保證數據讀寫的安全,并減少Flash塊的擦寫次數,延長Flash使用壽命。
3 具體實施方式
3.1 存儲數據的結構及數據在塊中位置
本文設計的安全快速存儲機頂盒系統信息的方法中,存儲數據的結構由系統信息和具有有效標志的頭部(0x12345678)組成,其結構如圖1所示。通過查找有效標志的頭部,找到塊中讀寫系統信息的偏移地址,從而達到快速讀寫數據的目的。數據在塊中的位置如圖2所示,塊由帶有有效標志頭部的系統信息、未存儲數據的空間、塊有效標識符(TAG)組成。
3.2 塊選擇
一種安全快速存儲機頂盒系統信息的方法中塊選擇流程如圖3所示。
Flash中分配A和B兩塊(塊大小為64KB),A和B兩塊交替存儲,保證數據存儲的安全。A和B兩塊的最后4個字節用于存儲塊有效標識符(TAG),標識符的值范圍從0x00000001到0xFFFFFFFE,超出其范圍時,從0x00000001開始重新循環。若哪個塊的有效標識符的值大(特殊情況0x00000001大于0xFFFFFFFE),哪個塊就是當前讀寫操作的有效塊。如A和B兩塊有效標識符(TAG)都為0xFFFFFFFF,將A塊擦除后選擇A塊為有效塊。塊選擇步驟如下。
步驟1:讀取TAGA和TAGB。
步驟2:判斷TAGA和TAGB是否均有效,是進入步驟4,否進入步驟3。
步驟3:判斷TAGA是否大于TAGB,是進入步驟4,否進入步驟5。
步驟4:選擇A塊為有效塊。
步驟5:選擇B塊為有效塊。
3.3 讀操作
一種安全快速存儲機頂盒系統信息的方法中讀操作流程圖如圖4所示,具體包括以下步驟。
步驟1:通過比較TAGA和TAGB選擇有效塊。
步驟2:假設塊的大小為BlockSize,從塊的BlockSize-8開始向前讀取,每4個字節讀取一次數據,直到讀取到的數據不為0xFFFFFFFF為止;判斷讀取數據是否為有效標志的頭部,是則轉入步驟3,否則說明無有效的系統信息數據,讀取數據失敗。
步驟3:假設讀取x次后得到有效標志的頭部(0x12345678),SysSize為系統信息數據的大小,則讀取系統信息的偏移地址為BlockSize-4-4x-SysSize。完成數據讀取操作。
3.4 寫操作
一種安全快速存儲機頂盒系統信息的方法中寫操作流程如圖5所示。具體包括以下步驟。
步驟1:通過比較TAGA和TAGB選擇有效塊。
步驟2:判斷該塊是否是擦除塊后第一次操作,是則轉入步驟3,否則轉入步驟4。
步驟3:將圖1所示的數據寫入塊開始的起始位置;同時,從該塊的最后4個字節寫入塊有效標識符(TAG),標識符的值為另一塊標識符值加1,完成數據存儲。數據在塊中的位置如圖2所示。
步驟4:假設塊的大小為BlockSize,從塊的BlockSize-8開始向前讀取,每4個字節讀取一次數據,直到讀取到的數據不為0xFFFFFFFF為止,轉入步驟5。
步驟5:判斷讀取到的數據是否為有效標志的頭部(0x12345678),如果不是有效標志的頭部,則該數據塊損壞,跳到另外一塊將其擦除,再進入步驟3操作;如果是有效標志的頭部,則此時數據塊為正常塊,轉入步驟6。
步驟6:假設讀取x次后得到有效標志的頭部(0x12345678),則BlockSize-4x為存儲數據的起始位置;現在判斷剩余的空間(BlockSize-4-(BlockSize-4x)= 4x-4)是否大于圖1數據的大小,如果小于,則該數據塊已經存滿,跳到另外一塊將其擦除,再進入步驟3操作,如果大于,轉入步驟7。
步驟7:從塊偏移地址為BlockSize-4x開始寫入圖1所示的數據,完成數據存儲。
4 結語
針對Flash的固有特性,本文介紹了一種安全快速存儲機頂盒系統信息的方法。該方法能有效解決在數據存儲過程中因斷電造成的數據丟失,并通過減少塊擦除的次數提高Flash的使用壽命。綜上所述,通過使用本文介紹的安全快速存儲機頂盒系統信息的方法,能有效解決印度市場反饋的機頂盒概率性丟失系統信息的問題,并能減少Flash塊擦除次數,提高數據存儲效率,從而提高機頂盒的整體性能。
參考文獻:
[1]周建峰,張宏.數據存儲、恢復與安全應用實踐[M].北京:中國鐵道出版社,2015.
[2]陳鎮江,張寅,張志文,等.一種基于數據存儲的流水SHA256硬件實現電路[J].電子技術應用,2019(7):44-49.
[3]牛藝霏,劉嵩巖,陳妍霖,等.固態存儲技術研究概述[J].計算機產品與流通,2019(7):22.