在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > Linux下NAND FLASH驅(qū)動開發(fā)

            Linux下NAND FLASH驅(qū)動開發(fā)

            作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

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

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

            1.jpg


            表1:Nand Flash Nor Flash 的區(qū)別

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

            2. 芯片內(nèi)執(zhí)行 (XIP, eXecute In Place) :

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

            【 Nand Flash 的種類】

            具體再分,又可以分為

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

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

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

            【 spare area/oob 】

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

            其具體用途,總結(jié)起來有:

            1. 標記是否是壞快

            2. 存儲 ECC 數(shù)據(jù)

            3. 存儲一些和文件系統(tǒng)相關(guān)的數(shù)據(jù),如 jffs2 就會用到這些空間存儲一些特定信息, yaffs2 文件系統(tǒng),會在 oob 中,存放很多和自己文件系統(tǒng)相關(guān)的信息。

            2. 軟件方面

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

            【內(nèi)存技術(shù)設(shè)備, MTD ( Memory Technology Device )】

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

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

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

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

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

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

            2.jpg

            2.MTD 設(shè)備和硬盤設(shè)備之間的區(qū)別

            多說一句,關(guān)于 MTD 更多的內(nèi)容,感興趣的,去附錄中的 MTD 的主頁去看。

            關(guān)于 mtd 設(shè)備驅(qū)動,感興趣的可以去參考

            MTD 原始設(shè)備與 FLASH 硬件驅(qū)動的對話

            MTD 原始設(shè)備與 FLASH 硬件驅(qū)動的對話 - 續(xù)

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


            上一頁 1 2 3 下一頁

            關(guān)鍵詞:

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉