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