這篇文章主要講解PB的配置文件。從用途方面分析,PB包含兩種配置文件。分別是源碼配置文件和鏡像配置文件。下面分別講解這兩種配置文件。 一、源碼配置文件 源碼配置文件用于編譯源碼時使用。這里的源碼是指Windows CE公開的源碼,如驅動程序、系統應用程序等。PB在編譯平臺時將這些公開的源碼即時編譯并將編譯鏈接后的文件復制到平臺工程子目錄里。記得前面講過PB在開始編譯時調用cebuild.bat批處理文件,cebuild.bat執行的一個步驟是針對_DEPTREES變量指定的所有目錄執行build.exe和sysgen.bat。build.exe在編譯源碼文件時會尋找當前目錄下存放的源碼配置文件,根據配置文件的信息來編譯和鏈接,產生EXE、DLL、LIB文件。CE的源碼文件所在的目錄中都包含了相應的配置文件,這些配置文件只對當前目錄或者子目錄的源碼有效,具體分為三種: DIRS文件:文件內容和解釋如下: DIRS:指定哪個子目錄的源碼要被編譯 DIRS_CE:只有為CE編寫的源碼才被編譯 OPTIONAL_DIRS:指定可選的目錄(很少使用這個選項),可以只編譯指定目錄而不是全部編譯。 SOURCES文件:通過宏定義來指定編譯和鏈接涉及到的文件,文件內容和解釋如下: TARGETNAME:指定編譯鏈接產生的主文件名 TARGETTYPE:指定編譯鏈接產生的文件的類型(決定了擴展名)。文件共分三種:.lib(LIBRARY)和.dll(DYNLINK)和.exe(PROGRAM)。 TARGETLIBS:定義.lib鏈接文件,鏈接時需要這個文件。 SOURCES:源碼文件。包含擴展名為*.c或*.h 或*.cpp的文件。 EXEENTRY:.exe文件的執行代碼入口點。 sources.cmn文件是通用的SOURCES文件。在這個文件中可以指定作用于所有源碼文件的配置選項。 MAKEFILE文件:包含默認的編譯和鏈接選項 整個編譯和鏈接過程:build.exe收集編譯和鏈接需要的數據(源碼文件、鏈接文件、編譯和鏈接選項)產生一系列的內部環境變量,然后調用nmake.exe,nmake.exe根據內部環境變量執行編譯、鏈接,最后產生最終文件(*.lib *.exe *.dll)。 二、鏡像配置文件: 鏡像配置文件用于在制作CE鏡像文件時使用。CE的鏡像文件擴展名為.bin。制作鏡像工具romimage.exe除了能夠產生.bin文件外,還能夠產生.abx和.sre文件。整個鏡像的制作過程由makeimg.exe控制,它調用cenlscmp.exe、fmerge.exe、res2.exe、txt2ucde.exe、regcomp.exe、romimage.exe等。這些工具大部分在前面已經介紹過了。鏡像配置文件類型有.bib、.reg、.db、.dat、.str。如果主文件名為Common,表示是通用的配置文件。如果主文件名為Platform,表示是某一個BSP的配置文件。如果主文件名是Project,表示是定制的一個平臺的配置文件。在PB中修改配置文件前如果沒有把握最好先做好備份。 .bib(Binary image builder) 定義包含在內核鏡像中的文件和模塊的名稱、加載位置。主要的bib文件有Common.bib,Config.bib, Project.bib, Platform.bib等。.bib文件內部分為幾個部分: 【MEMORY】用于定義有效的物理內存塊,在此將整個RAM分為幾個部分。 格式: 名稱 首地址 大小 內存類型 名稱: 內存區域的唯一名稱(RESERVE是預定義名稱,可以用多次,表示此區域保留) 首地址: 內存區域的首地址(十六進制表示) 大小: 內存區域的大小(十六進制表示) 內存類型:分為三種。 RAM: 運行所有進程的內存區域(整個區域必須是連續的,且不能含空洞) RAMIMAGE:專用于保存鏡像的內存區域。(每個.bin中只能指定一個RAMIMAGE) RESERVED:保留內存區域(這樣的區域一般用于驅動程序使用,如顯卡緩沖區、DMA緩沖區) 舉例: ;名稱 首地址 大小 內存類型 IF IMGRAM64 NK 80220000 009E0000 RAMIMAGE RAM 80C00000 03000000 RAM UMABUF 83C00000 00400000 RESERVED ENDIF 注:整個內核的地址都是從0x8000 0000開始的。如果是x86系列的CPU,那么物理內存地址與虛擬地址映射關系在oeminit.asm中指定。 【CONFIG】類似環境變量,PB預設置了一些配置變量。常用的配置及說明如下: AUTOSIZE: 格式:AUTOSIZE = OFF | ON 默認值為OFF。在config.bib中的MEMORY部分定義了有效的內存區域,其中兩部分RAM、RAMIMAGE分別用于進程使用區域和保存鏡像區域。如果為ON,romimage.exe在創建nk.bin時將RAM和RAMIMAGE兩部分合并成一個部分,然后從最低地址開始保留RAMIMAGE大小的內存,其余都作為RAM使用。 BOOTJUMP: .......... 更多詳情參考:http://www.hzlitai.com.cn/article/ARM9-article/system/1629.html |