轉自:http://hi.baidu.com/zhlg_hzh/blog/item/32395143daf6d41f72f05d12.html
在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:內存區域的類型。包涵的多種類型如下。
2.CONFIG項
一般在config.bib文件中定義,定義了一些額外的配置參數,其中一些對於WinCE image來說也很重要。具體格式如下;
CONFIG
ITEM=Parameter
3.MODULES項和FILES項
該項列出了所有被包含在WinCE image中的模塊以及文件,以及這些模塊和文件以什麼方式被加載到內存中。具體格式如下:
MODULES
Name Path Memory Type
Name:模塊的名字,比如一個dll或者exe文件的文件名。
Path:路徑,一般都是WinCE的工程的Release目錄。
Memory:指定該模塊被放在哪個區域,一般都是NK區域。
Type:定義了文件的類型。具體如下:
一般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中。