- 相關(guān)推薦
嵌入式文件系統移植
嵌入式系統是一種“完全嵌入到受控器件內部,為特定應用而設計的專(zhuān)用計算機系統”。下面是小編整理的嵌入式文件系統移植,希望大家認真閱讀!
1.1. 計算機組成原理
從馮.諾依曼的存儲程序工作原理及計算機的組成來(lái)說(shuō),計算機由運算器、控制器、存儲器和輸入/輸出設備五大部件組成。其中運算器和控制器統稱(chēng)為中央處理器(CPU),而存儲系統分成內部存儲器(內存)和外部存儲器(外存)。輸入/輸出設備并非計算機所必需的,如果一個(gè)設備具有CPU,內存和外存,我們就可以說(shuō)它是一臺計算機。在很多嵌入式設備上,都沒(méi)有輸入/輸出設備,所以從廣義來(lái)講,我們的手機,MP3,平板電腦都可以說(shuō)是一臺計算機。
大家可能都聽(tīng)說(shuō)過(guò)單片機,那么什么是單片機呢?其實(shí)單片機就是把CPU,內存和外存集成在一個(gè)芯片里面,當然他還包括其他的一些功能模塊。那么我們聽(tīng)說(shuō)的ARM9,ARM11是不是單片機呢?從嚴格意義上來(lái)講,他們并不是單片機,雖說(shuō)在很多ARM處理器里面都集成得有一個(gè)小容量的SRAM,但是由于CPU內部沒(méi)有能夠掉電保存數據的外存,所以它就不是單片機。
1.1.1. CPU
中央處理器(英文CentralProcessingUnit,CPU)是一臺計算機的運算核心和控制核心,其功能主要是解釋計算機指令以及處理計算機軟件中的數據。CPU由運算器、控制器和寄存器及實(shí)現它們之間聯(lián)系的數據、控制及狀態(tài)的總線(xiàn)構成。差不多所有的CPU的運作原理可分為四個(gè)階段:提取/取指(Fetch)、解碼(Decode)、執行(Execute)和寫(xiě)回(Writeback)。 由于CPU的速度很快,而外存的速度很慢,所以CPU不從外存中取出數據,而是從內存或高速緩沖存儲器(cache)中取出指令,放入指令寄存器,并對指令譯碼,并執行指令。
1.1.2. 存儲器
存儲器是用來(lái)存儲程序和數據的部件,對于計算機來(lái)說(shuō),有了存儲器,才有記憶功能,才能保證正常工作。存儲器的種類(lèi)很多,按其用途可分為主存儲器(簡(jiǎn)稱(chēng)內存或主存)和輔助存儲器(簡(jiǎn)稱(chēng)外存)。內存是電腦中的主要部件,它是相對于外存而言的,其存儲速度快,掉電后數據丟失,是CPU能直接尋址的存儲空間。內存一般采用半導體存儲單元,包括隨機存儲器(RAM)以及高速緩存(CACHE),而RAM是其中最重要的存儲器。在系統上電前,所有的數據都是存放在外存中的,內存中的數據不可使用。當內存中沒(méi)有CPU需要的數據時(shí),會(huì )使用DMA(相當于一個(gè)協(xié)處理器)將數據從外存中調入到內存后,再從內存取數據。
l 隨機存儲器(RAM)
RAM(random access memory)隨機存儲器。存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無(wú)關(guān)的存儲器。這種存儲器在斷電時(shí)將丟失其存儲內容,故主要用于存儲短時(shí)間使用的程序。 按照存儲信息的不同,隨機存儲器又分為靜態(tài)隨機存儲器(Static RAM,SRAM)和動(dòng)態(tài)隨機存儲器(Dynamic RAM,DRAM)。
SRAM不需要刷新電路即能保存它內部存儲的數據,而DRAM(Dynamic Random Access Memory)每隔一段時(shí)間,要刷新充電一次,否則內部的數據即會(huì )消失,因此SRAM具有較快的速度和較高的性能,但是SRAM也有它的缺點(diǎn),即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,且功耗較大。SRAM的速度快但昂貴,一般用小容量的SRAM作為更高速CPU和較低速DRAM 之間的緩存(cache).
在嵌入式領(lǐng)域,我們常見(jiàn)的DRAM有SDRAM和DDR(DOUBLE DATA RATE)RAM。SDRAM將CPU與RAM通過(guò)一個(gè)相同的時(shí)鐘鎖在一起,使CPU和RAM能夠共享一個(gè)時(shí)鐘周期,以相同的速度同步工作,每一個(gè)時(shí)鐘脈沖的上升沿便開(kāi)始傳遞數據。DDR RAM 是SDRAM的更新?lián)Q代產(chǎn)品,他允許在時(shí)鐘脈沖的上升沿和下降沿傳輸數據,這樣不需要提高時(shí)鐘的頻率就能加倍提高SDRAM的速度,在PC上上很常見(jiàn),另外,很多高端的ARM處理器也支持DDR RAM。
l 高速緩沖存儲器(Cache)
Cache也是我們經(jīng)常遇到的概念,也就是平?吹降囊患壘彺(L1 Cache)、二級緩存(L2 Cache)、三級緩存(L3 Cache)這些數據,它位于CPU與內存之間,是一個(gè)讀寫(xiě)速度比內存更快的存儲器。當CPU向內存中寫(xiě)入或讀出數據時(shí),這個(gè)數據也被存儲進(jìn)高速緩沖存儲器中。當CPU再次需要這些數據時(shí),CPU就從高速緩沖存儲器讀取數據,而不是訪(fǎng)問(wèn)較慢的內存,當然,如需要的數據在Cache中沒(méi)有,CPU會(huì )再去讀取內存中的數據。
l 只讀存儲器(ROM)
只讀存儲器(Read-Only Memory)是一種只能讀取資料的存儲器。在制造過(guò)程中,將資料以一特制光罩(mask)燒錄于線(xiàn)路中,其資料內容在寫(xiě)入后就不能更改,所以有時(shí)又稱(chēng)為“光罩式只讀內存”(mask ROM)。此內存的制造成本較低,常用于電腦中的開(kāi)機啟動(dòng)如啟動(dòng)光盤(pán),在系統裝好的電腦上時(shí),計算機將C盤(pán)目錄下的操作系統文件讀取至內存,然后通過(guò)cpu調用各種配件進(jìn)行工作這時(shí)系統存放存儲器為RAM 。這種屬于COMPACT DISC激光唱片,光盤(pán)就是這種。
l 可編程程序只讀內存(PROM)
可編程程序只讀內存(Programmable ROM,PROM)之內部有行列式的镕絲,是需要利用電流將其燒斷,寫(xiě)入所需的資料,但僅能寫(xiě)錄一次。 PROM在出廠(chǎng)時(shí),存儲的內容全為1,用戶(hù)可以根據需要將其中的某些單元寫(xiě)入數據0(部分的PROM在出廠(chǎng)時(shí)數據全為0,則用 戶(hù)可以將其中的部分單元寫(xiě)入1), 以實(shí)現對其“編程”的目的。PROM的典型產(chǎn)品是“雙極性熔絲結構”,如果我們想改寫(xiě)某些單元,則可以給這些單元通以足夠大的電流,并維持一定的時(shí)間,原 先的熔絲即可熔斷,這樣就達到了改寫(xiě)某些位的效果。另外一類(lèi)經(jīng)典的PROM為使用“肖特基二極管”的PROM,出廠(chǎng)時(shí),其中的二極管處于反向截止狀態(tài),還 是用大電流的方法將反相電壓加在“肖特基二極管”,造成其永久性擊穿即可。
l EPROM
可擦出可編程只讀內存(Erasable Programmable Read Only Memory,EPROM)可利用高電壓將資料編程寫(xiě)入,抹除時(shí)將線(xiàn)路曝光于紫外線(xiàn)下,則資料可被清空,并且可重復使用。通常在封裝外殼上會(huì )預留一個(gè)石英透明窗以方便曝光。
l EEPROM
電可擦出可編程只讀內存(Electrically Erasable Programmable Read Only Memory,EEPROM)之運作原理類(lèi)似EPROM,但是抹除的方式是使用高電場(chǎng)來(lái)完成,因此不需要透明窗。
l FLASH
FLASH表示Flash Memory的意思,即平時(shí)所說(shuō)的“閃存”,全名叫Flash EEPROM Memory。它結合了ROM和RAM的長(cháng)處,不僅具備電子可擦除可編程(EEPROM)的性能,還可以快速讀取數據(NVRAM的優(yōu)勢),使數據不會(huì )因為斷電而丟失。U盤(pán)和MP3里用的就是這種存儲器。在過(guò)去的20年里,嵌入式系統一直使用ROM(EPROM)作為它們的存儲設備,然而近年來(lái)Flash全面代替了ROM(EPROM)在嵌入式系統中的地位,用作存儲Bootloader以及操作系統或者程序代碼,或者直接當硬盤(pán)使用(U盤(pán))。
1.2. 嵌入式Flash存儲器
嵌入式硬件系統一般都需要有軟件的支持才能夠正常工作,嵌入式系統需要為軟件提供相應的存儲空間。在以往的單片機系統內,一般使用ROM(Read Only Memory)或EPROM(Erasable Programmable Read Only Memory)存儲程序。由于現有的嵌入式系統越來(lái)越復雜,原有的ROM由于容量、靈活性差等的限制,無(wú)法滿(mǎn)足日益復雜的應用要求。
閃存(Flash)是電可擦除只讀存儲器(EEPROM)的變種,但兼有RAM和ROM 的優(yōu)點(diǎn),是一種可在系統(In-System)進(jìn)行電擦寫(xiě),掉電后信息不丟失的存儲器,同時(shí)它的高集成度和低成本使它成為市場(chǎng)主流。隨著(zhù)Flash技術(shù)的成熟和普及,一些單片機芯片(如Freescale的8位單片機MC68HC908)已經(jīng)開(kāi)始采用片內FLASH取代過(guò)去常用的片內ROM或EPROM,使單片機具有了在線(xiàn)編程寫(xiě)入或擦除的功能。
FLASH在結構和操作方式上與硬盤(pán)、EEROM等其他存儲介質(zhì)有較大區別,他都是只能將1寫(xiě)為0,而不能將0寫(xiě)成1。所以在Flash編程之前,必須以塊為單位(塊大小一般為256KB到20MB)將對應的塊擦除,而擦除的過(guò)程就是將所有位都寫(xiě)為1的過(guò)程,塊內的所有字節變?yōu)?xFF。因此可以說(shuō),編程是將相應位寫(xiě)0的過(guò)程,而擦除是將相應位寫(xiě)1的過(guò)程,兩者的執行過(guò)程完全相反。而EEPROM能在字節水平上進(jìn)行刪除和重寫(xiě)而不是整個(gè)芯片擦寫(xiě),這樣閃存就比EEPROM的更新速度快。
Flash 芯片是由內部成千上萬(wàn)個(gè)存儲單元組成的,每個(gè)單元存儲一個(gè)bit。具有低功耗、大容量、擦寫(xiě)速度快、可整片或分扇區在系統編程(燒寫(xiě))、擦除等特點(diǎn),并且可由內部嵌入的算法完成對芯片的操作,因而在各種嵌入式系統中得到了廣泛的應用。作為一種非易失性存儲器,Flash在系統中通常用于存放程序代碼、常量表以及一些在系統掉電后需要保存的用戶(hù)數據等。常用的Flash為8位或16位的數據寬度,編程電壓為單3.3V。主要的生產(chǎn)廠(chǎng)商為INTEL、ATMEL、AMD、HYUNDAI等。Flash 技術(shù)根據不同的應用場(chǎng)合也分為不同的發(fā)展方向,有擅長(cháng)存儲代碼的NOR Flash和擅長(cháng)存儲數據的NAND Flash。
1.3. Norflash和Nandflash的對比
1.3.1. NANDFlash和NORFlash芯片的共性
首先表現在向芯片中寫(xiě)數據必須先將芯片中對應的內容清空,然后再寫(xiě)入,即先擦后寫(xiě)。只不過(guò)NORFlash芯片只用擦寫(xiě)一個(gè)字,而NAND需要擦寫(xiě)整個(gè)塊.其次,閃存擦寫(xiě)的次數都是有限的.當閃存使用接近使用壽命時(shí),經(jīng)常會(huì )出現寫(xiě)操作失敗;到達使用壽命時(shí),閃存內部存放的數據雖然可以讀,但不能再進(jìn)行寫(xiě)操作了.所以為了防止上面問(wèn)題的發(fā)生,不能對某個(gè)特定的區域反復進(jìn)行寫(xiě)操作.通常NANDFlash可擦寫(xiě)次數高于NORFlash芯片,但是由于NANDFlash通常是整塊擦寫(xiě),塊內的頁(yè)面中如果有一位失效整個(gè)塊就會(huì )失效,而且由于擦寫(xiě)過(guò)程復雜,失敗的概率相對較高,所以從整體上來(lái)說(shuō)NOR的壽命較長(cháng).
另一個(gè)共性是閃存的讀寫(xiě)操作不僅僅是一個(gè)物理操作,實(shí)際上在閃存上存放數據必須使用算法實(shí)現,這個(gè)模塊一般在驅動(dòng)程序的MTD'(Memory Technology Drivers)模塊中或者在FTLZ (Flash Translation Layer)層內實(shí)現,具體算法和芯片的生產(chǎn)廠(chǎng)商以及芯片型號有關(guān)系.通過(guò)比較可以發(fā)現,NAND更適用于復雜的文件應用,但是由于NAND芯片的使用相對復雜,所以對文件系統有較高的要求.
1.3.2. NANDFlash和NORFlash芯片的不同
(1)閃存芯片讀寫(xiě)的基本單位不同
應用程序對NorFlash芯片操作以“字”為基本單位.為了方便對大容量NorFlash閃存的管理,通常將NOR閃存分成大小為128KB或64KB的邏輯塊,有時(shí)塊內還分扇區.讀寫(xiě)時(shí)需要同時(shí)指定邏輯塊號和塊內偏移.應用程序對NandFlash芯片操作是以“塊”為基本單位.NAND閃存的塊比較小,一般是8KB,然后每塊又分成頁(yè),頁(yè)大小一般是512字節.要修改NandFlash芯片中一個(gè)字節,必須重寫(xiě)整個(gè)數據塊.
(2)NorFlash閃存是隨機存儲介質(zhì),用于數據量較小的場(chǎng)合;NandFlash閃存是連續存儲介質(zhì),適合存放大的數據.
(3)由于NorFlash地址線(xiàn)和數據線(xiàn)分開(kāi),所以NorFlash芯片可以像SDRAM一樣連在數據線(xiàn)上.NOR芯片的使用類(lèi)似于通常內存芯片,傳輸效率高,可執行程序可以在芯片內執行(XI P, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中.由于NorFlash的這個(gè)特點(diǎn),嵌入式系統中經(jīng)常將NOR芯片做啟動(dòng)芯片使用.NandFlash共用地址和數據總線(xiàn),需要額外聯(lián)結一些控制的輸入輸出,所以直接將NAND芯片做啟動(dòng)芯片比較難.
(4)NandFlash閃存芯片因為共用地址和數據總線(xiàn)的原因,不允許對一個(gè)字節甚至一個(gè)塊進(jìn)行的數據清空,只能對一個(gè)固定大小的區域進(jìn)行清零操作;NorFlash芯片可以對字進(jìn)行操作.所以在處理小數據量的I/O操作的時(shí)候的速度要快與NorFlash的速度.比如一塊NorFlash芯片通常寫(xiě)一個(gè)字需要10us,在32位總線(xiàn)上寫(xiě)512字節需要1280us;NandFlash閃存寫(xiě)512字節需要的時(shí)間包括:512×每字節50ns+10us的尋頁(yè)時(shí)間+200us的片擦寫(xiě)時(shí)間=234us.
(5)NandFlash閃存的容量比較大,最大容量己達到8G字節.為了方便管理,NandFlash的存儲空間使用了塊和頁(yè)兩級存儲體系,也就是說(shuō)它的存儲空間是二維的,比如K9F5608UOA閃存塊的大小為16K,每頁(yè)大小是512字節,每頁(yè)還16字節空閑區用來(lái)存放錯誤校驗碼空間(也稱(chēng)為out-of-band,OOB空間).在進(jìn)行寫(xiě)操作時(shí),NandFlash閃存每次將一個(gè)字節的數據放入內部的緩存區,然后再發(fā)出“寫(xiě)指令”進(jìn)行寫(xiě)操作.由于對NandFlash閃存的操作都是以塊和頁(yè)為單位的,所以在向NandFlash閃存進(jìn)行大量數據的讀寫(xiě)時(shí),NAND的速度要快于NOR閃存.
(6)NorFlash閃存的可靠性要高于NandFlash閃存,是因為NorFlash型閃存的接口簡(jiǎn)單,數據操作少,位交換操作少,因此可靠性高,極少出現壞區塊,一般用在對可靠性要求高的地方.NandFlash型閃存接口和操作均相對復雜,位交換操作也很多,關(guān)鍵性數據更是需安錯誤探測/錯誤更正(EDC/ECC)算法來(lái)確保數據的完整性,因此出現問(wèn)題的幾率要大得多,壞區塊也是不可避免的,而且由于壞區塊是隨機分布的,連糾錯也無(wú)法做到.
(7)NANDFlash一般地址線(xiàn)和數據線(xiàn)共用,對讀寫(xiě)速度有一定影響;NORFlash閃存數據線(xiàn)和地址線(xiàn)分開(kāi),相對而言讀寫(xiě)速度快一些.
(8)接口對比
NorFlash帶有通用的SRAM接口,可以輕松地掛接在CPU的地址、數據總線(xiàn)上,對CPU的接口要求低。NorFlash的特點(diǎn)是芯片內執行(XIP,eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中.如uboot中的ro段可以直接在NorFlash上運行,只需要把rw和zi段拷貝到RAM中運行即可.
NandFlash器件使用復雜的I/O口來(lái)串行地存取數據,8個(gè)引腳用來(lái)傳送控制、地址和數據信息。由于時(shí)序較為復雜,所以一般CPU最好集成NandFlash控制器.另外由于NandFlash沒(méi)有掛接在地址總線(xiàn)上,所以如果想用NandFlash作為系統的啟動(dòng)盤(pán),就需要CPU具備特殊的功能,如s3c2440在被選擇為NandFlash啟動(dòng)方式時(shí)會(huì )在上電時(shí)自動(dòng)讀取NandFlash的4k數據到地址0的SRAM中.如果CPU不具備這種特殊功能,用戶(hù)不能直接運行NandFlash上的代碼,那可以采取其他方式,比如好多使用NandFlash的開(kāi)發(fā)板除了使用NandFlash以外,還用上了一塊小的NorFlash來(lái)運行啟動(dòng)代碼.
(9)容量和成本對比
相比起NandFlash來(lái)說(shuō),NorFlash的容量要小,一般在1~16MByte左右,一些新工藝采用了芯片疊加技術(shù)可以把NorFlash的容量做得大一些.在價(jià)格方面,NorFlash相比NandFlash來(lái)說(shuō)較高,如目前市場(chǎng)上一片4Mbyte的AM29lv320 NorFlash零售價(jià)在20元左右,而一片128MByte的k9f1g08 NandFlash零售價(jià)在30元左右. NandFlash生產(chǎn)過(guò)程更為簡(jiǎn)單,NAND結構可以在給定的模具尺寸內提供更高的容量,這樣也就相應地降低了價(jià)格.
(10)可靠性性對比
NandFlash器件中的壞塊是隨機分布的,以前也曾有過(guò)消除壞塊的努力,但發(fā)現成品率太低,代價(jià)太高,根本不劃算.Nand器件需要對介質(zhì)進(jìn)行初始化掃描以發(fā)現壞塊,并將壞塊標記為不可用.在已制成的器件中,如果通過(guò)可靠的方法不能進(jìn)行這項處理,將導致高故障率。而壞塊問(wèn)題在NorFlash上是不存在的.
在Flash的位翻轉(一個(gè)bit位發(fā)生翻轉)現象上,NAND的出現幾率要比NorFlash大得多.這個(gè)問(wèn)題在Flash存儲關(guān)鍵文件時(shí)是致命的,所以在使用NandFlash時(shí)建議同時(shí)使用EDC/ECC等校驗算法.
(11)升級對比
NorFlash的升級較為麻煩,因為不同容量的NorFlash的地址線(xiàn)需求不一樣,所以在更換不同容量的NorFlash芯片時(shí)不方便.通常我們會(huì )通過(guò)在電路板的地址線(xiàn)上做一些跳接電阻來(lái)解決這樣的問(wèn)題,針對不同容量的NorFlash. 而不同容量的NandFlash的接口是固定的,所以升級簡(jiǎn)單.
(12)讀寫(xiě)性能對比
寫(xiě)操作:任何flash器件的寫(xiě)入操作都只能在空或已擦除的單元內進(jìn)行.NAND器件執行擦除操作是十分簡(jiǎn)單的,而NOR則要求在進(jìn)行擦除前先要將目標塊內所有的位都寫(xiě)為1.擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執行一個(gè)擦除/寫(xiě)入操作的時(shí)間約為5s.擦除NAND器件是以8~32KB的塊進(jìn)行的,執行一個(gè)擦除/寫(xiě)入操作最多只需要4ms. 讀操作:NOR的讀速度比NAND稍快一些.
(13)文件系統比較
Linux系統中采用MTD來(lái)管理不同類(lèi)型的Flash芯片,包括NandFlash和NorFlash.支持在Flash上運行的常用文件系統有cramfs、jffs、jffs2、yaffs、yaffs2等.cramfs文件系統是只讀文件系統.如果想在Flash上實(shí)現讀寫(xiě)操作,通常在NorFlash上我們會(huì )選取jffs及jffs2文件系統,在NandFlash上選用yaffs或yaffs2文件系統.Yaffs2文件系統支持大頁(yè)(大于512字節/頁(yè))的NandFlash存儲器.
【嵌入式文件系統移植】相關(guān)文章:
移植開(kāi)源軟件到嵌入式Linux系統技術(shù)攻略05-27
Linux文件系統簡(jiǎn)介06-01
Linux btrfs文件系統及管理07-31
Linux文件系統操作命令大全07-03
linux文件系統基礎知識匯總06-29
學(xué)習嵌入式08-24
Linux用戶(hù)/文件系統管理詳解05-10
嵌入式操作系統與嵌入式處理器08-15
Linux操作系統文件系統基礎知識07-25
IBM AIX 5.3 系統管理文件系統02-26