本文摘自(偶有較小改動)《linux 裝置驅動開發詳解》(宋寶華 編著;人民郵電出版社;),留作紀念。
——living park
第19章 flash裝置驅動
19.1 linux flash驅動結構
19.1.1
linux mtd系統層次
在linux系統中,提供了mtd(memory technology device,記憶體技術裝置)系統來建立flash針對linux的統
一、抽象的介面。
在引入mtd後,linux系統中的flash裝置驅動及介面可分為4層,從上到下依次是:裝置節點、mtd裝置層、mtd原始裝置層和硬體驅動層。
19.1.2
linux mtd系統介面
在引入mtd後,底層flash驅動直接與mtd原始裝置層互動,利用其提供的介面註冊裝置和分割槽。
19.1.3
mtd使用者空間程式設計
mtdchar.c實現了字元裝置介面,通過它,使用者可以直接操作flash裝置。
19.2 nor flash驅動
在linux系統中,實現了針對cfi、jedec等介面的通用nor驅動,這一層的驅動直接面向mtd_info的成員函式,這使得nor的晶元級驅動變得十分簡單,只需要定義具體的記憶體對映情況給結構體map_info並使用指定介面型別呼叫do_map_probe()。
19.3 nand flash驅動
晶元級的nand驅動不再需要實現mtd_info中的read()、write()、read_oob()、write_oob()等成員函式,而主體轉移到了nand_chip資料結構。
19.4 nor flash驅動例項:s3c2410外圍的nor flash驅動
19.5 nand flash驅動例項:s3c2410外圍的nand flash驅動
19.5.1
s3c2410 nand控制器硬體描述
s3c2410處理器整合了乙個nand控制器。
19.5.2
nand_chip初始化和成員函式
nand_chip是nand flash驅動的核心資料結構,這個結構體中的成員直接對應著nand flash的底層操作。
19.5.3
nand裝置驅動初始化與釋放
在linux 2.6核心中,s3c2410的nand被註冊為乙個平台設定。
19.6 flash檔案系統的建立
19.6.1
flash轉換層
在flash上,應盡可能的避免使用傳統的依賴快閃儲存器轉換層的檔案系統,最好應採用專門的針對flash的檔案系統。
19.6.2
cramfs
ramdisk的含義是在啟動時,把一部分記憶體虛擬成磁碟,並且把之前準備好的檔案系統映像檔案解壓縮到該ramdisk環境中。而採用cramfs後,就不再需要消耗ram空間。
19.6.3
jffs/jffs2
jffs2是乙個日誌結構的檔案系統,它在快閃儲存器上順序地儲存包含資料和元資料的節點。由於基於日誌結構,在意外掉電後仍然可以保持資料的完整性,而不會丟失資料。
19.6.4
yaffs/yaffs2
yaffs檔案系統是專門針對nand快閃儲存器設計的嵌入式檔案系統。
Flash裝置驅動
今天又看了一遍flash驅動,以下是一些總結。flash 裝置驅動 一 mtd linux系統中,用了mtd系統來建立flash對linux的介面。mtd memory technology device,記憶體技術裝置。mtd可以分為四個層 1,硬體驅動層 最底層,負責flash硬體裝置的讀 寫 ...
第1章 裝置驅動概述
本文摘自 偶有較小改動 linux 裝置驅動開發詳解 宋寶華 編著 人民郵電出版社 留作紀念。living park 第1章 裝置驅動概述 1.1 裝置驅動的作用 沒有硬體的軟體是空中樓閣,而沒有軟體的硬體則是一堆廢鐵。計算機系統的軟硬體互相成就了對方。對裝置驅動最通俗的解釋就是 驅動硬體裝置行動 ...
第1章Linux裝置驅動簡介二
1.2 劃分核心 在 unix 系統中,幾個併發的程序專注於不同的任務.每個程序請求系統資源,比如計算能力,記憶體,網路連線,或者一些別的資源.核心是個大塊的可執行檔案,負責處理所有這樣的請求.儘管不同核心任務間的區別常常不是能清楚劃分,核心的角色可以劃分成下列幾個部分 如圖1.1 1 程序管理 核...