mtd,是linux的儲存裝置中的乙個子系統。其設計此系統的目的是,對於記憶體類的裝置,提供乙個抽象層,乙個介面,使得對於硬體驅動設計者來說,可以盡量少的去關心儲存格式,比如ftl,ffs2等,而只需要去提供最簡單的底層硬體裝置的讀/寫/擦除函式就可以了。而資料對於上層使用者來說是如何表示的,硬體驅動設計者可以不關心,而mtd儲存裝置子系統都幫你做好了。
對於mtd字系統的好處,簡單解釋就是,他幫助你實現了,很多對於以前或者其他系統來說,本來也是你驅動設計者要去實現的很多功能。換句話說,有了mtd,使得你設計nand flash的驅動,所要做的事情,要少很多很多,因為大部分工作,都由mtd幫你做好了。
當然,這個好處的乙個「***」就是,使得我們不了解的人去理解整個linux驅動架構,以及mtd,變得更加複雜。但是,總的說,覺得是利遠遠大於弊,否則,就不僅需要你理解,而且還要做更多的工作,實現更多的功能了。
此外,還有乙個重要的原因,那就是,前面提到的nand flash和普通硬碟等裝置的特殊性:
mtd,將nand flash,nor flash和其他型別的flash等裝置,統一抽象成mtd裝置來管理,根據這些裝置的特點,上層實現了常見的操作函式封裝,底層具體的內部實現,就需要驅動設計者自己來實現了。具體的內部硬體裝置的讀/寫/擦除函式,那就是你必須實現的了。
表4.mtd裝置和硬碟裝置之間的區別
驅動中訪問mtd裝置
今天解決了乙個小問題,如何在linux驅動中訪問mtd裝置。正常的訪問,都是使用者空間通過,open dev mtd read write close 來訪問的。這次由於在驅動中需要讀取 dev mtd4的乙個sector,這個sector是之前用來備份sd 卡的mbr的。1.訪問的第一步是獲得mt...
mtd裝置操作 jffs2
安裝mtd相關命令 手動安裝mtd utils,根據系統自行選擇 mtd交叉編譯 系統flash操作命令 cat proc mtd dev size erasesize name mtd0 00080000 00020000 boot mtd1 00100000 00020000 kernel mt...
MTD原始裝置與NANDFLASH硬體驅動互動
好久沒寫部落格了,今天再次分析nandflash驅動程式,每一次讀原始碼總有一點的收穫 1 首先從入口函式開始 probe函式將是我們遇到的第乙個與具體硬體打交道,同時也相對複雜的函式對於很多外設的driver來說,只要能成功實現probe函式,那基本上完成這個外設的driver也就成功了一多半,基...