<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è) > 嵌入式系統 > 設計應用 > 關(guān)于WinCE開(kāi)發(fā)中最常用的概念和知識

關(guān)于WinCE開(kāi)發(fā)中最常用的概念和知識

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

  這篇文章的目的并不是介紹Windows Embedded CE開(kāi)發(fā)的方方面面,只是用一個(gè)初涉嵌入式領(lǐng)域的軟件開(kāi)發(fā)者的視角來(lái)介紹Windows CE開(kāi)發(fā)中最常用的概念和知識,解決大家會(huì )在實(shí)際開(kāi)發(fā)中碰到的一些小問(wèn)題,讓大家了解與應用程序開(kāi)發(fā),到底有哪些不同。

  Windows CE概述

  從6.0版本開(kāi)始,Windows CE的名字改為Windows Embedded CE,當然這也是為了結合Windows Embedded品牌作出的改變。CE經(jīng)過(guò)了十年的風(fēng)風(fēng)雨雨之后,終于在CE 6.0這個(gè)版本上再次浴火重生了。CE 6.0經(jīng)歷了CE歷史上第二次內核重寫(xiě),使CE操作系統更加符合當今的方向。

  CE 6.0在內核方面的改變主要是為了適應嵌入式設備硬件發(fā)展的要求,在進(jìn)程數量方面,從過(guò)去最多運行32個(gè)進(jìn)程,改變?yōu)樽疃噙\行3萬(wàn)2千個(gè)進(jìn)程,內存方面從每個(gè)進(jìn)程最多擁有32M虛擬內存空間改為最多擁有2G虛擬內存空間。在OS布局方面,將關(guān)鍵的驅動(dòng)程序、文件系統和圖形界面管理器(GWES)移到了內核中,這樣可以更好解決因為CPU在內核態(tài)和用戶(hù)態(tài)間切換而造成的性能損失。

  當然,從以上的改變,我們可以看到CE 6.0較之前版本更加“重量級”了。操作系統領(lǐng)域關(guān)于“微內核”的爭論已經(jīng)持續了很多年,CE的改變也許會(huì )為某個(gè)學(xué)派的觀(guān)點(diǎn)提供支持。但我們必須指出的是,正因為目前的嵌入式設備硬件已經(jīng)可以支持比較“重量級”的操作系統了,所以CE 6.0才會(huì )做出如此改變。

  CE針對開(kāi)發(fā)者的另一個(gè)轉變開(kāi)始自CE 5.0,將開(kāi)發(fā)環(huán)境Platform Builder整合到Visual Studio中,這種做法無(wú)疑減輕了微軟維護兩套IDE的負擔,從另外一個(gè)方面來(lái)看,CE的開(kāi)發(fā)者也可以享受到更好的開(kāi)發(fā)體驗了。

  流程

  也許很多初涉嵌入式開(kāi)發(fā)領(lǐng)域的程序員會(huì )被一系列的新名詞搞得頭昏腦脹,在這里,我希望能夠將嵌入式開(kāi)發(fā)的流程展現給大家。

  嵌入式開(kāi)發(fā)主要分為三個(gè)比較大的部分:

  1 驅動(dòng)程序開(kāi)發(fā)

  這部分開(kāi)發(fā)是從硬件設計開(kāi)始的,硬件工程師會(huì )設計PCB板,為我們提供標準開(kāi)發(fā)板(SDB,standard development board)。當我們拿到開(kāi)發(fā)板之后的第一件事情就是編寫(xiě)boot-loader,讓開(kāi)發(fā)板啟動(dòng)起來(lái),一般是通過(guò)JTGA將boot-loader燒錄到開(kāi)發(fā)板中的。我們可以將boot-loader看作PC中的BIOS,負責硬件設備的初始化工作,并且將操作系統運行起來(lái)。在此之后,我們需要根據開(kāi)發(fā)板上的硬件開(kāi)發(fā)各種驅動(dòng)程序,比如串口、USB、鼠標、視頻輸入等。最后將這些驅動(dòng)程序和boot-loader打包,稱(chēng)為一個(gè)板級支持包(BSP)。BSP是和開(kāi)發(fā)板的具體硬件緊密相關(guān)的。

  所以從事這方面開(kāi)發(fā)的工程師往往具有比較強的硬件知識水平。

  2 平臺定制

  我們可以將Windows CE想象為一盒積木,根據不同的應用場(chǎng)景和設備要求,我們要對這盒積木進(jìn)行定制,堆積出不同形狀的城堡、動(dòng)物和生活用品。這個(gè)過(guò)程稱(chēng)為“平臺定制”,定制產(chǎn)生的平臺往往和具體的硬件設備相關(guān),直接將平臺下載到硬件設備上就可以運行了。整個(gè)開(kāi)發(fā)過(guò)程,需要選擇不同的組件來(lái)搭配出最適合當前硬件的軟件平臺。所以要對Windows CE的組件,也就是Catalog Item,有相當程度的了解。

  3 應用程序開(kāi)發(fā)

  嵌入式設備上的應用程序開(kāi)發(fā)與傳統應用程序開(kāi)發(fā)類(lèi)似,只是要借助于硬件模擬器或者實(shí)際設備對程序進(jìn)行調試。最常見(jiàn)的嵌入式設備應用程序開(kāi)發(fā),就是Windows Mobile的移動(dòng)應用開(kāi)發(fā)。平臺定制工程師會(huì )在硬件出廠(chǎng)之前先提供平臺相關(guān)的SDK,SDK中會(huì )包括模擬器。應用開(kāi)發(fā)者可以首先使用模擬器對程序進(jìn)行開(kāi)發(fā)和調試。等實(shí)際硬件出來(lái)之后,再將程序轉移到實(shí)際硬件中。因為Windows CE采用了很多措施,這種“轉移”幾乎是無(wú)縫的,所以我們并沒(méi)有使用“移植”這個(gè)詞。

  嵌入式領(lǐng)域的應用開(kāi)發(fā)其實(shí)是普通軟件工程師就可以進(jìn)行的。



評論


相關(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>