第19章 Flash裝置驅動

2021-04-26 05:07:15 字數 1573 閱讀 6133

本文摘自(偶有較小改動)《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 程序管理 核...