Windows Mobile 編譯的內部結構和步驟

來源:互聯網
上載者:User

編譯分為4 個階段。
(1)CESYSGEN 編譯階段
這是編譯的第一階段,由sysgen.bat 完成。這部分首先將使用者在定製平台時排除在外的
系統功能所對應的檔案從編譯的列表中剔除,保留和定製功能相關的標頭檔、def 檔案以及.lib
檔案,這些檔案將被用來編譯成DLL 以及在後續編譯過程中所產生的其他檔案。此外,被處
理過的標頭檔和庫檔案可以被用來匯出平台SDK。
在IDE 整合式開發環境中,這個部分有兩個名稱:generate system headers 和re-generate
system headers。實際上它們的功能是一樣的。re-generate system headers 首先把已經存在的頭
檔案等全部刪除,然後在重新過濾檔案,再進行處理。re-generate system headers 將花去很多
時間,但是當使用者重新設定了系統結構後,這樣做還是有必要的。當使用者已經設定完系統配
置後,本階段編譯並不是每次編譯作業系統時都需要進行的。
圖19 是本階段編譯的。

(2)BSP 編譯階段
這個階段的編譯由Build.exe 完成。此階段以後的編譯過程將佔據絕大部分的編譯時間。
編譯器將編譯核心、圖形介面模組、事件子系統、OEM 適配層的原始碼,並且將這些部分和
BSP 編譯出的檔案連結在一起。這些模組是和硬體平台息息相關的,因此必須得到BSP 的支
持。核心模組和OAL 相連結,產生nk.exe。在本階段中將使用到一組特殊的檔案,這些檔案
將指導如何進行編譯,並且決定哪些檔案是需要被編譯和連結的。DIRS 將指示從哪些路徑

尋找需要編譯的檔案。SOURCES 檔案定義了那些檔案是需要被編譯,如何被編譯的。這兩
個檔案都只是文字檔,但是它們描述了大量編譯過程的資訊。這兩個檔案的格式都是基於
makefile 檔案的。DIRS 檔案可以簡單地等同於類似Visual C++環境中的workspace。而
SOURCES 檔案可以看作是工程檔案。SOURCES 檔案相對比較複雜,但是它基本上設定了各
模組的編譯和連結順序以及所要包含和編譯的源檔案。
下面是kaola BSP 下DIR 檔案的內容:
DIRS= \
drivers\
gwe\
kernel \
pmu
以上列出了在本階段編譯時間,要掃描的目錄項。在編譯器進入這些目錄後,再掃描這些
目錄中的DIR 檔案或者是SOURCES 檔案(兩者選其一),從而進行遞迴掃描所有的目錄。
(3)BUILDREL 編譯階段
這個階段主要由BuildRel.BAT 檔案完成。它將前兩個階段編譯產生的目標檔案、EXE 或者
DLL 檔案,從它們各自的目錄中複製到為編譯image 而準備的release(_FLATRELEASEDIR)目
錄中。BSP 下的目標檔案和子目錄將被複製的目標檔案夾下以獲得前一階段編譯的各模組的中間
檔案。在整合式開發環境中,作業系統的整體編譯將在所有需要的檔案被複製到_FLATRELEASEDIR
目錄後執行。
(4)MAKEIMG 編譯階段
這個階段由makeimg.exe 檔執行,這是最終的編譯階段,它將所有的二進位檔案連結
到一起,產生適合特定平台的作業系統鏡像檔案。本階段根據配置處理所有release 目錄下的
檔案。同樣它還要尋找處理所有模組中XIP 的問題。
本編譯階段主要由3 個子階段組成。
第一階段將各種的設定檔整合到一起,比如BIB、DAT、REG、DB 等,針對每種
設定檔,整合的資訊將存放到一個master 檔案中。表1 顯示了這些檔案和對應的master
檔案。
表1 各種設定檔和相應的master 檔案
源 文 件 Merged master 檔案 Description
Common.bib,
Config.bib,
Project.bib,
latform.bib
Ce.bib 描述了將要被連結到作業系統鏡像檔案中的
Windows CE 檔案
Common.reg,
Project.reg,
Platform.reg
Reginit.ini 提供了作業系統鏡像檔案的註冊表進入點
Common.dat,
Project.dat,
Platform.dat
Initobj.dat 提供了對作業系統鏡像檔案以及各種目錄的描述
1 9
續表
源 文 件 Merged master 檔案 Description
Common.db,
Project.db,
Platform.db
Initdb.ini 定義了Windows CE Object Storage Service
在第二個子階段中,makeimg 將用LOC 檔案中指定的EXE 和DLL 模組來替換當前指定
的模組。在資源被更新以後,makeimg 將啟動RomImage 進入第三個編譯子階段。
在第三個子階段中將連結並且定位所有XIP 檔案。同時建立ROM 檔案系統的鏡像檔案。
這個檔案系統將最終被整合到Windows CE 的統一檔案系統中。在Windows CE 啟動以後,
所有\Windows 下的檔案都是對應ROM 檔案系統的。RomImage 將最終建立NK.BIN 鏡像文
件。這個鏡像檔案可以是SRE 格式或者BIN 格式,它們都能被編程器解釋後下載到目標機
中運行。SRE 是基於ASCII Hex 的檔案格式,在嵌入式系統中被廣泛使用;BIN 格式檔案是
微軟公司提供的類似於SRE 的二進位檔案格式。

2.編譯中的設定檔解釋
(1)REG 檔案
Windows CE .NET 編譯過程中使用的REG 檔案和其他Windows 系統上的幾乎一樣。
主要的區別在於REG version marker 從檔案頭上被刪除了,這樣做的理由是防止將預設
的REG 檔案直接整合到定製的平台中。因為如果REG version marker,保留的話,雙擊
REG 檔案的表徵圖將直接把預設的REG 檔案直接整合到定製的平台中,而不是編輯這個
檔案。
下面是註冊表檔案的內容範例,鍵被用括弧括起來,其下有子鍵並且已經被賦值,還有
資料類型和預設值。
; StrataFlash block driver.
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"MemBase"=dword:b8380000
"MemLen"=dword:01f80000
; PCMCIA Driver
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCMCIA]
"Dll"="PCMCIA.dll"
"Order"=dword:0
"IClass"=multi_sz:"{6BEAB08A-8914-42fd-B33F-61968B9AAB32}=PCMCIA
Card Services"
以上是節選自平台的註冊表檔案內容。在這段代碼中定義了兩種裝置的驅動資訊:Flash
和PCMCIA 裝置驅動。
在Flash 的鍵下是MemBase 和MemLen 子鍵。MemBase 代表Flash 的物理起始地址
8380000,MemLen 定義了Flash 的容量,1f80000 也就是32MB。PCMCIA 驅動中,驅動程
序位於PCMCIA.dll 的動態連結程式庫中,並且定義了代表該裝置的ICLASS 和GUID。

(2)BIB 檔案
ROMIMAGE 使用Binary Image Builder(BIB)檔案來配置ROM 檔案系統。BIB 檔案是
文字格式設定的檔案,其中使用了不同的關鍵詞來定義不同的section。
以關鍵詞MODULES 開頭的是模組section,其中列出了XIP 的可執行檔。
以關鍵詞FILE 開頭的是其他需要被加入鏡像的檔案section。這些檔案包括bitmaps、data
file 和HTML pages)。同時也可以描述非XIP 的可執行模組。在FILE 中羅列的檔案,預設是
被壓縮的,以減少空間佔用。
下面是對BIB 檔案結構的描述:
<Target Name> <Whitespace> <Workstation path> <memorySection> <flags>
<Target Name>是將在ROM 檔案系統也就是/Windows 下將出現的檔案名稱。<Workstation
path>指在開發環境中這些檔案的路徑。<memory Section>一般為“NK”。
<flags>可以使用表2 中所列的值。
表2 flags的值及其說明
flags 功 能
C Compressed 加密的(檔案section 預設加密節省空間的)
U Uncompressed 未加密(modules section 預設)
R 只加密資源
H 把檔案隱藏
S 系統檔案
BIB 檔案中還有兩個section,它們一般出現在Config.bib 檔案中。它們都是:
memory section,它定義了目標系統的記憶體分布。它使用如下的格式標記:
<name> <Virtual Address> <Size> <TYPE>
<TYPE>可以使用表3 中的值:
表3 memory section 的TYPE 描述
值 功 能
RAM 此項描述可用的RAM 區,RAM 區用來運行進程和檔案系統。這個RAM 區必
須是連續的。
RAMIMAGE 此項描述的地區將被視作ROM。
RESERVED 此項範圍內的記憶體地區是被保留的。這個地區的記憶體可能被用來當作video
frame buffer 或者direct memory access(DMA) buffer。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.