<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > uClinux系統平臺下的Flash存儲技術(shù)

uClinux系統平臺下的Flash存儲技術(shù)

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

目前,全世界的NOR Flash生產(chǎn)商主要有:Intel、AMD、Fujitsu和Toshiba,NOR Flash存儲芯片的容量從幾K到64M不等,未來(lái)數年里作為標準存儲設備N(xiāo)OR Flash很有可能取代ROM。NAND Flash 的生產(chǎn)廠(chǎng)商包括Samsung和Toshiba,同時(shí)二者也是M-System公司的“DiskOnChip”上Flash的供應商。NAND Flash存儲芯片的容量從8M到128M,而DiskonChip可以達到1024M的容量。

對于小型嵌入式系統設計,尤其是uClinux系統設計時(shí),NOR Flash更多的被采用。所以下面的介紹將更多集中在NOR Flash上。

系統設計

一般來(lái)說(shuō),在嵌入式系統設計中RAM和Flash的選擇是由設計者來(lái)權衡的,而價(jià)格往往是主要的決定因素。Flash在每M字節的存儲開(kāi)銷(xiāo)上較RAM要昂貴,對于uClinux系統來(lái)說(shuō)選擇Flash作為存儲器具有一定的優(yōu)勢,uClinux系統在上電后需要運行的程序代碼和數據都可以存儲在Flash中,甚至于放在CPU起始地址中的uClinux的啟動(dòng)內核都可以寫(xiě)入Flash中。所以從一定意義上講,嵌入式系統只用Flash就可以完成所需的存儲功能。

Flash存儲器的分區較硬盤(pán)的分區更為簡(jiǎn)單,分區后的Flash使用起來(lái)更加方便。典型的Flash分區如下

SEGMENT PURPOSE

0 Bootloader

1 foctory configuration

2

. kernel

X

. root filesystem

Y

分區0放置Bootloader,分區1放置factory configuration,分區2到分區X放置系統內核,分區X到分區Y放置根文件系統。Flash的分區可以根據需要劃分,uClinx中支持Flash存儲器的塊設備驅動(dòng)負責定義上述的分區。

和PC機下的Linux不同,Flash的分區把系統的內核文件和根文件系統單獨劃分到兩個(gè)分區中,而PC機的硬盤(pán)是把內核文件和根文件放在一個(gè)分區內。PC機下的Linux的Bootloader是LILO或GRUB,它們在系統啟動(dòng)時(shí)能智能地在分區中找到內核文件塊并把它加載到RAM中運行。對于Flash而言,把內核的鏡像文件寫(xiě)進(jìn)一個(gè)單獨的分區對嵌入式系統有兩大優(yōu)點(diǎn):1)系統可以直接在Flash上運行2)對于LILO或GRUB更易找到內核代碼加載,甚至可以不用LILO或者GRUB引導而知直接運行。

內核文件和根文件系統在Flash中的放置可以根據系統設計需要適當選擇,選擇見(jiàn)下表。

模 式 選 擇

優(yōu) 點(diǎn)

缺 點(diǎn)

內核和根文件放在固定偏移地址單元(單獨分區)

適用于主要系統成員地址單元固定,易于引導程序(Bootloader)加載和分別升級內核和根文件系統。

在內核和根文件系統之間不可避免要浪費Flash空間。

根文件系統緊跟內核放置(不單獨分區)

節省Flash存儲空間

內核文件和根文件合二為一,單獨升級不夠方便。

內核和根文件系統壓縮放置

節省大量的Flash存儲空間,可選擇壓縮放置內核或者根文件系統

系統需要引導程序(Bootloader)和RAM支持。

表1

引導程序選擇(Bootloader Selection)

系統啟動(dòng)之前的引導過(guò)程是CPU初始化的過(guò)程。包括ARM和X86在內的許多CPU是從固定的地址單元開(kāi)始運行引導程序的。其它的部分CPU而是從某個(gè)地址單元讀入引導程序的入口地址,然后再運行引導程序,譬如M68K和COLDFIRE系列。所以這些都影響到Flash中的系統啟動(dòng)代碼的存放地址。

首先系統要考慮的是系統在什么地址存放Bootloader,或者說(shuō)系統從哪個(gè)地址單元開(kāi)始加載運行系統內核代碼。

CPU啟動(dòng)后直接運行系統內核是可以實(shí)現的。對于uClinux來(lái)說(shuō)啟動(dòng)代碼必須包括芯片的初始化和RAM的初始化等硬件的配置,同時(shí)加載內核的代碼段到RAM中并清除初始化的數據段內容。盡管這些實(shí)現起來(lái)很直觀(guān),但是具體要把啟動(dòng)代碼存放在Flash中正確的地址偏移單元內使CPU在一啟動(dòng)就能執行就比較困難了。不過(guò)現在技術(shù)比較先進(jìn)的CPU都將默認的偏移地址設置為0或者在偏移地址為0的附近存放起始地址。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>