【转】CEC文件详解
經(jīng)過以前的學(xué)習(xí),我們已經(jīng)掌握了生成CE的過程及編譯的幾個(gè)階段,這次我們再來了解一下Platform Builder中為我們提供的組件包的管理方式以及如何管理自己的組件。
??? 在Platform Builder(以下簡稱PB)中的右側(cè)有一個(gè)"Catalog"窗口,其中列出了所有可供使用的組件,我們可以看到其內(nèi)容是非常之多的,現(xiàn)在的疑問就產(chǎn)生了,PB是如何管理這些組的呢?如果我有一個(gè)新設(shè)備的驅(qū)動(dòng)組件要如何才能放到這個(gè)組件包窗口中呢?如果我開發(fā)了一個(gè)設(shè)備驅(qū)動(dòng)以供其他人使用那我要如何才能發(fā)布我的驅(qū)動(dòng)呢?下面,我們就來解決這些問題。
??? 在PB中,這些組件的管理都是能過一種組件文件(.cec文件)來實(shí)現(xiàn)的。在CE4中,系統(tǒng)自帶的CEC文件都位于PB的安裝文件夾下的CEC文件夾,我們可以在那里很容易的找到它們,但是在CE5中,它的位置變了,你可以在WINCE500\PUBLIC\COMMON\OAK\CATALOG\CEC下找到他們。
??? 如果你開發(fā)了OAL,設(shè)備驅(qū)動(dòng)或其他組件,你就可以能過CEC文件來把它們加入到PB中。通過在PB環(huán)境中導(dǎo)入CEC文件,其他的平臺開發(fā)人員就可以使用這些組件了。CEC文件是用來描述組件信息的文本文件,它包括了一些塊的列表,主要包括以下四種信息塊:
??? --CECInfo塊,用來描述此CEC文件的信息,每個(gè)CEC文件只能含有一個(gè)此信息塊,從中你可以看到該CEC的名稱、GUID、版本、供應(yīng)商和簡要描述。
??? --ComponentType塊,它描述了最高級別的組件類型,在一個(gè)CEC文件中可以有多個(gè)此信息塊,它通過Group,RequiredCEModules,ExcludeWhenSet,MaxResolvedImplsAllowed等條目來描述此組件所在的組,需要的CE組件,排除的組件及允許在一個(gè)CE平臺中存在的數(shù)量等信息。
??? --Implementation塊,用來描述此組件在編譯時(shí)需要的各種信息,每個(gè)CEC文件中也可以有多個(gè)此信息塊,它是 ComponentType塊的一部分,其中的BSPPlatformDir,Children,OptionalChildren,DefaultDrivers,ExcludeWhenSet,FeatureVariable,ImplSize等條目的具體含義可以在PB的幫助文檔中找到,在此不一一細(xì)述。
??? --BuildMethod塊,描述了編譯的方法,也是ComponentType塊的一部分,為了加深對上一次編譯階段的理解,我們詳細(xì)說一下此塊中Step和Action兩個(gè)條目。
??? Step用來說明編譯此組件將要在哪一步中進(jìn)行,對照上一次的內(nèi)容,它的取值為:CESYSGEN,BSP,BUILDREL,MAKEIMG。所以如果你自己開發(fā)了OAL或驅(qū)動(dòng)之類的組件,你就需要自己決定讓PB在什么階段來編譯它,就要在CEC中通過Step來描述。其實(shí)在具體的編譯過程中,上述的每一階段又有PRE和POST兩個(gè)子階段,也就是說對于每個(gè)階段其實(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,在完全編譯平臺的時(shí)候被使用;
??? --#CUSTOM():在編譯的時(shí)候運(yùn)行批處理文件或可執(zhí)行文件;
??? --#COPY():從一個(gè)位置復(fù)制文件到另一個(gè)位置;
??? --#ENV():設(shè)置環(huán)境變量;
??? --#SRCCODE():指定了包含源程序文件的文件夾,只在編譯所選組件時(shí)應(yīng)用。
??? 對于以上每個(gè)條目的具體用法可以參閱PB的幫助文檔。為了獲得感性認(rèn)識,我們最好用記事本打開幾個(gè)CEC文件來看一下。比如打開serial.cec看看串口驅(qū)動(dòng)組件的實(shí)現(xiàn)方法等。
??? 以上我們了解了CEC文件,我們再來解決后面的問題,即假設(shè)我從別的供應(yīng)商處拿到了一個(gè)設(shè)備的驅(qū)動(dòng)程序,它帶了CEC文件,那么我要如何把這個(gè)組件加入到PB的組件包中呢?這個(gè)問題其實(shí)很簡單,只要在PB的File菜單下使用"Manage Catalog Items"命令即可。在這個(gè)彈出的對話框中的內(nèi)容和使用方法就不用我說了吧。
??? 再來解決下一個(gè)問題,我要如何為我開發(fā)的組件編寫CEC文件呢?這個(gè)也好辦,在Tools菜單下使用"CEC Editor"命令即可,如果不會(huì)寫,可以先打開一個(gè)現(xiàn)有的CEC文件看看是如何組織的,然后再仿照它來寫自己的就可以了,別忘了寫完后要保存哦,同時(shí)也要注意GUID的問題。
??? 此次內(nèi)容的最后,我們再來看一下BSP。什么是BSP呢,其實(shí)就是為某一種開發(fā)板實(shí)現(xiàn)了設(shè)備驅(qū)動(dòng)的軟件包,它包含了源程序文件,二進(jìn)制文件等,還有OAL適配層,Bootloader和其他有關(guān)的配置文件。比如CE5的評估版就帶了x86的BSP,AMD的BSP和Emulator的BSP。
??? 通常對BSP的操作都在BSP向?qū)е羞M(jìn)行,它位于Platform菜單中,利用它可以新建自己的BSP,復(fù)制現(xiàn)存的BSP,修改現(xiàn)存的BSP或創(chuàng)建全局的驅(qū)動(dòng)程序。如果你準(zhǔn)備好了BSP所需要的那些東西就可以用它來生成你的BSP了,它會(huì)選擇必須的CE內(nèi)核組件。
??? 好了,已經(jīng)寫了不少了,唉,寫這東西真是費(fèi)時(shí)啊,不說了,希望我們能一起獲得更多的知識。
?
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/gooogleman/archive/2008/08/04/2764925.aspx
轉(zhuǎn)載于:https://www.cnblogs.com/jiegekaoyan/archive/2010/07/31/1789583.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【转】CEC文件详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设为首页加入收藏代码
- 下一篇: 设置线程堆栈大小