吳有肇,楊立衡
(1.TCL多媒體科技控股有限公司全球研發(fā)中心,廣東 深圳 518067;2.深圳信息職業(yè)技術(shù)學(xué)院學(xué)報,廣東 深圳 518172)
?
基于嵌入式系統(tǒng)的Nor Flash數(shù)據(jù)安全保護設(shè)計
吳有肇1,楊立衡2
(1.TCL多媒體科技控股有限公司全球研發(fā)中心,廣東 深圳 518067;2.深圳信息職業(yè)技術(shù)學(xué)院學(xué)報,廣東 深圳 518172)
摘 要:在各種嵌入式系統(tǒng)產(chǎn)品中,特別是各種“智能”產(chǎn)品中,Nor Flash作為重要的記憶體器件,存放著系統(tǒng)正常啟動、運行的關(guān)鍵程序和用戶數(shù)據(jù),其數(shù)據(jù)內(nèi)容的正常讀寫對整個系統(tǒng)的正常工作和可靠性而言及其重要;然而在設(shè)計和應(yīng)用實踐中經(jīng)常發(fā)生Nor Flash內(nèi)數(shù)據(jù)被異常改寫或丟失的現(xiàn)象,導(dǎo)致系統(tǒng)無法啟動或啟動后系統(tǒng)異常運行。本文提出了一種軟硬件結(jié)合方法實現(xiàn)對Nor Flash 的數(shù)據(jù)內(nèi)容進行保護,提高了嵌入式系統(tǒng)的可靠性。
關(guān)鍵詞:Nor Flash;數(shù)據(jù)保護;交流開關(guān)機
隨著便攜式電子產(chǎn)品的普及,Nand Flash以其價格低廉的優(yōu)勢被越來越多的用于大容量數(shù)據(jù)存儲[1-2]。相較而言,Nor Flash擁有的高傳輸效率、高可靠性和易于使用等優(yōu)點[3-6],在嵌入式系統(tǒng)產(chǎn)品中,大量使用了Nor Flash存放一些非易失性存儲程序和數(shù)據(jù),其數(shù)據(jù)的正常讀寫直接影響到整個系統(tǒng)的穩(wěn)定性和可靠性。實際工作中,Nor Flash數(shù)據(jù)讀寫異常往往是因為在數(shù)據(jù)保護方面的設(shè)計缺陷導(dǎo)致數(shù)據(jù)被異常改寫、丟失或無法提供補救措施導(dǎo)致的。嵌入式系統(tǒng)中,處理器與Nor Flash一般通過SPI總線接口進行通訊[7-10],SPI總線命令簡單易用。本文基于SPI接口的Nor Flash內(nèi)部框架、數(shù)據(jù)保護機制設(shè)計了一套軟件和硬件的數(shù)據(jù)內(nèi)容保護方案,實現(xiàn)了對Nor Flash的存儲陣列進行有效地保護[11-16]。
Nor Flash一般采用SPI接口,SPI接口是一種事實標(biāo)準(zhǔn),并沒有標(biāo)準(zhǔn)協(xié)議,大部分廠家都是參照Motorola的SPI接口定義來設(shè)計的,但正因為沒有確切的版本協(xié)議,不同廠家產(chǎn)品的SPI接口在技術(shù)上存在一定的差別,容易引起歧義,有的甚至無法直接互連(需要軟件進行必要的修改),SPI接口共有4根信號線:設(shè)備選擇線、時鐘線、串行輸出數(shù)據(jù)線、串行輸入數(shù)據(jù)線。常見器件的接口定義如下圖1定義,包含片選信號/CS、串行輸入DI、串行輸出DO、時鐘信號CLK、寫保護/WP、電源VCC、地GND及保持/HOLD等信號引腳。
以2M Bytes存儲容量器件為例,其整體框架如圖2所示。其中/WP寫保護引腳通過內(nèi)部的寫控制邏輯單元保護狀態(tài)寄存器(Status Register),寫保護腳為低電平有效;狀態(tài)寄存器的設(shè)定值決定了Flash存儲陣列受寫保護的方式。狀態(tài)寄存器共兩個字節(jié),分別為狀態(tài)寄存器-1和狀態(tài)寄存器-2,其狀態(tài)位定義見如圖3。
圖1.Nor Flash器件引腳定義Fig1. Pin definition of Nor Flash
其中S6、S5、S4、S3、S2五個比特位決定了存儲陣列的數(shù)據(jù)受保護方式。
其中SRP1、SRP0比特位決定了狀態(tài)寄存器受保護的狀態(tài),與/WP位結(jié)合使用的保護方式統(tǒng)計為圖4:
圖2.Nor Flash 框圖Fig 2. Block Diagram of Nor Flash
圖3.狀態(tài)寄存器Fig 3.Status Register
圖4 狀態(tài)寄存器保護Fig.4 Status Register Protection
① /WP 拉高能寫、拉低能寫,則為(1)
② /WP 拉高能寫、拉低不能寫,則為(2)
③ /WP 拉高、高低都不能寫,則可能為(3)、(4)
④ 若為(3),重啟后SRP1、SRP0為00,可寫
⑤ 若為(4),永遠不可寫
以Nor Flash在數(shù)字電視產(chǎn)品中的應(yīng)用為例,Nor Flash存儲數(shù)據(jù)經(jīng)常發(fā)生的異常為數(shù)據(jù)被改寫,系統(tǒng)無法正常啟動或啟動后運行異常,現(xiàn)象為DTV信源下交流關(guān)開機后死機,具體表現(xiàn)為機器無聲有像,顯示的動態(tài)開機LOGO畫面為綠色且顯示在畫面左右兩邊,顯示的字符“智能系統(tǒng)啟動中,請稍候……”顯示在畫面左右兩邊,且字符不會自動消失。經(jīng)過分析,此問題為系統(tǒng)啟動的mboot的代碼數(shù)據(jù)被破壞,軟件除了升級之外不會去寫代碼對應(yīng)的地址范圍內(nèi)(代碼區(qū))的數(shù)據(jù),所以判斷是Flash中的數(shù)據(jù)被破壞了??紤]到數(shù)據(jù)被破壞可能的因素在硬件的/WP引腳和軟件設(shè)定的狀態(tài)寄存器兩個方面,分別從軟件和硬件兩個方面進行分析:
2.1軟件分析
為確認(rèn)狀態(tài)寄存當(dāng)前的設(shè)定值及受保護方式,在寫Flash(如更換Project ID的操作)前后用以下函數(shù)讀狀態(tài)寄存器:
結(jié)果:
StatusRegister-1的值為0x80,
StatusRegister-2的值為0x00,
寫前后狀態(tài)寄存器的值一樣。
通過查閱圖4,我們知道狀態(tài)寄存器保護位定義的狀態(tài)寄存器保護方法為:
1)軟件保護:如(1),此時無論WP為何種狀態(tài),WEL=1時狀態(tài)寄存器可被寫;
2)硬件保護:如(2),此時狀態(tài)寄存器可寫與否取決于WP電平的高低;
3)上電保護:如(3),只有重新上電時才可以被寫;
4)永久保護:如(4),只能寫一次,之后永久保護;
SRP1、SRP0等狀態(tài)寄存器的初始值由mboot設(shè)定,軟件預(yù)抄寫時已設(shè)定了初始默認(rèn)值。為了解狀態(tài)寄存器塊保護位定義的存儲陣列受保護方式,可查閱Nor Flash芯片規(guī)格,如圖5。
由以上可知,此案例中:
存儲陣列無保護,即存儲在存儲陣列Block內(nèi)的代碼或用戶數(shù)據(jù)可能被異常改寫為保護存儲整列,BP2/BP1/BP0需按需求改寫,能否改寫取決于SRP1/SRP0的設(shè)定值。
圖5 存儲整列保護Fig.5 Memory Array Protection
狀態(tài)寄存器為受硬件保護方式,狀態(tài)寄存器能否被改寫,取決于WP腳的設(shè)定
2.2硬件分析:
硬件電路設(shè)計如圖6:
R258、R231為NC,R207接地,寫保護腳硬件拉低。WP=0,狀態(tài)寄存器無法被改寫和配置。
圖6 硬件設(shè)計Fig.6 Hardware Design
2.3數(shù)據(jù)異常原因分析總結(jié)
1)BP2、BP1、BP0在器件出廠時默認(rèn)設(shè)定為0,所有存儲陣列不受保護
2)SRP1、SRP0 mbbot默認(rèn)設(shè)定為(0,1),狀態(tài)寄存器的改寫取決于WP引腳電平
3)WP引腳硬件強制設(shè)定為0(接地),狀態(tài)寄存器被強制保護無法改寫,BP2~BP0無法改為可保護存儲陣列的定義值。
這種情況下,無法單獨使用軟件更改狀態(tài)寄存器設(shè)定值的方法來保護存儲陣列內(nèi)的數(shù)據(jù)!
2.4Nor Flash 數(shù)據(jù)保護電路設(shè)計及驗證:
硬件電路更改參考圖6,要求如下:
R258、R231連接,R207 斷開。
(1)R258連接GPIO口,由GPIO口控制WP的高低電平變化;
(2)R231上拉主要目的是考慮GPIO的驅(qū)動能力不足,刪除207對地下拉。
軟件設(shè)定存儲陣列為全部受保護方式。
改善驗證如下:
(1)WP寫保護腳受程序控制。
不寫狀態(tài)寄存器時,/WP腳為低電平;
改寫狀態(tài)寄存器時,/WP腳受控拉高;
(2)經(jīng)硬件改動后,寫Flash操作前后讀狀態(tài)寄存器,結(jié)果為:
StatusRegister1=0x9C(BP2~BP0都為1,整改Flash Block受保護)
StatusRegister2=0x00。
可以看出,主動寫操作前整個Flash的數(shù)據(jù)是受保護的;寫數(shù)據(jù)前將WP拉高,臨時改變狀態(tài)寄存器值使存儲陣列不受保護(可寫);將/WP拉低,已寫入的狀態(tài)寄存器值受保護;寫數(shù)據(jù)后,將/WP拉高,改變狀態(tài)寄存器值使存儲陣列全部受保護;將/WP拉低,已寫入的狀態(tài)寄存器值受保護。
3.1硬件設(shè)計指引:
(1) /WP引腳直接上拉(無GPIO控制)
這種方法針對GPIO數(shù)量不足的情況,將/WP腳直接上拉至3.3V,狀態(tài)寄存器不受保護;
風(fēng)險:狀態(tài)寄存器和存儲陣列值的改變需以指令方式更改,同時出現(xiàn)狀態(tài)寄存器和存儲陣列數(shù)據(jù)被異常改寫的幾率幾乎為零,基本沒有風(fēng)險。
(2)/WP用GPIO口控制
①將/WP腳連接至GPIO并上拉至3.3V:
● 針對GPIO驅(qū)動不足的情況;
● GPIO初始化為低電平。
風(fēng)險:上電GPIO未完成初始化瞬間可能有導(dǎo)致狀態(tài)寄存器被改寫,這種概率極小,且同時存儲陣列數(shù)據(jù)被改寫的可能性就更小,基本沒有風(fēng)險;
②將/WP腳連接至GPIO(初始化為低電平)并下拉至GND(針對GPIO驅(qū)動力強的情況)。
風(fēng)險:無理論上的風(fēng)險,但要求GPIO有足夠的驅(qū)動能力。
3.2軟件設(shè)計指引:
(1)總體流程如圖7;
圖7 軟件流程圖Fig.7 Software Flow Chart
(2)邏輯描述:
①主動寫操作前:
讀取狀態(tài)寄存器判斷;
確保存儲陣列是受保護的;
②寫數(shù)據(jù)前:
a、拉高/WP(GPIO控制的情況)
b、設(shè)定狀態(tài)寄存器值,使存儲
陣列不受保護(可寫);
c、拉低/WP(GPIO控制的情況)
③寫入數(shù)據(jù);
④寫數(shù)據(jù)后:
a、拉高/WP(GPIO控制的情況)
b、設(shè)定狀態(tài)寄存器值,使存儲陣列受保護(不可寫);
c、拉低/WP(GPIO控制的情況)
(3)保護判斷:
狀態(tài)寄存器的設(shè)定應(yīng)根據(jù)實際應(yīng)用來做,特別是SEC/TB/BP2/BP1/BP0根據(jù)實際設(shè)定來判斷。Flash狀態(tài)寄存器的出廠Default值為0x00.
設(shè)定原則:
①軟件保護:
● 一般在無GPIO控制/WP的情況
● SRP1=0、SRP0=0
②硬件保護:
● 一般在有GPIO控制/WP的情況
● SRP1=0、SRP0=1
③上電保護:
● 只能在每次上電時設(shè)定一次狀態(tài)寄存器
● SRP1=1、SRP0=0
④永久保護:
● 只能設(shè)定一次狀態(tài)寄存器,之后不可改;
● 一般是用于存放一些重要的Key等等
● SRP1=1、SRP0=0
⑤BP2、BP1、BP0 不能同時為“0”
Nor Flash數(shù)據(jù)保護的重點在于對數(shù)據(jù)保護機制的深刻理解和設(shè)計合理的數(shù)據(jù)保護方式,讓硬件或軟件能安全合理地保護狀態(tài)寄存器,同時合理地設(shè)定狀態(tài)寄存器,以使存儲陣列能被有效地保護。
參考文獻(References):
[1] 陳超文,彭國杰,王憶文等. 基于PLB總線的NOR Flash控制器設(shè)計[J]. 微電子學(xué)與計算機,2014,31(5),83-86.
CHEN Chaowen,PENG Guojie,WANG Yiwen, et.al. Design of NOR FLASH Controller Based on PLB General Bus[J]. Micro Electronics and Computer,2014,31(5),83-86.(in Chinese)
[2] EYEE Hun NAM,BRYAN Suk Joon Kim. An Out-of-Order Flash Memory Controller Architecture[J]. IEEE Transactions on Computers,2011,60(5):652-666
[3] HARRIS david money, harris sarah l. digital designand computer architecture[M]. USA: Morgan Kaufmann, 2007.
[4] IEEE Computer Society. IEEE Recommended Practicefor Softawre Requirements Specifications[S]. IEEE Std830-1998: Los Alamitos, CA, 1998.
[5] 杜偉慶,蘇凱雄. 嵌入式系統(tǒng)中NOR Flash 的分塊管理與實現(xiàn)[J]. 計算機與數(shù)字工程.2009,(12),80-85
DU Weiqing,SUKaixiong.Blockbased Management and Implementation of NOR Flash in Embedded System[J]. Computer & Digital Engineering.2009,(12),80-85(in Chinese)
[6] Walter J S. A unified Algorithm for Elementary Functions[ C]. AFIPS Spring Jo int Computer Conference,1997, ( 38) : 379~ 385
[7] 李明明,王全忠,郭偉,等.一種NOR FLASH 控制器驗證平臺的研究[J]. 現(xiàn)代電子技術(shù),2015,38(10):162-165.
LI Mingming,WANG Quanzhong,GUO Wei,et,al. Research on a verification platform for NOR FLASH controller[J].Modern Electronics Technique, 2015,38(10):162-165(in Chinese)
[8] HILDERMAN V,BAGHI T. Avionics certification:a complete guide to DO-254(hardware)[M]. America:Avionics Communi-cations Inc,2007.
[9] Cadence. OVM class reference[M/OL]. [2010-12-08]. http://www. docin.com.
[10] ACZYNSKI J. Verification methods for field programmable gate array (FPGA) designs[J]. Elektronik Industrie,2004,35(11):58-61.
[11] 張歡慶,高麗. 嵌入式Linux中Nor Flash設(shè)備驅(qū)動研究[J]. 商丘職業(yè)技術(shù)學(xué)院學(xué)報,2012,11(2):43-46
ZHANG Huanqing, GAO Li. Research on the Embedded Linux NOR Flash Device Driver[J]. Journal of Shangqiu Vocational and Technical college.(in Chinese).
[12] EYEE HunNAM,BRYAN Suk joon kim. An Out-of-Order Flash Memory Controller Architecture[J]. IEEE Transactions on Computers,2011,60(5):652-666
[13] Li J H. Zhang X, Yu M. A 1.2-V Piecewise Curvature-Corrected BandgapReference in 0.5 m CMOS Process[J]. Very Large Scale Integration (VLSI)Systems. IEEE Transactions on. 2011. 19(6): 1118-1122.
[14] Bendali A. Audet Y. A 1-V CMOS current reference with temperature and process compensation[J]. Circuits and Systems I: Regular Papers, IEEE Transactions on,2007,54(7): 1424-1429.
[15] Razavi B. Design of analog CMOS integrated circuits[M]. Tata McGraw-HillEducation, 2002.
[16] Leung K N,Mok P K T, Leung C Y. A 2-V 23卞A 5.3-ppm/。Ccurvature-compensated CMOS bandgap voltage reference[J]. Solid-State Circuits.IEEE Journal of, 2003,38(3): 561-564.
【責(zé)任編輯:高潮】
【信息經(jīng)濟研究】
Design of data safety protection for Nor Flash based on embedded system
WU Youzhao1, YANG Liheng2
(1. TCL Multimedia Technology Holdings Ltd. Global R&D Center, Shenzhen 518067, China;2. Journal Editorial Department, Shenzhen Institute of Information Technology, Shenzhen 518172, China)
Abstract:In the products especially in the Smart products based on embedded system,Nor Flash is used to storing the key programs and user data for system's booting up and running, the normal read/write operation of the data in Nor Flash is very important to the whole system. The data in the flash is usually written abnormally and cause the system booting up or running failure. This article design of the peripheral circuits to protect the data in NOR flash and improve the reliability of the system.
Key words:Nor Flash; data Protection; AC power on/off
中圖分類號:TP333
文獻標(biāo)識碼:A
文章編號:1672-6332(2016)01-0053-05
[收稿日期]2015-11-26
[作者簡介]吳有肇(1984-),男(漢),福建寧德人,工程師,本科,主要研究方向:液晶電視嵌入式系統(tǒng)硬件方案及電路研究。E-mail:evanwu201404@163..com