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