MTD(Memory Technology Device)即常說的Flash等使用存儲芯片的存儲設備,MTD子系統(tǒng)對應的是塊設備驅動框架中的設備驅動層,可以說,MTD就是針對Flash設備設計的標準化硬件驅動框架。本文基于3.14內核,討論MTD驅動框架。

MTD子系統(tǒng)框架

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

  • 設備節(jié)點層:MTD框架可以在/dev下創(chuàng)建字符設備節(jié)點(主設備號90)以及塊設備節(jié)點(主設備號31), 用戶通過訪問此設備節(jié)點即可訪問MTD字符設備或塊設備。

  • MTD設備層: 基于MTD原始設備, Linux在這一層次定義出了MTD字符設備和塊設備, 字符設備在mtdchar.c中實現(xiàn), 塊設備則是通過結構mtdblk_dev來描述,"/drivers/mtd/mtdchar.c"文件實現(xiàn)了MTD字符設備接口; "/drivers/mtd/mtdblock.c"文件實現(xiàn)了MTD塊設備接口

  • MTD原始設備層: 由MTD原始設備的通用代碼+特定的Flash數(shù)據(jù)組成。mtd_info、mtd_part、mtd_partition以及mtd_partitions等對象及其操作方法就屬于這一層,對應的文件是"drivers/mtd/mtdcore.c"。類似于i2c驅動框架中的核心層。

  • 硬件驅動層: 內核將常用的flash操作都已經(jīng)在這個層次實現(xiàn), 驅動開發(fā)只需要將相應的設備信息添加進去即可, 比如,NOR flash的芯片驅動位于"drivers/mtd/chips/", Nand flash位于"drivers/mtd/nand/"(eg s3c2410.c)

核心結構和方法簡述

為了實現(xiàn)上述的框架, 內核中使用了如下類和API, 這些幾乎是開發(fā)一個MTD驅動必須的

核心結構