在所有版本的Windows CE操作系統(tǒng)中,圖形、視窗和事件子系統(tǒng)(GWES)在電源管理方面都發(fā)揮了關鍵作用。這是因為早期版本的電源管理功能是由用戶的活動所驅動的,而GWES負責處理所有用戶的輸入,如鍵盤、鼠標和觸摸屏。GWES設置定時器監(jiān)控用戶的活動,當一段時間內(nèi)用戶沒有任何輸入時,便使系統(tǒng)進入休眠狀態(tài)。通過注冊表可以設置這幾個定時器的超時值,它們可以分別被用于電池供電或外部電源供電時。當然,通過注冊表也可以禁用GWES的電源管理功能,它在Windows CE.NET以后的版本中是默認被禁用的,這有利于電源管理器的集中管理。
對應有5種系統(tǒng)電源狀態(tài)(等級):No Power, On, Suspend, Idle, Critical off。相關描述和轉換方式參見上表。?基本的電源管理功能所采用的節(jié)能方法是使系統(tǒng)適時的進入休眠狀態(tài),當下面的一種事件發(fā)生時,系統(tǒng)將進入休眠狀態(tài)(SUSPEND):* ??用戶按下On/Off按鈕;
-
?監(jiān)控用戶活動的定時器超時;
-
應用程序調(diào)用API,如GwesPowerOffSystem或SetSystemPowerState。當下面的一種事件發(fā)生時,系統(tǒng)將退出休眠狀態(tài):
-
???用戶再次按下On/Off按鈕;
-
發(fā)生某個警告事件,如某個日期或時間定時器的到時提醒;
-
發(fā)生某個喚醒事件,由外設如串口設備或者網(wǎng)卡觸發(fā)中斷來喚醒系統(tǒng)。雖然通過用戶操作、應用程序或者外設都可以使系統(tǒng)進入或者退出休眠狀態(tài),但基本的電源管理功能所能控制的粒度過大,對應于CPU只有三種狀態(tài):On,Idle和Suspend,對應于所有外設只有兩種狀態(tài):On和Suspend。而且,當系統(tǒng)進出休眠狀態(tài)時,應用程序都得不到任何通知。Windows CE的高級電源管理功能加入了電源管理組件的Windows CE具有高級的電源管理功能,它允許每個外設具有自己的電源狀態(tài),有別于一般的系統(tǒng)電源狀態(tài)(System Power State),被稱作設備電源狀態(tài)(Device Power State)。現(xiàn)在應用程序有能力設置個別外設的電源狀態(tài),比如一個文件傳輸程序,在保持串口或者藍牙端口正常通訊時,可以關閉顯示屏幕和背光。這就為實現(xiàn)更高級別的動態(tài)電源管理提供了可能。我們可以通過注冊表任意設定一組系統(tǒng)電源狀態(tài),使其對應于我們設計的狀態(tài)模型。對于設備電源狀態(tài)則沒有這么大的靈活度,它具有5個設備狀態(tài):D0:Full on;D1:Low on;D2:Standby;D3:Sleep;D4:Off當定義好系統(tǒng)電源狀態(tài),并為每個外設分配了設備電源狀態(tài)后,通過注冊表,我們可以將兩者進行映射。在某個系統(tǒng)電源狀態(tài)下,比如一個電池供電的系統(tǒng),當電池電量已經(jīng)少于50%時,顯示屏幕和背光可能處于D1狀態(tài),而網(wǎng)絡設備可以設置為D3狀態(tài)。也就是說,在同一時刻,不同的外設可能處于不同的設備電源狀態(tài)中。這樣的靈活性意味著每個設備可以最小程度的消耗電池資源。
?????? 圖2 Windows CE高級電源管理框架如圖2所示,電源管理器實現(xiàn)為一個名為Pm.dll的動態(tài)鏈接庫,電源管理接口分為應用程序和驅動程序兩部分。驅動程序通過DeviceIoControl服務例程來處理電源管理器發(fā)來的設備電源狀態(tài)改變請求,另外電源管理器通過消息隊列通知應用程序電源相關的事件。
??? 為了獲得高級電源控制的功能,必須通過Platform Builder將電源管理組件編譯到內(nèi)核鏡像中。實現(xiàn)的源代碼參見{WINCEROOT}\\Private\\Winceos\\Coreos\\Device\\PMIF\\pmif.c,這段代碼只是一個封裝,它會調(diào)用{WINCEROOT}\\Public\\Common\\Oak\\Drivers\\PM中的組件。參考這個實現(xiàn)OEM可以根據(jù)需要設計自己的電源管理策略。?1. OAL的電源管理OEM AdaptaTIon Layer(OAL)是一層與硬件平臺相關的代碼,它在電源狀態(tài)轉換中扮演著重要的角色。首先必須實現(xiàn)的是以下幾個與硬件相關的函數(shù):OEMInit:初次上電時(或在冷啟后)被調(diào)用,一般在這個函數(shù)中處理一些重要的初始化工作,如初始化系統(tǒng)內(nèi)存,建立調(diào)試環(huán)境,設置系統(tǒng)中斷等;OEMIdle:沒有線程可調(diào)度運行時被內(nèi)核調(diào)用,這時可將CPU置于低功耗狀態(tài),并保證其可以快速返回運行狀態(tài);OEMPowerOff:系統(tǒng)進入休眠(Suspend)狀態(tài)前被調(diào)用,它即是系統(tǒng)進入休眠狀態(tài)前被調(diào)用的最后一個函數(shù),也是在系統(tǒng)被喚醒后所執(zhí)行的第一個函數(shù)(中斷處理程序以外);Interrupt Handler:一些用來喚醒系統(tǒng)的中斷處理程序。當中斷發(fā)生時,內(nèi)核首先調(diào)用中斷處理程序,其中一些中斷是可以將系統(tǒng)從睡眠狀態(tài)中喚醒的,但中斷時間內(nèi)能處理的事情非常少,在中斷處理程序里大部分API也是不能被調(diào)用的。高級的電源管理功能允許任何設備驅動將其中斷作為系統(tǒng)的喚醒源,在版本W(wǎng)indows CE.NET 4.1以前,OAL掌管著所有的中斷處理,這就意味著在生成內(nèi)核鏡像以后,我們就無法在系統(tǒng)中添加新的中斷處理程序了。現(xiàn)在即使這個設備是在運行時才安裝到系統(tǒng)中來的,比如PCMCIA或者CF接口的無線網(wǎng)卡,它可以通過調(diào)用API(LoadIntChainHandler和FreeIntChainHandler)實現(xiàn)中斷處理程序的安裝和卸載。在系統(tǒng)中添加了新的中斷處理程序后,它就可以通過內(nèi)核IOCTL代碼(IOCTL_HAL_ENABLE_WAKE)實現(xiàn)其作為系統(tǒng)的喚醒源。位于操作系統(tǒng)內(nèi)核層的電源管理策略,也要為設備驅動及上層應用程序提供接口,通過PowerPolicyNoTIfy向電源管理組件發(fā)送事件請求,設備及應用程序就可以參與到系統(tǒng)的電源管理策略中來。?2.?設備驅動的電源管理我們可以為設備驅動添加電源管理功能,首先就是要在驅動程序中添加電源管理的IOCTL代碼,然后通知電源管理器該驅動是支持電源管理的,最后在驅動中編碼實現(xiàn)該設備支持的幾種電源狀態(tài)。2.1?建立支持電源管理的設備驅動為了建立一個能夠對設備進行電源管理的驅動程序,我們必須首先建立一個支持non-COM-related設備接口的驅動程序。non-COM-related設備接口標明這個設備是支持電源管理的。可以用以下方式建立這種接口:
-
? ? ? ?可以在注冊表中,用激活設備所用的IClass值定義接口;
-
? ? ? ? 可以在驅動程序的Init函數(shù)中,設置注冊表中的IClass值;
-
? ? ?可以在驅動程序中顯示地調(diào)用AdverTIseInterface函數(shù)。電源管理器通過IOCTL代碼來和驅動通信。通常情況下,當一個驅動程序聲明為支持電源管理時,驅動只需要在DeviceIoControl中實現(xiàn)電源的管理即可。下面是電源管理器用來與驅動通信的IOCTL代碼:
-
?IOCTL_POWER_CAPABILITIES:代表電源管理器請求設備驅動返回設備支持的電源狀態(tài)及相關特征;
-
?IOCTL_POWER_SET:請求驅動更新設備的電源狀態(tài);
-
?IOCTL_POWER_QUERY:電源管理器詢問設備是否準備好進行狀態(tài)切換;
-
?IOCTL_POWER_GET:請求驅動返回當前設備的電源狀態(tài);
-
?IOCTL_REGISTER_POWER_RELATIONSHIP:通知父設備注冊所有它所控制的設備。其中IOCTL_POWER_CAPABILITIES和IOCTL_POWER_SET是支持電源管理的設備驅動必須實現(xiàn)的。2.2 IOCTL代碼的實現(xiàn)在設備自舉的時候,設備驅動必須使設備處于D0狀態(tài),當電源管理器通過IOCTL_POWER_CAPABILITIES向設備發(fā)出查詢時,設備驅動應該盡可能詳細的報告該設備的電源管理能力,以便將自己納入到系統(tǒng)的電源管理策略中去。在自舉完成后,電源管理器可以根據(jù)管理策略,調(diào)用IOCTL_POWER_SET調(diào)整設備的電源狀態(tài)。在設備自我管理電源的情況下,設備應該通過DevicePowerNotify函數(shù)請求系統(tǒng)改變它們的電源狀態(tài)。在實現(xiàn)對IOCTL_POWER_SET支持時,設備驅動開發(fā)應該注意以下幾點:
-
?設備并不一定具備所有五種設備電源狀態(tài),但至少可以工作在D0狀態(tài);
-
??? 電源管理器可能會要求設備進入任何設備電源狀態(tài),并不僅僅是設備聲明支持的幾個。
-
? 如果一個設備被要求進入一個它并不支持的電源狀態(tài),它就會進入另一個它支持的更高功耗的狀態(tài)。例如,一個設備并不支持D2,它會被要求進入D1。
-
????電源管理器可能會通過發(fā)出IOCTL_POWER_SET,使設備再次進入它已經(jīng)處于的當前狀態(tài)。在這種情況下,設備驅動程序簡單的返回成功即可。
-
?? ? 設備的電源狀態(tài)不一定與系統(tǒng)的電源狀態(tài)同步,因為它可能受到應用程序需求的限制。2.3?休眠和喚醒的處理支持電源管理的流設備驅動通過XXX_PowerDown和XXX_PowerUp接收系統(tǒng)休眠和喚醒的通知,這些通知在內(nèi)核調(diào)用OEMPowerOff之前發(fā)出,并處于中斷上下文中。設備驅動的開發(fā)者必須清楚,在系統(tǒng)休眠期間,設備應該處于何種狀態(tài)。并不是所有的設備在這個時候都應該強制被關閉,比如在音頻設備可以不依賴處理器來播放音樂時,在系統(tǒng)休眠期間它的狀態(tài)就應該交給電源管理器和應用程序來處理。而如果這個音頻設備的播放需要處理器頻繁的工作,在系統(tǒng)進入休眠狀態(tài)時,驅動程序應該果斷的關閉設備的電源,即使該設備由于應用程序的請求不處于D4狀態(tài)。另外,設備的D3狀態(tài)值得特殊考慮,因為這個狀態(tài)不僅僅與設備的功耗級別相關,處于D3狀態(tài)的設備還被允許將系統(tǒng)從休眠狀態(tài)中喚醒。所以當我們開發(fā)支持電源管理的設備驅動時需要注意以下幾點:
-
? ? ? 支持喚醒系統(tǒng)的設備不應該主動通過DevicePowerNotify請求進入D3狀態(tài),因為一般情況下,只有當系統(tǒng)打算進入休眠狀態(tài)時,電源管理器才將設備作為喚醒源啟用。從代碼的角度也應該避免這一點,因為驅動程序無法區(qū)分來自IOCTL_POWER_SET中對D3狀態(tài)的請求是由它自己還是電源管理器發(fā)起的;
-
? 如果有必要,能喚醒系統(tǒng)的設備可以定義一樣的D2和D3狀態(tài),而只有D3具有啟動喚醒的功能;
-
支持D3的設備不一定具有將系統(tǒng)從休眠狀態(tài)喚醒的功能,不能將系統(tǒng)喚醒的設備,但它又具有低功耗模式,是可以自己主動請求進入D3狀態(tài)的;???
-
如果不能喚醒系統(tǒng)的設備處于D3狀態(tài),在系統(tǒng)進入休眠狀態(tài)時,它應該在XXX_PowerDown中將狀態(tài)轉換為D4,并且在XXX_PowerUp中恢復到D3狀態(tài);如果無法這么做,它就不應該支持D3狀態(tài),而是在請求進入D3時直接進入D4狀態(tài);做到了以上幾點,在系統(tǒng)進入休眠狀態(tài)時,OEM和應用程序開發(fā)人員就可以請求將設備進入D3狀態(tài),而不必關心這個設備是否支持喚醒系統(tǒng)。?3.?應用程序的電源管理電源管理組件提供了一組接口供應用程序參與到電源管理的活動中,應用程序可以通過RequestPowerNotifications函數(shù)請求電源管理器向其發(fā)送電源相關的通知,也可以通過SetPowerRequirement通知電源管理器將設備設置在特殊的電源狀態(tài)下。這樣,指定設備的電源狀態(tài)就不會隨系統(tǒng)電源狀態(tài)的改變而改變。3.1?電源通知機制電源相關的通知通過消息隊列傳遞給應用程序,通常應用程序新建一個消息隊列,并通過RequestPowerNotifications將這個消息隊列的句柄傳遞給電源管理器,同時創(chuàng)建一個線程偵聽來自這個隊列的消息。電源管理器定義了如下幾種通知:
-
PBT_RESUME:當系統(tǒng)從休眠狀態(tài)被喚醒是產(chǎn)生;
-
?PBT_POWERSTATUSCHANGE:當系統(tǒng)接入或者斷開外部電源時產(chǎn)生;
-
?PBT_TRANSITION:當電源管理器執(zhí)行系統(tǒng)電源狀態(tài)轉換時發(fā)生;
-
PBT_POWERINFOCHANGE:當電池信息更新時發(fā)生。3.2?電源請求機制電源請求機制為應用程序提供了強大的能力控制電源管理器調(diào)整設備的電源等級,與其他所有的電源設置相比,它具有很高的優(yōu)先級。舉例來說,假設有一個條形碼閱讀器連接在COM1端口,并且COM1只有在最高電源等級(D0)時才能驅動這個條形碼閱讀器。為了使其正常工作,應用程序將調(diào)用SetPowerRequirement把COM1指定D0狀態(tài)。假設之后串口驅動自身決定降低一個電源等級,驅動調(diào)用DevicePowerNotify通知電源管理器它期望的設備電源狀態(tài),驅動程序的這個請求將不起作用,直到應用程序調(diào)用ReleasePowerRequirement為止。繼續(xù)這個例子,假設這時的系統(tǒng)電源狀態(tài)轉換為低能耗等級,雖然與之相關的COM1電源等級為D3,由于應用程序的電源請求,COM1將繼續(xù)維持在D0狀態(tài)。在調(diào)用SetPowerRequirement函數(shù)時,指定POWER_FORCE標志將強制設備不進入休眠狀態(tài),即使這時系統(tǒng)已處于休眠狀態(tài)。3.3?設置系統(tǒng)電源狀態(tài)在某些應用的場合下,應用程序可能需要改變系統(tǒng)的電源狀態(tài)。OEM通過注冊表定義了系統(tǒng)支持的電源狀態(tài),?應用程序可以通過GetSystemPowerState返回當前系統(tǒng)電源狀態(tài)的名稱,也可以通過SetSystemPowerState改變系統(tǒng)的電源狀態(tài)本篇將以Windows Mobile為例介紹Windows CE電源管理的實現(xiàn),大體上,Windows Mobile分為Pocket PC和Smartphone兩種版本。這兩者之間的主要區(qū)別在于觸摸屏和電源模型,Smartphone采用的是“Always On”模型。為了說清楚它們的區(qū)別,我們就先從系統(tǒng)電源狀態(tài)說起吧(這里有些系統(tǒng)電源狀態(tài)是從WM5開始才有的)。1. Windows Mobile的系統(tǒng)電源狀態(tài)On:用戶與系統(tǒng)交互時的狀態(tài);BacklightOff:在一段時間內(nèi)(默認15秒),如果一直沒有用戶操作(比如按下某個鍵或者觸摸屏幕),就關閉背光,這時其他的設備都沒變化。這個timeout值可以通過控制面板進行設置;UserIdle:這個狀態(tài)只在Smartphone中被使用。經(jīng)過一段稍長的時間,如果一直沒有用戶操作,就關閉背光和LCD。這個timeout值可以通過控制面板進行設置;ScreenOff:一般由某些程序指定,才進入這個狀態(tài)。比如音樂播放器程序,當你聽音樂時按下某個鍵可以將屏幕關閉。PocketPC和Smartphone都使用這個狀態(tài),它與UserIdle的不同在于,ScreenOff意味著“用戶主動關閉了顯示,只有當他按下電源鍵時才重新顯示”,而UserIdle意味著“用戶有段時間沒操作了,那么我們可以關閉屏幕來省電”,所以在UserIdle時,隨便按下Smartphone的哪個鍵都會啟動顯示;Suspend:這是PocketPC的睡眠模式,幾乎所有設備都被關閉,直到某個硬件設備觸發(fā)中斷才將系統(tǒng)喚醒,這個timeout值可以通過控制面板進行設置(默認為3分鐘);Resuming:這是PocketPC被喚醒后的狀態(tài),這時屏幕是關閉的,并啟動一個15秒的計時器,在這段時間內(nèi)決定接下來進入哪個狀態(tài),如果計時器超時則重新回到睡眠狀態(tài);Unattended:這個狀態(tài)只在PocketPC中被使用,用戶對其不會有所察覺。有些程序,如ActiveSync每5分鐘會喚醒系統(tǒng)進行同步,同步完成后再讓系統(tǒng)繼續(xù)睡眠,這段時間不希望打擾用戶,即程序在后臺執(zhí)行。可以通過注冊表查看系統(tǒng)電源狀態(tài)對應的具體設備的電源狀態(tài),[HLM\\System\\CurrentControlSet\\Control\\Power\\State]。現(xiàn)在我們知道,Smartphone沒有真正的睡眠模式,即使它會在一段時間后關閉背光和屏幕,但它并沒有睡著,只是休息一下眼睛罷了,它的大腦和四肢仍在正常工作。PocketPC所采用的模型比Smartphone要復雜的多,你可以按下電源鍵讓系統(tǒng)睡眠,在必要時,也可以喚醒系統(tǒng)做一些工作然后再繼續(xù)睡眠。如果你在Smartphone上運行一個桌面精靈之類的程序,她為了引起你的注意,長時間的蹦啊跳啊,不管白天還是黑夜,可想而知,你的待機時間將......你可能會覺得PocketPC的“Sleep”模型比Smartphone的“Always On”模型要省電,其實恰恰相反。因為在系統(tǒng)睡眠的過程中,它需要通知所有的設備驅動,為了讓它們保存一些重要的信息并關閉相應的硬件設備,在系統(tǒng)被喚醒時也需要通知它們恢復先前的工作。這個過程不僅耗時還可能會耗更多的電,因為一些設備在頻繁的狀態(tài)轉換過程中會消耗比較多的能量。這也就是為什么當你收到一條短信時,睡眠狀態(tài)的PocketPC要花3到6秒的時間來處理,而Smartphone只需要幾個微秒:)2. Windows Mobile的電源管理策略我們可以用系統(tǒng)電源狀態(tài)機來簡單的描述Windows Mobile的電源管理策略,以PocketPC為例,系統(tǒng)電源狀態(tài)機如下圖所示:系統(tǒng)內(nèi)部的電源管理器負責協(xié)調(diào)電源狀態(tài)的轉換,電源狀態(tài)的轉換主要由一下幾種方式觸發(fā):計時器超時:SuspendTimeout和ResumingSuspendTimeout,分別對應于第一節(jié)介紹Suspend和Resuming狀態(tài)時所提到的計時器。細說起來,它們每個又有兩個值,分別對應著電源供電時和電池供電時的超時值,也就是注冊表[HLM\\System\\CurrentControlSet\\Control\\Power\\Timeout]中的ACSuspendTimeout、BattSuspendTimeout、ACResumingSuspendTimeout、BattResumingSuspendTimeout;系統(tǒng)調(diào)用:驅動程序或應用程序通過相應的API,請求進入某種電源狀態(tài)。這類API在前面的文章中已經(jīng)有所介紹,如SetSystemPowerState、SetPowerRequirement、DevicePowerNotify等;平臺相關的系統(tǒng)調(diào)用:通過PowerPolicyNotify通知電源管理器發(fā)生了某個事件,它的實現(xiàn)比較靈活,驅動程序或應用程序可以通過相應的參數(shù)與電源管理器進行交互,比如PPN_POWERCHANGE、PPN_SUSPENDKEYPRESSED、PPN_UNATTENDEDMODE等,參見"pmpolicy.h";直接訪問內(nèi)核對象:事件(Event)作為Windows CE系統(tǒng)的內(nèi)核對象,可以通過事件名稱在進程間共享,因此我們可以訪問電源管理器中的兩個事件,它們的名字分別是_T("PowerManager/ReloadActivityTimeouts")、_T("PowerManager/SystemIdleTimerReset")。如果你的程序需要動態(tài)修改那幾個計時器的時間長度,可以通過第一個事件通知電源管理器重新讀取注冊表中計時器的值,而第二個事件與SystemIdleTimerReset功能一樣,可以阻止系統(tǒng)進入睡眠狀態(tài)。3. Windows Mobile電源管理相關API的應用最后,通過幾個應用場景簡單介紹一下常用的電源管理相關的API的使用:如果你在設計的是媒體播放器程序,不希望在播放電影時,系統(tǒng)自動轉入Suspend狀態(tài),這時可以每隔30秒調(diào)用一次SystemIdleTimerReset,它會幫你重置那個計時器;如果你還想同時保持背光,那么可以調(diào)用SetPowerRequirement(TEXT("BKL1:"), D0, POWER_NAME, NULL, 0);如果你提供一個按鈕允許用戶關閉屏幕,那么調(diào)用SetSystemPowerState(NULL, POWER_STATE_IDLE, 0);如果你在設計的是天氣預報程序,需要每天早上6點在線更新天氣信息,這時可以調(diào)用CeRunAppAtTime,系統(tǒng)到時會被RTC中斷喚醒,還記得前面提到的那個15秒的計時器嗎,這時你的程序應該在15秒內(nèi)請求進入Unattended狀態(tài),否則系統(tǒng)將重新回到睡眠狀態(tài)。在處理更新的過程中,還是應該每隔30秒調(diào)用一次SystemIdleTimerReset,在處理完更新后,應該再次調(diào)用CeRunAppAtTime,并放棄Unattended狀態(tài)。請注意,在電源管理器的實現(xiàn)代碼中,用了一個引用計數(shù)的變量(gdwUnattendedModeRequests)統(tǒng)計所有對Unattended狀態(tài)的請求,所以PowerPolicyNotify(PPN_UNATTENDEDMODE, TRUE);和PowerPolicyNotify(PPN_UNATTENDEDMODE, FALSE);要成對出現(xiàn),否則系統(tǒng)將無法回到睡眠狀態(tài)。如果你要開發(fā)一個監(jiān)控電池狀態(tài)的程序,首先應該創(chuàng)建一個接收狀態(tài)通知的線程,在這個線程里調(diào)用RequestPowerNotifications,這個函數(shù)的第一個參數(shù)是一個消息隊列的句柄,所以必須先創(chuàng)建一個消息隊列(CreateMsgQueue),第二個參數(shù)是你希望得到的通知類型,這里要用到的是PBT_POWERSTATUSCHANGE|PBT_POWERINFOCHANGE,然后線程就可以等待通知了(WaitForSingleObject),一旦有通知到來,線程通過ReadMsgQueue讀取消息的內(nèi)容,再做些更新UI的工作。
-
觸摸屏
+關注
關注
42文章
2317瀏覽量
116768 -
WINDOWS
+關注
關注
4文章
3570瀏覽量
89307 -
定時器
+關注
關注
23文章
3255瀏覽量
115373
發(fā)布評論請先 登錄
相關推薦
Windows CE操作系統(tǒng)的電源狀態(tài)轉換策略

嵌入式操作系統(tǒng)Windows CE研究
Windows Embedded 操作系統(tǒng)
基于Windows CE.Net操作系統(tǒng)的故障診斷專家系統(tǒng)
如何去設計嵌入式Windows CE多媒體操作系統(tǒng)的硬件平臺?
嵌入式操作系統(tǒng)Windows CE的研究
什么是Windows CE,LynxOS是什么操作系統(tǒng)
Windows CE的OAL層開發(fā)

Windows CENET操作系統(tǒng)的架構
基于Windows CE的嵌入式操作系統(tǒng)實時性分析
Windows CE 電源管理解析
Windows CE操作系統(tǒng)在工業(yè)控制領域的應用
基于S3C2410處理器對Windows CE 5.0操作系統(tǒng)實現(xiàn)BSP移植

基于Windows CE操作系統(tǒng)實現(xiàn)OAL層的功能和結構應用設計

Windows CE.net操作系統(tǒng)的內(nèi)核定制

評論