轉載請註明出處
作者:小馬
剛學wince那會,對它的檔案儲存體老是理解不了. 最近公司在做一個wince下的終端移植項目,中間也遇到了一些儲存方面的問題,隨著學習慢慢深入, 有了一些自己的理解.
基於wince的裝置,一般有下面幾種實體儲存體裝置:nand flash
nor flash
SDRAM
另外還有諸如SD卡, u 盤等一些不常用的外部儲存.
nand flash在wince下應用時, 你可以把它理解為PC上的硬碟, 我們看一下PC的硬碟裡放了什麼. 首先是你的作業系統檔案佔據了C盤的一部分空間, C盤剩下的空間以及其它盤的空間就是你可以自由訪問的.
nand flash在基於wince的開發板上一般被分為三個部分, 首先是一個叫boot loader的東東,它的映像檔案佔了nand flash的第一部分, 然後是你的wince的映像檔案, 一般都有30M左右. 相當於PC機上安裝完作業系統占的空間, 最後剩下的部分的格式化後你可以拿來任意使用. Boot loader 主要做兩件事,一是初始化一些硬體資源(比如cache), 二是載入wince系統運行. 你可能要說,nand flash與電腦硬碟的區別就是它多了一個boot loader. 其實這樣說不完全對,電腦其實也有一個bootloader, 它的名字叫BIOS. 只不過BIOS不是放在硬碟裡,而是固化在主板上的唯讀ROM裡.
Nand flash最後剩下的這部分這間怎麼用呢,wince啟動後,開啟”我的裝置”是看不到這部分空間的,需要你到”儲存空間管理器”(在控制台裡)去格式化一下,然後建立一個分區. 這之後即使你冷啟動系統,它也是可見的.
wince最大可以支援多大的nand flash呢? 一般情況下,bootloader也就是幾百K, wince系統映像幾十M, 我們當然是希望nand flash越大越好, 這樣我們能任意支配的空間就大了. 先來看一下PC上最大可以支援多大的硬碟容量. 目前市場上已出了T數量級的硬碟, 你的電腦能支援的硬碟容量是什麼決定呢. 是主板,再具體點,是BIOS,如果你的主板支援48 bit LBA(定址), 則硬碟最大可以是2的48次方.
市場上的nand flash 晶片硬體介面無非包括控制引腳,資料引腳夫,電源和地引腳. 然後資料口和地址是複用的. 下面是K9F1208U0B的引腳圖,可以很清楚的看到上面幾部分
是了,只要能和CPU在硬體上介面匹配,然後bootloader裡驅動做相應改動,就可以支援市場上最大的nand flash, 目前市場上最大的nand flash容量我不是很清楚,但06年三星就已經推出了32G的nand flash, 所以現在最大的容量起碼也得大過這個數.
再說說wince系統的記憶體配置.
一般買一塊基於wince的開發板,如果廠家說這個板子的記憶體是64M, 一般是說SDRAM有64M, wince的記憶體就是指這個SDRAM.Wince 下的記憶體實際上是分為兩個部分的. 即Object Storage Service和程式記憶體.也即:
Wince記憶體 = Object Storage Service + 程式記憶體.
拿64M的這個板子舉例. 開發板上電, 進入控制台—系統,左邊是Object Storage Service,右邊是程式記憶體.
Object Storage Service是wince裡一個新的概念. 嵌入式wince作業系統一般是用在消費電子上面, 比如pocket pc, 手機, PDA等行動裝置上. 這一類的裝置一般都是有兩個電源的, 一個是主電源(比如你的手機電池), 一個是後備電池(拆開手機,電路板上可以找到那個小電池). 後備電池的作用就是在主電源沒電的情況下,維持作業系統的一些需要儲存的資料, 比如註冊表, 資料庫等. 而這些要儲存的資料就是放在Object Storage Service裡的,可以做個測試, 複製一個檔案到wince的windows目錄下, 你會發現Object Storage Service佔用空間變大。講到Object Storage Service就不能不說檔案系統的概念.
wince 的檔案系統分為兩種,一種是內建的檔案系統, 如RAM檔案系統和ROM檔案系統. 一種是可安裝的檔案系統, 如FAT檔案系統. 內建的檔案系統是放在Object Storage Service裡的,Object Storage Service從物理角度來講就是一個RAM,但從應用角度看其實是個硬碟. 除了內建的檔案系統外,它還包括註冊表和資料庫. 最大支援256M的大小. Object Storage Service的存在, 面向使用者隱藏了ROM檔案系統和RAM檔案系統的差異, 對使用者來講,都可以訪問,只不過ROM裡的檔案是唯讀. 從另一個角度也就是說,這些檔案沒有必要在物量上駐留在Object Storage Service裡.而可安裝的外部檔案系統存在的意義是提供對外部存放裝置的訪問,典型的比如nand flash和SD卡等.
很多人在網上問過一個問題:如何修改Object Storage Service和程式記憶體的大小比例關係?
Object Storage Service和程式記憶體的大小修改就比較人性化了, 開啟控制台-儲存空間管理器,可以看到一個滑塊,左右移動它就可以改變它們的比例. 但是有一點要注意,這個設定是不會被儲存的, 系統冷啟動後還是會恢複預設設定的(一般是各佔一半). 那怎麼辦呢?有辦法, 如果你在配置系統時就知道這兩部分記憶體所要佔的比例,可以在config.bib裡加上下面的語句
FSRAMPERCENT = 0Xxxxxxxxx
這個值可以改變預設設定.
最後一個問題, wince最大支援多大的實體記憶體, 也就是SDRAM最大可以是多少. 在硬體條件允許的情況下,wince的核心(最新版本5.0)只能管理最大512M的實體記憶體, 這是由系統本身的記憶體映射機制決定的.
就說這麼多吧,有不對的地方請指出.