關(guān)于WinCE開發(fā)中最常用的概念和知識(shí)
這篇文章的目的并不是介紹Windows Embedded CE開發(fā)的方方面面,只是用一個(gè)初涉嵌入式領(lǐng)域的軟件開發(fā)者的視角來(lái)介紹Windows CE開發(fā)中最常用的概念和知識(shí),解決大家會(huì)在實(shí)際開發(fā)中碰到的一些小問(wèn)題,讓大家了解嵌入式開發(fā)與應(yīng)用程序開發(fā),到底有哪些不同。
Windows CE概述
從6.0版本開始,Windows CE的名字改為Windows Embedded CE,當(dāng)然這也是為了結(jié)合Windows Embedded品牌作出的改變。CE經(jīng)過(guò)了十年的風(fēng)風(fēng)雨雨之后,終于在CE 6.0這個(gè)版本上再次浴火重生了。CE 6.0經(jīng)歷了CE歷史上第二次內(nèi)核重寫,使CE操作系統(tǒng)更加符合當(dāng)今嵌入式開發(fā)的方向。
CE 6.0在內(nèi)核方面的改變主要是為了適應(yīng)嵌入式設(shè)備硬件發(fā)展的要求,在進(jìn)程數(shù)量方面,從過(guò)去最多運(yùn)行32個(gè)進(jìn)程,改變?yōu)樽疃噙\(yùn)行3萬(wàn)2千個(gè)進(jìn)程,內(nèi)存方面從每個(gè)進(jìn)程最多擁有32M虛擬內(nèi)存空間改為最多擁有2G虛擬內(nèi)存空間。在OS布局方面,將關(guān)鍵的驅(qū)動(dòng)程序、文件系統(tǒng)和圖形界面管理器(GWES)移到了內(nèi)核中,這樣可以更好解決因?yàn)镃PU在內(nèi)核態(tài)和用戶態(tài)間切換而造成的性能損失。
當(dāng)然,從以上的改變,我們可以看到CE 6.0較之前版本更加“重量級(jí)”了。操作系統(tǒng)領(lǐng)域關(guān)于“微內(nèi)核”的爭(zhēng)論已經(jīng)持續(xù)了很多年,CE的改變也許會(huì)為某個(gè)學(xué)派的觀點(diǎn)提供支持。但我們必須指出的是,正因?yàn)槟壳暗那度胧皆O(shè)備硬件已經(jīng)可以支持比較“重量級(jí)”的操作系統(tǒng)了,所以CE 6.0才會(huì)做出如此改變。
CE針對(duì)開發(fā)者的另一個(gè)轉(zhuǎn)變開始自CE 5.0,將開發(fā)環(huán)境Platform Builder整合到Visual Studio中,這種做法無(wú)疑減輕了微軟維護(hù)兩套IDE的負(fù)擔(dān),從另外一個(gè)方面來(lái)看,CE的開發(fā)者也可以享受到更好的開發(fā)體驗(yàn)了。
也許很多初涉嵌入式開發(fā)領(lǐng)域的程序員會(huì)被一系列的新名詞搞得頭昏腦脹,在這里,我希望能夠?qū)⑶度胧介_發(fā)的流程展現(xiàn)給大家。
嵌入式開發(fā)主要分為三個(gè)比較大的部分:
1 驅(qū)動(dòng)程序開發(fā)
這部分開發(fā)是從硬件設(shè)計(jì)開始的,硬件工程師會(huì)設(shè)計(jì)PCB板,為我們提供標(biāo)準(zhǔn)開發(fā)板(SDB,standard development board)。當(dāng)我們拿到開發(fā)板之后的第一件事情就是編寫boot-loader,讓開發(fā)板啟動(dòng)起來(lái),一般是通過(guò)JTGA將boot-loader燒錄到開發(fā)板中的。我們可以將boot-loader看作PC中的BIOS,負(fù)責(zé)硬件設(shè)備的初始化工作,并且將操作系統(tǒng)運(yùn)行起來(lái)。在此之后,我們需要根據(jù)開發(fā)板上的硬件開發(fā)各種驅(qū)動(dòng)程序,比如串口、USB、鼠標(biāo)、視頻輸入等。最后將這些驅(qū)動(dòng)程序和boot-loader打包,稱為一個(gè)板級(jí)支持包(BSP)。BSP是和開發(fā)板的具體硬件緊密相關(guān)的。
所以從事這方面開發(fā)的工程師往往具有比較強(qiáng)的硬件知識(shí)水平。
2 平臺(tái)定制
我們可以將Windows CE想象為一盒積木,根據(jù)不同的應(yīng)用場(chǎng)景和設(shè)備要求,我們要對(duì)這盒積木進(jìn)行定制,堆積出不同形狀的城堡、動(dòng)物和生活用品。這個(gè)過(guò)程稱為“平臺(tái)定制”,定制產(chǎn)生的平臺(tái)往往和具體的硬件設(shè)備相關(guān),直接將平臺(tái)下載到硬件設(shè)備上就可以運(yùn)行了。整個(gè)開發(fā)過(guò)程,需要選擇不同的組件來(lái)搭配出最適合當(dāng)前硬件的軟件平臺(tái)。所以要對(duì)Windows CE的組件,也就是Catalog Item,有相當(dāng)程度的了解。
3 應(yīng)用程序開發(fā)
嵌入式設(shè)備上的應(yīng)用程序開發(fā)與傳統(tǒng)應(yīng)用程序開發(fā)類似,只是要借助于硬件模擬器或者實(shí)際設(shè)備對(duì)程序進(jìn)行調(diào)試。最常見的嵌入式設(shè)備應(yīng)用程序開發(fā),就是Windows Mobile的移動(dòng)應(yīng)用開發(fā)。平臺(tái)定制工程師會(huì)在硬件出廠之前先提供平臺(tái)相關(guān)的SDK,SDK中會(huì)包括模擬器。應(yīng)用開發(fā)者可以首先使用模擬器對(duì)程序進(jìn)行開發(fā)和調(diào)試。等實(shí)際硬件出來(lái)之后,再將程序轉(zhuǎn)移到實(shí)際硬件中。因?yàn)閃indows CE采用了很多措施,這種“轉(zhuǎn)移”幾乎是無(wú)縫的,所以我們并沒(méi)有使用“移植”這個(gè)詞。
嵌入式領(lǐng)域的應(yīng)用開發(fā)其實(shí)是普通軟件工程師就可以進(jìn)行的。
評(píng)論