BSP工程中的bib文件簡介

在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中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章