Linux MTD子系統學習(一)

2021-09-24 16:00:32 字數 1233 閱讀 7707

mtd(memory technology device):記憶體技術裝置,是linux用於描述rom,nand,nor等裝置的子系統的抽象,mtd裝置可以按塊讀寫也可以按位元組讀寫,也就是說mtd裝置既可以是塊裝置也可以是字元裝置,塊裝置(mtdblackx)操作針對檔案系統,字元裝置(mtdx)操作主要針對格式化等操作的測試用。

由於塊裝置的i/o效能與cpu相比很差,因此,塊裝置的資料流往往會引入檔案系統的cache機制

注意:mtd裝置既非塊裝置也不是字元裝置,但可以同時提供字元裝置和塊裝置介面來操作。

如上圖所示,mtd裝置通常可分為四層,從上到下依次是:裝置節點、mtd裝置層、mtd原始裝置層、硬體驅動層。

linux核心使用mtd_info結構體表示mtd原始裝置,這其中定義了大量關於mtd的資料和操作函式(後面將會看到),所有的mtd_info結構體存放在mtd_table結構體資料裡。在/drivers/mtd/mtdcore.c裡:

struct mtd_info *mtd_table[max_mtd_devices];

//原始碼:include/linux/mtd/mtd.h

struct mtd_info ;
linux核心使用mtd_part結構體表示分割槽,其中mtd_info結構體成員用於描述該分割槽,大部分成員由其主分割槽mtd_part->master決定,各種函式也指向主分割槽的相應函式。

//原始碼:drivers/mtd/mtdpart.c

struct mtd_part ;
該結構體表示某一分割槽的分割槽資訊,其將被新增到mtd_partitions鍊錶中。

//原始碼:include/linux/mtd/patitions.h

struct mtd_partition ;
//原始碼:include/linux/mtd/map.h

struct map_info ;
原始碼:include/linux/mtd/nand.h

struct nand_chip ;
用於表示乙個spi-nor裝置的相關資訊。

struct spi_nor ;
注:以上原始碼基於linux-4.14.14分析。

Linux mtd子系統專欄分析之一 概述

從今天開始,我們進行linux mtd子系統的分析。mtd子系統即為記憶體技術裝置子系統,主要包括nor flash nand flash等快閃儲存器裝置相關的子系統模組,而針對sd tf等儲存裝置,則主要由mmc子系統模組進行管理並建立對應的塊裝置。而針對mtd子系統,則會基於mtd原始裝置,建立...

mmc子系統學習筆記一 序

本mmc子系統主要討論了下述內容 關於mmc子系統,各硬體平台 各linux版本之間的差異 閱讀mmc子系統需要的知識準備 啥是是mmc,啥又是sd,啥又是sdio 一些linux裝置模型的重現 虛擬匯流排 mmc子系統的結構組織 關於platform匯流排,研究的主線一 關於mmc匯流排,研究的主...

Shuriken粒子系統學習筆記

預設展開的是粒子系統的初始化模組 定義了粒子初始化時的持續時間 迴圈方式 發射速度 大小等一些列基本的引數 emission 發射模組 控制粒子的發射速率 rate shape 形狀模組 定義粒子發射器的形狀 生命週期 速度 大小 顏色 旋轉 作用力 uv sub emitters 子發射器模組 此...