<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 手把手學(xué)習WinCE 5.0(二)

手把手學(xué)習WinCE 5.0(二)

作者: 時(shí)間:2014-04-24 來(lái)源:網(wǎng)絡(luò ) 收藏

經(jīng)過(guò)前兩次的邊做邊學(xué),我們已經(jīng)創(chuàng )建并可以自由修改自己的平臺了,這次我平來(lái)補充一點(diǎn)理論知識,以便加深對CE生成過(guò)程的了解。在此之前,需要說(shuō)明的是CE的目錄結構是很龐大而復雜的,在以后的工作中很多事情會(huì )取決于你對目錄結構的了解程度,在此,CE5的文件夾結構未發(fā)生大的改變,因此想了解此部分內容的朋友可直接參閱本人的《WinCE實(shí)驗教程》相關(guān)部分。與CE4稍有不同的是在CE5中你自己的平臺不在存放于Public文件夾中了,而是專(zhuān)門(mén)有一個(gè)PBWorkspaces的文件夾,這樣更加方便管理且結構清晰了。

本文引用地址:http://dyxdggzs.com/article/245962.htm

我們重點(diǎn)要說(shuō)的還是CE的生成過(guò)程,即你在編譯平臺的時(shí)候Platform Builder到底為你做了些什么?

實(shí)際上,IDE在生成CE的過(guò)程當中共經(jīng)歷了四個(gè)階段,分別是Sysgen、Build、Copy、Make,即組件生成階段,編譯階段,Release文件夾復制階段和鏡像打包階段。下面我們就分階段來(lái)說(shuō)明一下。

在Public文件夾下是CE為我們提供的可用組件,我們定制自己的平臺是通過(guò)Platform Builder做的選擇就是從這里面選擇了一部分需要的組件。在這些文件夾中,包含了所有可用的庫文件,頭文件,DEF文件,當然也包括了所有可導出的函數說(shuō)明。在Sysgen階段要做的就是從中選擇我們自己的平臺需要的頭文件,庫文件和導出函數以創(chuàng )建我們自己平臺需要的組件。它所完成的頭文件會(huì )以C++注釋的方式加以標記,這樣它就可以選擇需要的部分來(lái)導出,最后把所有需要的庫進(jìn)行鏈接就得到了我們自己平臺所需要的東西了,它就放在Wince500pbworkspaces%ProjectName%WINCE500%CPU_TYPE%_x86cesysgen文件夾下。

經(jīng)過(guò)上一階段后,需要的頭文件庫文件就準備好了,但這只是系統組件部分,我們的平臺還有各種設備驅動(dòng)程序等其他的東西,這些就要在Build階段來(lái)完成了。

整個(gè)Build階段都是在圍繞著(zhù)DIRS文件和SOURCES文件來(lái)進(jìn)行,前者決定了哪些文件夾要被編譯,后者決定了哪些文件要被如何編譯,也就是說(shuō),此階段要完成的就是各種源程序的編譯過(guò)程。下面我們就重點(diǎn)看一下這兩種文件的內容。

DIRS文件可以在很多文件夾中找到,它列出了要參與編譯的子文件夾,內容大體如下:

DIRS_CE= ceddk regenum pcibus 這樣,build.exe在編譯的時(shí)候就可以通過(guò)它來(lái)逐層找到要參與編譯文件夾了。至于其中的OPTIONAL_DIRS、DIRS_NTANSI等項目的含義可以通過(guò)幫助查到。

同樣,SOURCES文件對參與編譯的源程序的編譯方式做了規定,例如通過(guò)TARGETNAME規定編譯后的名稱(chēng),通過(guò)TARGETTYPE規定編譯的類(lèi)型是EXE,DLL還是LIB,通過(guò)DLLENTRY規定DLL文件的入口點(diǎn),通過(guò)INCLUDES規定編譯過(guò)程中需要的頭文件,通過(guò)SOURCES規定參與編譯的源文件等等。這些宏的用法在幫助文檔里有更加明細的說(shuō)明,在這里只要理解這種編譯機制就可以了。

接下來(lái),所有的編譯都有完成了,DLL也好,EXE也好,都是目標平臺自有的了,下一步就是一個(gè)Copy過(guò)程,也就是將你的項目文件夾下的WINCE500文件夾下的內容復制到RELEASE文件夾下,這步就沒(méi)什么可說(shuō)的了。

最后一步就是打包了,即將已經(jīng)準備好的目標平臺的文件打包成NK.bin這樣的操作系統鏡像文件。在這個(gè)過(guò)程當中,一個(gè)完成了文件合并、注冊表壓縮、資源文件替換和打包四個(gè)子過(guò)程。

文件合并階段重點(diǎn)對以下文件進(jìn)行合并:

--所有的.bib文件合并成CE.BIB

--所有的.reg文件合并成REGINIT.INI

--所有的.dat文件合并成INITOBJ.DAT

--所有的.db文件合并成INITDB.INI

知道這幾個(gè)合并以后便于你在RELEASE下查找你做的修改是否確實(shí)被置入了目標平臺。

注冊表壓縮會(huì )將REGINIT.INT文件壓縮成DEFAULT.FDF文件。

資源替換就是將EXE或DLL中的資源替換成本地語(yǔ)言如簡(jiǎn)體中文。

接下來(lái)才是把這些CE.BIB等二進(jìn)制文件制作NK.BIN文件,這才是我們需要的文件,不過(guò)在CE5中好像可以在項目設置中改變這個(gè)文件的名稱(chēng),讀者可以自己試試。

以上說(shuō)的這些編譯過(guò)程,在Platform Builder中的Build OS菜單下分得比較明確,這一點(diǎn)比CE4要好得多,你可以自己掌握讓它單獨執行某一步驟。如果你修改了某個(gè)組件的源程序,也可以右擊這一組件然后單獨編譯此組件,最后再生成Image,總之,靈活性是比較不錯的了。

同時(shí),經(jīng)過(guò)以上的分析也可以看出來(lái),Platform Builder這個(gè)IDE在幫助生成CE時(shí)基本上是依賴(lài)于文件夾結構和那些文本文件以及批處理文件的,因此,對于文件夾結構還是要盡量的熟悉。同時(shí)也證明那些總說(shuō)批處理文件沒(méi)用的人的無(wú)知,在微軟的操作系統和開(kāi)發(fā)工具中,批處理文件是至關(guān)重要的,說(shuō)它無(wú)用的人只是由于自己的水平不夠而已。

好了,這次我們學(xué)得多做得少,不過(guò)這些知識還是有必要了解的,別忘了對照你的文件夾結構來(lái)學(xué)習哦!

經(jīng)過(guò)以前的學(xué)習,我們已經(jīng)掌握了生成CE的過(guò)程及編譯的幾個(gè)階段,這次我們再來(lái)了解一下Platform Builder中為我們提供的組件包的管理方式以及如何管理自己的組件。

在Platform Builder(以下簡(jiǎn)稱(chēng)PB)中的右側有一個(gè)"Catalog"窗口,其中列出了所有可供使用的組件,我們可以看到其內容是非常之多的,現在的疑問(wèn)就產(chǎn)生了,PB是如何管理這些組的呢?如果我有一個(gè)新設備的驅動(dòng)組件要如何才能放到這個(gè)組件包窗口中呢?如果我開(kāi)發(fā)了一個(gè)設備驅動(dòng)以供其他人使用那我要如何才能發(fā)布我的驅動(dòng)呢?下面,我們就來(lái)解決這些問(wèn)題。

在PB中,這些組件的管理都是能過(guò)一種組件文件(.cec文件)來(lái)實(shí)現的。在CE4中,系統自帶的CEC文件都位于PB的安裝文件夾下的CEC文件夾,我們可以在那里很容易的找到它們,但是在CE5中,它的位置變了,你可以在WINCE500PUBLICCOMMONOAKCATALOGCEC下找到他們。

如果你開(kāi)發(fā)了OAL,設備驅動(dòng)或其他組件,你就可以能過(guò)CEC文件來(lái)把它們加入到PB中。通過(guò)在PB環(huán)境中導入CEC文件,其他的平臺開(kāi)發(fā)人員就可以使用這些組件了。CEC文件是用來(lái)描述組件信息的文本文件,它包括了一些塊的列表,主要包括以下四種信息塊:

--CECInfo塊,用來(lái)描述此CEC文件的信息,每個(gè)CEC文件只能含有一個(gè)此信息塊,從中你可以看到該CEC的名稱(chēng)、GUID、版本、供應商和簡(jiǎn)要描述。

--ComponentType塊,它描述了最高級別的組件類(lèi)型,在一個(gè)CEC文件中可以有多個(gè)此信息塊,它通過(guò)Group,RequiredCEModules,ExcludeWhenSet,MaxResolvedImplsAllowed等條目來(lái)描述此組件所在的組,需要的CE組件,排除的組件及允許在一個(gè)CE平臺中存在的數量等信息。

c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: WinCE 5.0 CEPC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>