MTD,是Linux的存儲設備中的一個子系統。其設計此系統的目的是,對于內存類的設備,提供一個抽象層,一個接口,使得對于硬件驅動設計者來說,可以盡量少的去關心存儲格式,比如FTL,FFS2等,而只需要去提供最簡單的底層硬件設備的讀/寫/擦除函數就可以了。而數據對于上層使用者來說是如何表示的,硬件驅動設計者可以不關心,而MTD存儲設備子系統都幫你做好了。 對于MTD字系統的好處,簡單解釋就是,他幫助你實現了,很多對于以前或者其他系統來說,本來也是你驅動設計者要去實現的很多功能。換句話說,有了MTD,使得你設計NAND Flash的驅動,所要做的事情,要少很多很多,因為大部分工作,都由MTD幫你做好了。 當然,這個好處的一個“副作用”就是,使得我們不了解的人去理解整個Linux驅動架構,以及MTD,變得更加復雜。但是,總的說,覺得是利遠遠大于弊,否則,就不僅需要你理解,而且還要做更多的工作,實現更多的功能了。
此外,還有一個重要的原因,那就是,前面提到的nand flash和普通硬盤等設備的特殊性:
有限的通過出復用來實現輸入輸出命令和地址/數據等的IO接口,最小單位是頁而不是常見的bit,寫前需擦除等,導致了這類設備,不能像平常對待硬盤等操作一樣去操作,只能采取一些特殊方法,這就誕生了MTD設備的統一抽象層。 MTD,將nand flash,nor flash和其他類型的flash等設備,統一抽象成MTD設備來管理,根據這些設備的特點,上層實現了常見的操作函數封裝,底層具體的內部實現,就需要驅動設計者自己來實現了。具體的內部硬件設備的讀/寫/擦除函數,那就是你必須實現的了。
內存技術設備,MTD(Memory Technology Device).png (38.64 KB, 下載次數: 49)
下載附件
2018-7-19 10:29 上傳
表4.MTD設備和硬盤設備之間的區別
|