WINCE BIB檔案相關資料

2021-05-18 15:18:36 字數 4253 閱讀 7524

在wince中使用的乙個重要的檔案就是bib檔案,全稱binary image builder file。在wince的編譯過程中會用到bib檔案,應該是在最後的makeimg階段。所有的bib檔案會被合併成ce.bib檔案,然後romimage.exe會根據bib檔案中的描述來決定哪些檔案最終被包含到wince image中。當然,bib檔案還決定了wince裝置記憶體的分配,其中定義了wince image占用哪塊記憶體,framebuffer占用哪塊記憶體等。

在bib檔案中分為4大項:memory項,config項,modules項和files項。下面分別作個解釋:

memory:定義了記憶體分配的相關設定,一般在bsp中的config.bib檔案中。

config:在最後的makeimg階段,為romimage.exe提供一些生成wince image的配置屬性。該項是可選的,一般也在bsp中的config.bib檔案中定義。

modules:定義了一些會被打包到wince image中的模組或者檔案,比如dll,exe等。這些檔案會被romimage.exe標記為載入到ram中或者xip。我們可以在這裡新增自己的wince應用程式或者模組,但是不要新增managed binaries,一般指.net的程式。

files:定義了一些作業系統會用到的其他的檔案,比如字型檔案,等。這些檔案也會在wince執行的時候被載入到ram中。

下面會詳細介紹上面的4大項:

1.       memory項

一般都在config.bib檔案中定義,開頭會有memory的字樣。這裡定義了為wince image以及其他模組預留的ram,同時也定義了wince可以使用的ram。具體格式如下:

memory

name    start address        memory size        type

name:該記憶體區域的名字,必須是唯一的。

start address:該記憶體區域的起始位址,用十六進製制表示。

memory size:該記憶體區域的大小,用十六進製制表示。

type:記憶體區域的型別。包涵的多種型別如下。

型別值 描述

fixupvar 用於在wince編譯的makeimg階段,就初始化乙個核心中的全域性變數。

nandimage 當建立了乙個使用binfs的image的時候,nand裝置上的wince kernel重定向到ram中的區域,當系統訪問該區域的時候,binfs會負責訪問nand裝置上相應的位置,並返回資料給系統,實際上就是在nand裝置上面實現了xip的功能。

ram 定義了被wince系統使用的ram區域,這塊記憶體必須是連續的,這裡有一點要注意就是從硬體的角度來說,這塊記憶體不能跨越兩片sdram,也就是說整個區域空間必須在一片硬體sdram上。

ramimage 定義了一塊記憶體區域用於載入wince image,實際上wince啟動以後,image會被拷貝到這塊記憶體區域上面執行。乙個image只能有乙個連續的ramimage區域。

reserved 這塊記憶體區域會被預留出來,一般用於frambuffer或者是dma buffer,或者是一塊共享記憶體用於eboot傳遞引數給wince系統。

extension 定義了一塊wince image中的區域作為romhdr extension的資料區域。

2.config項

一般在config.bib檔案中定義,定義了一些額外的配置引數,其中一些對於wince image來說也很重要。具體格式如下;

config

item=parameter

item 描述

autosize 允許未被使用的wince image的ram被用作wince系統的ram。預設值為on。

compression 允許romimage.exe壓縮wince image中的可寫入部分。預設值為on。

bootjump 定義了跳轉跳轉頁在ramimage空間的位址。而不是預設情況下的ramimage的首位址。預設值為none。

fsrampercent 定義了檔案系統使用的記憶體的百分比。預設值為0x80808080。

byte 0:第乙個2mb中,每1mb所包含的4kb的倍數。

byte 1:第二個2mb中,每1mb所包含的4kb的倍數。

byte 2:第三個2mb中,每1mb所包含的4kb的倍數。

byte 3:剩下的記憶體中,每1mb所包含的4kb的倍數。

kernelfixups 定義了romimage.exe是否重新定向核心的可寫入區域。預設值為on,核心的可寫入區域被重新定向到ramimage的起始位置。

output 定義了最終生成的image存放的路徑。預設為%_flatreleasedir%。

profile 定義了是否在wince image中包含profiler的結構和符號。預設值為off。

resetvector 重新指定跳轉頁的位置,一般針對mips晶元從0x9fc00000開始引導的問題。

romflags 核心標記位,可以進行組合:

0x01表示禁用按需分頁。

0x02表示禁用完全核心模式,完全核心模式表示所有的執行緒都執行在核心模式。

0x10表示只信任rom modules中的模組。

0x20表示停止重新整理tlb。

0x40表示按照/base鏈結選項中的位址載入dll。

romstart 指wince image在記憶體中的起始位址。

romsize 指wince image的大小。

romwidth 指資料匯流排的寬度。

romoffset 指定乙個偏移量來修改.bin檔案中的每乙個記錄的位址。一般用於rom中的.bin檔案載入到ram來執行的情況,主要是表示儲存.bin的位置和執行.bin的位置不一樣。

sre 使romimage.exe產生乙個.sre檔案。預設值為off。

x86boot 定義是否插入一條跳轉指令,在x86復位向量位址的時候。

3.modules項和files項

該項列出了所有被包含在wince image中的模組以及檔案,以及這些模組和檔案以什麼方式被載入到記憶體中。具體格式如下:

modules

name    path            memory            type

name:模組的名字,比如乙個dll或者exe檔案的檔名。

path:路徑,一般都是wince的工程的release目錄。

memory:指定該模組被放在哪個區域,一般都是nk區域。

type:定義了檔案的型別。具體如下:

型別 描述

s 系統檔案。

h 隱藏檔案。

r 只壓縮模組的資源部分。

c 壓縮模組的所有部分。

d 禁止除錯。

n 模組是不可信任的。

p 告訴romimage.exe不需要檢查cpu的型別。

k 告訴romimage.exe必需固定該模組的核心位址。有該標記的模組只能被loadkernellibrary函式載入。

x 告訴romimage.exe對該模組簽名。

m 執行時載入整個模組,不要按需分頁。

l 告訴romimage.exe不要分離rom dll。

一般files項的type只支援s,h,n,d幾個型別,而modules項的type是都支援的。

舉個例子吧:

init.exe            %_winceroot%/release/init.exe            nk    sh

mydll.dll        %_winceroot%/release/mydll.dll       nk    shc

對於bib檔案來說同樣支援「條件編譯」,我們可以通過設定環境變數來選擇性地將某些模組打包到wince image中。一般在bsp中,對於一些驅動模組的環境變數我們if來進行條件判斷。而對於wince的系統模組來說,一般都是sysgen變數,應該使用@cesysgen if來判斷。

我們在bsp的開發中最常見的主要就是eboot.bib,config.bib,platform.bib和project.bib。下面簡單介紹一下:

project.bib:該檔案主要自建立的wince工程中所需的一些檔案。

platform.bib:該檔案包含了和硬體平台相關的檔案,主要以驅動程式為主。

config.bib:該檔案描述了wince系統的記憶體的配置。

eboot.bib:該檔案描述了wince的eboot的記憶體的配置。

還有其他的一些bib檔案,在wince系統編譯後都會背拷貝到工程的release目錄下面。比如common.bib,ie.bib等。這些檔案列出了wince的元件相關的檔案,根據使用者訂製的系統,會被選擇性的打包到wince image中。

wince bib檔案合成

在wince中,reg檔案和bib檔案是兩種重要的檔案,它影響了整個的ce系統。在解析的過程中,原始的common.bib,config.bib,project.bib,platform.bib等檔案會合成為ce.bib,而原始的common.reg,project.reg,platform.reg...

C C 檔案操作相關資料

c ofstream和ifstream詳細用法 c 程式設計中對緩衝區的理解 c語言檔案操作 linux系統下c 語言進行檔案操作 linux系統下,一切皆檔案,只有一種檔案系統,因此二進位制方式和文字方式 ascii碼方式 不存在區別。windows系統下c 語言進行檔案操作 a.以文字方式開啟檔...

PE檔案格式及相關資料

pe檔案格式應用於所有32位windows系統 windows 9x,windows nt,windows 2000及windows xp vista已經對pe格式進行了公升級,也出現了pe64 而在msdn 98中有pe的大量詳細資料 按目錄 msdn library visual studio ...