一種支持多種閃存的自適應驅動設計
2 Flash自適應方法設計
傳統(tǒng)的Flash驅動Software_A中只為Flash_A提供了驅動接口函數(shù)。自適應Flash驅動Software_AB在硬件接口層中同時為Flash_A和Fla sh_B各提供一套驅動接口函數(shù),系統(tǒng)通過讀取Flash存儲器的ID號來識別當前Flash,從而選擇適合當前Flash存儲器的接口函數(shù)。以此類推,如果Software_ABC中添加了Flash_C的接口操作函數(shù),則Software_ABC也添加對Flash_C的支持,實現(xiàn)3種Flash存儲器的自適應。
2.1 Flash自適應方法模型及實現(xiàn)
自適應模型與傳統(tǒng)模型的比較如圖4所示。自適應驅動方法在傳統(tǒng)驅動方法的基礎上添加了自適應層,硬件驅動層里有多款Flash的接口操作函數(shù)。
一個驅動程序中存在多種Flash的接口函數(shù),系統(tǒng)在自適應層中分三步來尋找對應Flash的接口函數(shù)。如圖5所示,自適應層實現(xiàn)方法如下:
①讀取Flash設備ID;
②fLash_nor_probe(),系統(tǒng)根據讀取到的ID,遍歷指針數(shù)組*(spansion[]),尋找當前Flash的驅動信息,并將之存儲在全局變量中;
③根據相應的全局變量,自動尋找相應的驅動函數(shù)。
2.2 Flash接口函數(shù)的實現(xiàn)
本文以Toshiba公司ty5701111183kc04的Flash ID讀取為例,介紹NOR Flash驅動函數(shù)的實現(xiàn)方法。
Flash ID讀取流程:
①發(fā)送復位指令0xf0令Flash復位;
②給Flash發(fā)送讀取ID的命令序列;
③讀取Flash ID存儲到全局變量中。
評論