Windows CE,你妈吗喊你在多核上玩玩
轉(zhuǎn)自:http://hezongjian.com/blog/?p=9693
眾所周知,CE的內(nèi)核是完全重新寫(xiě)的,與9x根nt沒(méi)有任何關(guān)系,這給CE帶來(lái)了較好的實(shí)時(shí)性及靈活性。從誕生之日起,CE的內(nèi)核改過(guò)兩次,第一次是3.0,極大的增強(qiáng)了實(shí)時(shí)性,第二次是6.0,去除了內(nèi)存/應(yīng)用32 / 32的限制。如此看來(lái),貌似已經(jīng)比較完美了。從6.0發(fā)布以來(lái),我一直樂(lè)觀的覺(jué)得6.0的內(nèi)核應(yīng)該可以至少再頂三個(gè)版本了,下次更新內(nèi)核大概要到CE 9.0了(猴年馬月….)。但是計(jì)劃不如變化快,信息產(chǎn)業(yè)瞬息萬(wàn)變,很多預(yù)言都會(huì)被證明是很可笑的。我的這個(gè)“預(yù)言”也不例外(對(duì)在08年TechEd上聽(tīng)我演講的聽(tīng)眾說(shuō)聲抱歉,當(dāng)時(shí)我還極力鼓吹多余的Kernel feature都是沒(méi)必要的)。短短幾年時(shí)間,如果現(xiàn)在你再問(wèn)我新版本的CE要不要改內(nèi)核。我會(huì)一口咬定,改,最好馬上改。
個(gè)人觀點(diǎn),欠改的地方有兩個(gè),內(nèi)存映射和SMP支持。
首先說(shuō)內(nèi)存映射。CE從誕生之日起就在Kernel的3GB起始處映射了2個(gè)512MB的虛擬地址。一個(gè)是有cache的,一個(gè)是沒(méi)cache的。這使得CE最大的物理內(nèi)存就只有512MB,512已經(jīng)是理論極限了,再多了就不認(rèn)了。512這個(gè)數(shù)字在嵌入式系統(tǒng)上一直是天文數(shù)字,幾年前還是。誰(shuí)知道隨著智能手機(jī)軟件(應(yīng)用復(fù)雜化)跟硬件(內(nèi)存白菜價(jià))的飛速發(fā)展,在手機(jī)上裝個(gè)512MB的內(nèi)存也沒(méi)什么大不了的。在CE上,如果裝了512MB內(nèi)存,麻煩還真不小。這個(gè)限制應(yīng)該改了。倒也不是難事,只是向下兼容性要打折扣了。
其次說(shuō)一下SMP。CE誕生以來(lái)一直是針對(duì)單CPU的,即使在PC機(jī)上,多核技術(shù)已經(jīng)興盛很長(zhǎng)時(shí)間了,但是依然沒(méi)有能夠打動(dòng)CE加入SMP支持,因?yàn)橛肅EPC的人,一般也不會(huì)找個(gè)多核CPU。時(shí)代又不同了,CE支持的主流平臺(tái)──ARM,這幾年也跟著玩起了多核。ARM11, ARM Cortex A9都玩起了MPCore。這一玩,不得了了。如果CE不跟著玩,幾年后,可能移動(dòng)設(shè)備上就看不到CE的影子了。*nix系統(tǒng)(iphone和android)可是原生支持SMP的。雖然*nix系統(tǒng)實(shí)時(shí)性沒(méi)有CE高,但是人家畢竟支持smp,可以把CPU的能力都發(fā)揮出來(lái)。CE啊,抓緊把spinlock,CPU Affinity這些Desktop Windows上的東西搬過(guò)來(lái)吧(BSP的實(shí)現(xiàn)又復(fù)雜化了,當(dāng)然這些東西要BSP支持)。
其它還有沒(méi)有要改的呢,可能有。例如Windows消息機(jī)制,現(xiàn)在的WM_LBUTTONDOWN, RBUTTONDOWN消息已經(jīng)遠(yuǎn)遠(yuǎn)不適合multi touch了。當(dāng)然這個(gè)可能不需要改內(nèi)核,driver和API改改就可以,魅族的手機(jī)已經(jīng)實(shí)現(xiàn)了。
下一個(gè)版本的CE大概今年就會(huì)發(fā)布吧。新的CE里面這兩點(diǎn)會(huì)不會(huì)改進(jìn),目前還沒(méi)有官方的消息。拭目以待吧。
(參考資料,ARM的多核:http://www.arm.com/products/CPUs/ARM11MPCoreMultiprocessor.html)
關(guān)于512M的大小和地址限制,沒(méi)辦法,MIPS和SH 硬件上就這么訪問(wèn)虛擬內(nèi)存地址空間的,所以只要CE一天要兼容這2個(gè)玩意,這個(gè)包袱還得一直背下去。2013年6月份發(fā)布的Windows Embedded Compact 2013就只支持ARM和x86內(nèi)核,見(jiàn)http://blog.csdn.net/loongembedded/article/details/12841535
總結(jié)
以上是生活随笔為你收集整理的Windows CE,你妈吗喊你在多核上玩玩的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: xp宿主机和VMware下Ubuntu1
- 下一篇: Windows Embedded Com