<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

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

          系統(tǒng)設(shè)計(jì)

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

          Flash存儲器的分區(qū)較硬盤的分區(qū)更為簡單,分區(qū)后的Flash使用起來更加方便。典型的Flash分區(qū)如下

          SEGMENT PURPOSE

          0 Bootloader

          1 foctory configuration

          2

          . kernel

          X

          . root filesystem

          Y

          分區(qū)0放置Bootloader,分區(qū)1放置factory configuration,分區(qū)2到分區(qū)X放置系統(tǒng)內(nèi)核,分區(qū)X到分區(qū)Y放置根文件系統(tǒng)。Flash的分區(qū)可以根據(jù)需要?jiǎng)澐?,uClinx中支持Flash存儲器的塊設(shè)備驅(qū)動(dòng)負(fù)責(zé)定義上述的分區(qū)。

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

          內(nèi)核文件和根文件系統(tǒng)在Flash中的放置可以根據(jù)系統(tǒng)設(shè)計(jì)需要適當(dāng)選擇,選擇見下表。

          模 式 選 擇

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

          缺 點(diǎn)

          內(nèi)核和根文件放在固定偏移地址單元(單獨(dú)分區(qū))

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

          在內(nèi)核和根文件系統(tǒng)之間不可避免要浪費(fèi)Flash空間。

          根文件系統(tǒng)緊跟內(nèi)核放置(不單獨(dú)分區(qū))

          節(jié)省Flash存儲空間

          內(nèi)核文件和根文件合二為一,單獨(dú)升級不夠方便。

          內(nèi)核和根文件系統(tǒng)壓縮放置

          節(jié)省大量的Flash存儲空間,可選擇壓縮放置內(nèi)核或者根文件系統(tǒng)

          系統(tǒng)需要引導(dǎo)程序(Bootloader)和RAM支持。

          表1

          引導(dǎo)程序選擇(Bootloader Selection)

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

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

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



          關(guān)鍵詞:

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();