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