一種支持多種閃存的自適應驅(qū)動設計
引言
本文引用地址:http://www.ex-cimer.com/article/202324.htmFlash存儲器具有快速訪問、低功耗、尺寸小、重量輕等特性,在系統(tǒng)電源關閉的情況下依然可保留數(shù)據(jù)。隨著技術的發(fā)展,F(xiàn)lash因其在性能和成本方面的優(yōu)勢逐漸成為系統(tǒng)存儲的工業(yè)標準。目前市面上,NOR Flash和NAND Flash是兩種主要的Flash存儲器。因NORFlash能在芯片內(nèi)執(zhí)行程序,一般在非大容量存儲設備中采用NOR Flash作為程序存儲器和非易失性數(shù)據(jù)存儲器,本文以NOR Flash存儲器為例,闡述一種支持多Flash的自適應驅(qū)動設計方法。
產(chǎn)品在批量生產(chǎn)時,同一款產(chǎn)品在不同的生產(chǎn)階段常常會因價格或者貨源等原因而采用不同型號、硬件接口兼容的Flash存儲器,不同的Flash存儲器對應不同的驅(qū)動程序。這樣,產(chǎn)品因采用了不同廠商、不同容量、不同型號的Flash存儲器,導致在一種器件上開發(fā)的驅(qū)動軟件無法兼容另外一種器件,而需要對軟件版本做一些額外的管理工作。當前所采用的方法是當產(chǎn)品選用不同類型的Flash存儲器后,就添加一個軟件版本,由生產(chǎn)線工人針對不同的Flash存儲器來選擇不同的Bin燒寫文件和不同的軟件版本,這樣不僅生產(chǎn)效率低,而且容易出錯。本文
提出一種Flash的驅(qū)動自適應的實現(xiàn)方法,對傳統(tǒng)軟件設計方法進行改進,實現(xiàn)同一驅(qū)動軟件同時支持多Flash存儲器,提高了生產(chǎn)效率。
1 傳統(tǒng)Flash存儲器驅(qū)動設計
1.1 傳統(tǒng)Flash存儲器的驅(qū)動模型
NOR Flash的讀取如同RAM和EEPROM一樣不需要特殊的指令,但對Flash的寫入、復位、讀取ID等操作則需要特殊的編程指令序列。通常不直接寫入Flash的主要原因是為了防止加電/掉電時產(chǎn)生的脈沖破壞Flash的原始數(shù)據(jù)。Flash支持的命令集也因器件系列和廠商的不同而不同,因此需要根據(jù)Flash支持的指令集編寫驅(qū)動程序。
傳統(tǒng)的Flash存儲器驅(qū)動模型如圖1所示。驅(qū)動層與Flash指令集相關,提供基本的操作函數(shù)給適配層調(diào)用,不同廠商的Flash指令集不同,對應的驅(qū)動層代碼不同。適配層將Flash操作函數(shù)進行一系列包裝以實現(xiàn)某一功能,它為應用層提供標準的應用接口,適配層代碼在移植過程中一般不需要修改。應用層函數(shù)調(diào)用適配層函數(shù)以實現(xiàn)某一具體功能。
1.2 Flash常用接口
Flash作為系統(tǒng)的程序存儲器和數(shù)據(jù)存儲器,ARM處理器對Flash的操作有以下幾種:
◆初始化配置
◆讀數(shù)據(jù)
◆寫數(shù)據(jù)
◆擦除
◆擦除狀態(tài)查詢
◆暫停擦除
◆恢復擦除
1.3 Flash的兼容性設計
傳統(tǒng)Flash模型只針對一種特定指令集的Flash芯片,如配置模塊是針對Flash_A的時序和指令集來編寫的,其對應的軟件為Software_ A,沒有考慮其兼容性。但在產(chǎn)品的后續(xù)生產(chǎn)過程中,當需要將Flash_A更換為接口兼容的Flash_B時,需要為其重新編寫配置接口模塊,對應的軟件為Software_B。Software_A支持Flash_A,Software_B支持Flash_B,由此就帶來一個軟件版本的管理問題。
為了便于產(chǎn)品的升級,產(chǎn)品在軟硬件設計過程中往往要考慮其兼容性,硬件的兼容相對軟件與軟件的兼容要容易得多。如圖2所示,NOR Flash的引腳主要有:8/16位的數(shù)據(jù)總線,地址總線(與Flash大小相關),控制引腳(OE#、CE#、AVD#、WE#、WP#)。同一系列Flash芯片的電氣特性基本兼容,包括其引腳連接、封裝方式、直流和交流特性等,如Toshiba公司的ty5701111183kc04和Spansion公司的S29NS128N、S29N 128N的引腳基本兼容。
硬件的兼容由芯片廠商來完成,而軟件的兼容則需要改善Flash驅(qū)動模型來實現(xiàn)。NOR Flash的生產(chǎn)廠商很多,F(xiàn)lash支持的指令集也岡器件系列和生產(chǎn)廠商的不同而不同。
針對以上問題,本文提出一種Flash存儲器自適應的設計方法,在傳統(tǒng)Flash驅(qū)動模型中添加自適應層,同時在硬件驅(qū)動層中添加多種Flash的接口函數(shù)。系統(tǒng)在自適應層中自動搜索相應Flash的函數(shù)接口,從而實現(xiàn)Software_AB同時支持Flash_A和Flash_B。自適應方法與傳統(tǒng)方法的比較如圖3所示。
評論