久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Linux下NAND FLASH驅動開發

Linux下NAND FLASH驅動開發

作者: 時間:2016-10-08 來源:網絡 收藏

但是由于物理制程 / 制造方面的原因,導致 nor nand 在一些具體操作方面的特性不同:

本文引用地址:http://cqxgywz.com/article/201610/305625.htm

1.jpg


表1:Nand Flash Nor Flash 的區別

1. 理論上是可以的,而且也是有人驗證過可以的,只不過由于 nand flash 的物理特性,不能完全保證所讀取的數據 / 代碼是正確的,實際上,很少這么用而已。因為,如果真是要用到 nand flash 做 XIP ,那么除了讀出速度慢之外,還要保證有數據的校驗,以保證讀出來的,將要執行的代碼 / 數據,是正確的。否則,系統很容易就跑飛了。

2. 芯片內執行 (XIP, eXecute In Place) :

http://hi.baidu.com/serial_story/blog/item/adb20a2a3f8ffe3c5243c1df.html

【 Nand Flash 的種類】

具體再分,又可以分為

1)Bare NAND chips :裸片,單獨的 nand 芯片

2)SmartMediaCards : = 裸片 + 一層薄塑料,常用于數碼相機和 MP3 播放器中。之所以稱 smart ,是由于其軟件 smart ,而不是硬件本身有啥 smart 之處。 ^_^

3)DiskOnChip :裸片 +glue logic , glue logic= 硬件 ECC 產生器 + 用于靜態的 nand 芯片控制的寄存器 + 直接訪問一小片地址窗口,那塊地址中包含了引導代碼的 stub 樁,其可以從 nand flash 中拷貝真正的引導代碼。

【 spare area/oob 】

Nand 由于最初硬件設計時候考慮到,額外的錯誤校驗等需要空間,專門對應每個頁,額外設計了叫做 spare area 空區域,在其他地方,比如 jffs2 文件系統中,也叫做 oob ( out of band )數據。

其具體用途,總結起來有:

1. 標記是否是壞快

2. 存儲 ECC 數據

3. 存儲一些和文件系統相關的數據,如 jffs2 就會用到這些空間存儲一些特定信息, yaffs2 文件系統,會在 oob 中,存放很多和自己文件系統相關的信息。

2. 軟件方面

如果想要在 Linux 下編寫 Nand Flash 驅動,那么就先要搞清楚 Linux 下,關于此部分的整個框架。弄明白,系統是如何管理你的 nand flash 的,以及,系統都幫你做了那些準備工作,而剩下的,驅動底層實現部分,你要去實現哪些功能,才能使得硬件正常工作起來。

【內存技術設備, MTD ( Memory Technology Device )】

MTD ,是 Linux 的存儲設備中的一個子系統。其設計此系統的目的是,對于內存類的設備,提供一個抽象層,一個接口,使得對于硬件驅動設計者來說,可以盡量少的去關心存儲格式,比如 FTL , FFS2 等,而只需要去提供最簡單的底層硬件設備的讀 / 寫 / 擦除函數就可以了。而對于數據對于上層使用者來說是如何表示的,硬件驅動設計者可以不關心,而 MTD 存儲設備子系統都幫你做好了。

對于 MTD 字系統的好處,簡單解釋就是,他幫助你實現了,很多對于以前或者其他系統來說,本來也是你驅動設計者要去實現的很多功能。換句話說,有了 MTD ,使得你設計 Nand Flash 的驅動,所要做的事情,要少很多很多,因為大部分工作,都由 MTD 幫你做好了。

當然,這個好處的一個“副作用”就是,使得我們不了解的人去理解整個 Linux 驅動架構,以及 MTD ,變得更加復雜。但是,總的說,覺得是利遠遠大于弊,否則,就不僅需要你理解,而且還是做更多的工作,實現更多的功能了。

此外,還有一個重要的原因,那就是,前面提到的 nand flash 和普通硬盤等設備的特殊性:

有限的通過出復用來實現輸入輸出命令和地址 / 數據等的 IO 接口,最小單位是頁而不是常見的 bit ,寫前需擦除等,導致了這類設備,不能像平常對待硬盤等操作一樣去操作,只能采取一些特殊方法,這就誕生了 MTD 設備的統一抽象層。

MTD ,將 nand flash , nor flash 和其他類型的 flash 等設備,統一抽象成 MTD 設備來管理,根據這些設備的特點,上層實現了常見的操作函數封裝,底層具體的內部實現,就需要驅動設計者自己來實現了。具體的內部硬件設備的讀 / 寫 / 擦除函數,那就是你必須實現的了。

2.jpg

2.MTD 設備和硬盤設備之間的區別

多說一句,關于 MTD 更多的內容,感興趣的,去附錄中的 MTD 的主頁去看。

關于 mtd 設備驅動,感興趣的可以去參考

MTD 原始設備與 FLASH 硬件驅動的對話

MTD 原始設備與 FLASH 硬件驅動的對話 - 續

那里,算是比較詳細地介紹了整個流程,方便大家理解整個 mtd 框架和 nand flash 驅動。


上一頁 1 2 3 下一頁

關鍵詞:

評論


相關推薦

技術專區

關閉