天天看點

linux之mtd子系統

一 子系統架構

*裝置節點層:MTD架構可以在/dev下建立字元裝置節點(主裝置号90)以及塊裝置節點(主裝置号31), 使用者通過通路此裝置節點即可通路MTD字元裝置或塊裝置。

*MTD裝置層: 基于MTD原始裝置, Linux在這一層次定義出了MTD字元裝置和塊裝置, 字元裝置在mtdchar.c中實作, 塊裝置則是通過結構mtdblk_dev來描述,"/drivers/mtd/mtdchar.c"檔案實作了MTD字元裝置接口; "/drivers/mtd/mtdblock.c"檔案實作了MTD塊裝置接口

*MTD原始裝置層: 由MTD原始裝置的通用代碼+特定的Flash資料組成。mtd_info、mtd_part、mtd_partition以及mtd_partitions等對象及其操作方法就屬于這一層,對應的檔案是"drivers/mtd/mtdcore.c"。類似于i2c驅動架構中的核心層。

*硬體驅動層: 核心将常用的flash操作都已經在這個層次實作, 驅動開發隻需要将相應的裝置資訊添加進去即可, 比如nor flash的晶片驅動位于"drivers/mtd/chips/", nand flash位于"drivers/mtd/nand/

linux之mtd子系統

二 關鍵資料結構

三 資料流

四 SOC驅動

五 Nand使用架構

linux之mtd子系統

Nand Flash經常提的兩個功能就是負責均衡和壞塊管理,其中壞塊管理,常用的方法有:OOB标記(uboot),FTL晶片控制,檔案系統(yaffs2,jaffs2),中間件控制(ubi),BBT标記(kernel)等。

參考

1 nand flash 壞塊

繼續閱讀