WinCE 5.0邊做邊學(xué)(二)
--Implementation塊,用來描述此組件在編譯時需要的各種信息,每個CEC文件中也可以有多個此信息塊,它是 ComponentType塊的一部分,其中的BSPPlatformDir,Children,OptionalChildren,DefaultDrivers,ExcludeWhenSet,FeatureVariable,ImplSize等條目的具體含義可以在PB的幫助文檔中找到,在此不一一細(xì)述。
--BuildMethod塊,描述了編譯的方法,也是ComponentType塊的一部分,為了加深對上一次編譯階段的理解,我們詳細(xì)說一下此塊中Step和Action兩個條目。
Step用來說明編譯此組件將要在哪一步中進(jìn)行,對照上一次的內(nèi)容,它的取值為:CESYSGEN,BSP,BUILDREL,MAKEIMG。所以如果你自己開發(fā)了OAL或驅(qū)動之類的組件,你就需要自己決定讓PB在什么階段來編譯它,就要在CEC中通過Step來描述。其實(shí)在具體的編譯過程中,上述的每一階段又有PRE和POST兩個子階段,也就是說對于每個階段其實(shí)都有三步,即PRECESYSGEN,CESYSGEN,POSTCESYSGEN,PREBSP,BSP,POSTBSP……一般不用具體到這樣詳細(xì)的程度。
Action則描述了組件編譯的行為,有效的行為與編譯階段的對應(yīng)關(guān)系如下表所示:
Action | CESYSGEN | BSP | BUILDREL | MAKEIMG |
#BUILD(DIR,...) | No | Yes | No | No |
#BUILD(SOURCES) | No | Yes | No | No |
#BUILD(MAK,...) | No | Yes | No | No |
#CUSTOM(...,...) | No | Yes | Yes | No |
#COPY(...,...) | Yes | No | Yes | No |
#ENV(...,...) | No | Yes | No | Yes |
#SRCCODE(...) | No | No | No | No |
這些Action的意義如下:
--#BUILD():使用DIRS文件或SOURCES文件或MAKE文件來調(diào)用build.exe,在完全編譯平臺的時候被使用;
--#CUSTOM():在編譯的時候運(yùn)行批處理文件或可執(zhí)行文件;
--#COPY():從一個位置復(fù)制文件到另一個位置;
--#ENV():設(shè)置環(huán)境變量;
--#SRCCODE():指定了包含源程序文件的文件夾,只在編譯所選組件時應(yīng)用。
對于以上每個條目的具體用法可以參閱PB的幫助文檔。為了獲得感性認(rèn)識,我們最好用記事本打開幾個CEC文件來看一下。比如打開serial.cec看看串口驅(qū)動組件的實(shí)現(xiàn)方法等。
以上我們了解了CEC文件,我們再來解決后面的問題,即假設(shè)我從別的供應(yīng)商處拿到了一個設(shè)備的驅(qū)動程序,它帶了CEC文件,那么我要如何把這個組件加入到PB的組件包中呢?這個問題其實(shí)很簡單,只要在PB的File菜單下使用Manage Catalog Items命令即可。在這個彈出的對話框中的內(nèi)容和使用方法就不用我說了吧。
再來解決下一個問題,我要如何為我開發(fā)的組件編寫CEC文件呢?這個也好辦,在Tools菜單下使用CEC Editor命令即可,如果不會寫,可以先打開一個現(xiàn)有的CEC文件看看是如何組織的,然后再仿照它來寫自己的就可以了,別忘了寫完后要保存哦,同時也要注意GUID的問題。
此次內(nèi)容的最后,我們再來看一下BSP。什么是BSP呢,其實(shí)就是為某一種開發(fā)板實(shí)現(xiàn)了設(shè)備驅(qū)動的軟件包,它包含了源程序文件,二進(jìn)制文件等,還有OAL適配層,Bootloader和其他有關(guān)的配置文件。比如CE5的評估版就帶了x86的BSP,AMD的BSP和Emulator的BSP。
評論