




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
WindowsCE指南WindowsCE簡介WindowsCE特性與桌面版OS比較與其他嵌入式OS比較WinCE能做什么:手機WinCE能做什么:PDA便攜式多媒體設(shè)備WinCE能作什么:汽車電子BMWCitro?nClarionCo.Ltd.DaimlerChryslerFiatSubaruHondaHyundaiMitsubishiToyota…WinCE能做什么:其它工業(yè)控制機頂盒醫(yī)療設(shè)備銀行ATM系統(tǒng)放映機和大屏幕顯示器VoIP設(shè)備…WindowsCE發(fā)展歷史1996年發(fā)布WindowsCE1.0WindowsCE.NET4.x被廣泛應(yīng)用最新版WindowsCE6.0~7.0WindowsCE特點與桌面版本比較:硬件平臺桌面版WindowsOnlyrunsonx86architectureWindowsCEARM/XscaleMIPSPowerPCSparcx86WindowsCE特性WindowsCE支持在多種不同的CPU硬件平臺上運行與桌面版本比較:鏡像大小桌面WindowsWindows3.x:2-5MBWindows98:400MBWindowsXP:1.5GB越來越大Win7、Win8…不能定制WindowsCE最小:200KB網(wǎng)絡(luò)部分大約800KBGWES,ShellandApps大約4MB
InternetExplorer大約3MBWindowsCE特性組件化200多個可選組件快速方便地針對特定應(yīng)用系統(tǒng)定制OS與桌面版比較:實時性桌面Windows不具有實時性WindowsCE線程優(yōu)先級256級中斷嵌套每個線程都有獨立的時鐘嘀嗒處理優(yōu)先級反轉(zhuǎn)WindowsCE特性:WindowsCE支持實時性與桌面版比較:電源管理桌面Windows電源管理實現(xiàn)差WindowsCE電池供電/AC供電各設(shè)備的電源使用狀況關(guān)閉不必要的設(shè)備WindowsCE特性:WindowsCE提供電源管理器,用來管理設(shè)備供電系統(tǒng),增加電能的使用效率WindowsCE能夠減少設(shè)備的能量損耗,在系統(tǒng)復(fù)位、開啟、休眠和掛起狀態(tài),維持和保護RAM上的文件系統(tǒng)與桌面版比較:編程接口桌面WindowsASCII/UNICODE豐富的API強有力的硬件平臺WindowsCE只支持UNICODE部分Win32API,MFC等有限的硬件資源WindowsCE特性:WindowsCE只支持UNICODECHAR->TCHAR/WCHARstrlen->wcslen部分API功能受限運行WindowsCE的系統(tǒng)通常資源受限與桌面版比較:共享源代碼桌面Windows商業(yè)軟件,源代碼是微軟的一級機密WindowsCE開放CE6.0的核心源代碼用戶可以對它進行修改WindowsCE特性:源代碼共享用戶可以在“%_WINCEROOT%\private”
文件夾中找到公開的源代碼與其它嵌入式OS比較:多媒體支持其它嵌入式OS:對音視頻支持有限沒有商業(yè)的網(wǎng)站瀏覽器WindowsCE友好的用戶界面WindowsMediaPlayer9,支持mp3,wav,avi,wmv…InternetExplorer6&PocketIEWindowsCE特性:友好的用戶界面強大的多媒體支持與桌面版windows相兼容PocketWord,Excel,PowerPoint,adobereaderPocketMSNmessengerPocketIE,WindowsMediaPlayerSQLServerCEeditionACDSee…
…與其它的嵌入式OS比較:編程接口OtherEOS:不同的編程接口常用的C/C++&j2meWindowsCEWin32APIMFC,ATL,STL…COM,ActiveX.NETCompactFrameworkJavaVMEVB,EVC…WindowsCE特性:對于Windows程序員來說容易上手支持多種編程語言與其它的嵌入式OS比較:
鏡像大小和實時性其它嵌入式OS:RTLinux,μC/OS-II支持硬實時Vxworks最小:8kμC/OS-II最小:2kWindowsCE非硬實時系統(tǒng)對于一些特殊的應(yīng)用鏡像可能過大WindowsCE優(yōu)點:豐富的可選組件和功能定制方便易使用與桌面版windows編程接口類似具有豐富的微軟及第三方應(yīng)用支持WindowsCE系統(tǒng)結(jié)構(gòu)和功能WindowsCE的結(jié)構(gòu)概述系統(tǒng)架構(gòu)NK.EXEFILESYS.EXEDEVICE.EXEGWES.EXESERVICES.EXEThreadMigration微內(nèi)核微內(nèi)核是一個小型的操作系統(tǒng)核心,它為模塊化擴展提供基礎(chǔ)。微內(nèi)核的基本原理:只有最基本的操作系統(tǒng)功能才能放在內(nèi)核中。不是最基本的服務(wù)和應(yīng)用程序在微內(nèi)核之上構(gòu)造,并在用戶模式下執(zhí)行。微內(nèi)核單體內(nèi)核操作系統(tǒng)(UNIX)微內(nèi)核結(jié)構(gòu)(WindowsCE)微內(nèi)核結(jié)構(gòu)用一個水平分層的結(jié)構(gòu)代替了傳統(tǒng)的縱向分層的結(jié)構(gòu)。在微內(nèi)核外部的操作系統(tǒng)部件被當(dāng)作服務(wù)器進程實現(xiàn),它們可以通過微內(nèi)核傳遞信息來實現(xiàn)相互之間的交互。
WindowsCE系統(tǒng)架構(gòu)WindowsCE屬于比較典型的微內(nèi)核操作系統(tǒng)。在內(nèi)核中僅僅實現(xiàn)進程、線程、調(diào)度及內(nèi)存管理等最基本的模塊,而把圖形系統(tǒng)、文件系統(tǒng)及設(shè)備驅(qū)動程序等等都作為單獨的用戶進程來實現(xiàn)。WindowsCE系統(tǒng)架構(gòu)NK.EXENK.LIB+OAL.LIB=NK.EXE微軟提供了預(yù)先編譯的NK.LIB庫文件,它的代碼與CPU指令體系結(jié)構(gòu)相關(guān)而與具體的外設(shè)無關(guān)。OAL.LIB是OEM層中的OAL代碼編譯后的輸出。提供:處理器調(diào)度內(nèi)存管理進程創(chuàng)建加載系統(tǒng)內(nèi)的通信機制中斷處理為其他部分提供核心調(diào)用例程NK.EXEOALRAMROM/FLASHTimerINTCCPUGWES.EXE圖形窗口事件系統(tǒng)(GWES)管理所有的圖形界面處理以及用戶輸入桌面的USER32+GDI32作為一個單獨的進程DEVICE.EXE設(shè)備管理器負責(zé)加載、卸載和管理所有不被GWES.EXE管理的驅(qū)動程序。大多數(shù)功能都放在了devmgr.dll中。提供所有的與驅(qū)動相關(guān)的函數(shù)實現(xiàn)在啟動的時候通過注冊表加載驅(qū)動程序Services.EXE所有服務(wù)的宿主進程與Device.exe分開,負責(zé)加載系統(tǒng)服務(wù)的進程(FTP,TELNET,HTTP)用戶可以添加服務(wù)提供API管理服務(wù)FILESYS.EXE文件系統(tǒng)和所有與文件相關(guān)的API都是通過FileSys.exe進程來管理的。有三個組件:對象存儲存儲管理器ROM文件系統(tǒng)進程和線程與調(diào)度進程線程調(diào)度進程概述進程(process)定義:是一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行過程。它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。進程通常由三部分組成:程序、數(shù)據(jù)集合、進程控制塊PCB(ProcessControlBlock)進程特點:動態(tài)性獨立性并發(fā)行結(jié)構(gòu)化進程概述進程與程序的聯(lián)系:程序是構(gòu)成進程的組成部分之一。一個進程的運行目標(biāo)是執(zhí)行它對應(yīng)的程序。進程與程序的區(qū)別:程序是靜態(tài)的,進程是動態(tài)的。進程有創(chuàng)建、執(zhí)行及撤銷而消亡的生命周期,程序只是一個文件,存在于某種介質(zhì)上。一個程序可對應(yīng)多個進程,但是一個進程只能對應(yīng)一個程序。WindowsCE進程WindowsCE(5.0)最多只支持32個進程同時運行。每個進程占據(jù)32MB的虛擬地址空間,也被稱為一個Slot。在系統(tǒng)啟動的時候,默認會啟動四個進程,NK.EXE,FILESYS.EXE,GWES.EXE及DEVICE.EXE。WindowsCE進程WindowsCE的進程也不支持環(huán)境變量(EnvironmentVariable)和當(dāng)前目錄。如果沒有明確指明可執(zhí)行文件的路徑,那么WindowsCE會按照如下的順序搜索:首先查找“\Windows”目錄查找根目錄(“\”)OEM所指定的搜索目錄(“HKEY_LOCAL_MACHINE\Loader\SystemPath”)例如:如果MyApp.exe的同一目錄中存在MyFile.txt,那么下面的代碼都是不正確的。
_wfopen(L”%WINDOWS%\\MyFile.txt,L”w”);_wfopen(L”MyFile.txt”,L”w”);WindowsCE進程一種解決方案
TCHARszBuf[MAX_PATH];DWORDdwPathLen;//得到當(dāng)前程序可執(zhí)行文件的完整路徑
dwPathLen=GetModuleFileName(NULL,szBuf,MAX_PATH);if(!dwPathLen){return-1;}//除去文件名
while(szBuf[--dwPathLen]!=‘\\’);szBuf[dwPathLen+1]=NULL;//拼接文件
_tcscat(szBuf,TEXT(“MyFile.txt”));//如果當(dāng)前文件位于/Temp,則此時szBuf的內(nèi)容為”/Temp/MyFile.txt”WindowsCE進程創(chuàng)建進程的API如下:
BOOLCreateProcess(LPCWSTRlpApplicationName,//可執(zhí)行文件的路徑和名字,不能為NULLLPWSTRlpCommandLine,//傳遞啟動參數(shù)(必須為Unicode字符串)
LPSECURITY_ATTRIBUTESlpProcessAttributes,//不支持,設(shè)置為NULLLPSECURITY_ATTRIBUTESlpThreadAttributes,//不支持,設(shè)置為NULLBOOLbInheritHandles,//不支持,設(shè)置為FALSEDWORDdwCreationFlags,//進程加載后的初始狀態(tài)
PVOIDlpEnvironment,//不支持,設(shè)置為NULLLPCWSTRlpCurrentDirectory,//不支持,設(shè)置為NULLLPSTARTUPINFOWlpStartupInfo,//不支持,設(shè)置為NULLLPPROCESS_INFORMATIONlpProcessInformation,//返回的進程相關(guān)的信息
);//整個函數(shù)返回值為BOOL型,當(dāng)成功創(chuàng)建進程后,返回值為真(TRUE),否則返回假(FALSE).WindowsCE進程終止進程最好是由WinMain()或者其他主函數(shù)返回調(diào)用ExitThread()函數(shù)使進程的主線程退出從而終止進程直接調(diào)用ExitProcess()函數(shù)在當(dāng)前進程終止另一個進程可以使用TerminateProcess()線程概述線程(Thread)定義:有時稱輕量級進程,進程中的一個運行實體,是一個CPU調(diào)度單位。線程特點:是進程的一個實體,可作為系統(tǒng)獨立調(diào)度和分派的基本單位。不擁有系統(tǒng)資源(只擁有從屬進程的全部資源,資源是分配給進程)一個進程中的多個線程可并發(fā)執(zhí)行。(進程可創(chuàng)建線程執(zhí)行同一程序的不同部分)系統(tǒng)開銷小、切換快。(進程的多個線程都在進程的地址空間活動)線程概述線程和進程的關(guān)系是:線程是屬于進程的,線程運行在進程空間內(nèi),同一進程所產(chǎn)生的線程共享同一內(nèi)存空間,當(dāng)進程退出時該進程所產(chǎn)生的線程都會被強制退出并清除。線程可與屬于同一進程的其它線程共享進程所擁有的全部資源,但是其本身基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的信息(如程序計數(shù)器、一組寄存器和棧)。WindowsCE線程線程是WindowsCE中最小的可執(zhí)行單元。WindowsCE的調(diào)度系統(tǒng)只識別和調(diào)度線程。一個進程可擁有的線程數(shù)理論上是沒有限制的,只與當(dāng)前可用的內(nèi)存有關(guān)。線程的上下文:線程占用的內(nèi)存以及其他資源(如:處理器的寄存器、自己獨立的棧等),這些資源構(gòu)成了線程的上下文。線程可運行在:核心態(tài):線程可訪問操作系統(tǒng)所有的資源(可訪問核心態(tài)的2GB虛擬地址空間)。一般來說,操作系統(tǒng)線程和中斷服務(wù)例程運行在核心態(tài)。用戶態(tài):應(yīng)用程序和設(shè)備驅(qū)動程序的中斷服務(wù)線程運行在用戶態(tài)。WindowsCE線程創(chuàng)建線程的API如下:HANDLECreateThread(
LPSECURITY_ATTRIBUTESlpsa,
//不支持,設(shè)為NULL
DWORDcbStack,//線程棧的大小,通常被設(shè)置為NULL,使用默認值
LPTHREAD_START_ROUTINElpStartAddr,//指向線程的執(zhí)行函數(shù)的指針
LPVOIDlpvThreadParam,
//向線程中傳遞一個參數(shù)
DWORDfdwCreate,
//控制線程創(chuàng)建的附加參數(shù)
LPDWORDlpIDThread
//返回新創(chuàng)建線程的ID);如果線程創(chuàng)建成功,那么函數(shù)返回新創(chuàng)建線程的句柄;否則函數(shù)返回NULL。WindowsCE線程結(jié)束線程最好是從線程的執(zhí)行函數(shù)返回在線程中調(diào)用ExitThread()函數(shù)可以使線程結(jié)束執(zhí)行在當(dāng)前線程中終止另一個線程調(diào)用TerminateThread()函數(shù)WindowsCE調(diào)度WindowsCE是一個搶占式多任務(wù)(PreemptiveMultitasks)操作系統(tǒng)。調(diào)度程序使用基于優(yōu)先級的時間片算法對線程進行調(diào)度。WindowsCE中每個線程都有一個優(yōu)先級,WindowsCE調(diào)度系統(tǒng)根據(jù)線程的優(yōu)先級進行調(diào)度。WindowsCE將線程分為256個優(yōu)先級。0表示優(yōu)先級最高,255表示優(yōu)先級最低。
0~96優(yōu)先級高于驅(qū)動程序的實時程序使用
248~255基于Windows
CE的驅(qū)動程序
153~247優(yōu)先級低于驅(qū)動程序的實時程序使用
248~255非實時的普通應(yīng)用程序線程優(yōu)先級分布圖(例)PriorityComponent0-19Open–RealTimeAboveDrivers20GraphicsVerticalRetrace99PowermanagementResumeThread100-108USBOHCIUHCI,Serial109-129IRSIR1,NDIS,Touch130KITL131VMini132CxPort145PS2Keyboard148IRComm150TAPI248PowerManagement249WaveDev,Mouse,PnP,Power250WaveAPI251Normal252-255Open-ApplicationsWindowsCE調(diào)度獲取和設(shè)置線程的優(yōu)先級GetThreadPriority–
當(dāng)前線程的優(yōu)先級SetThreadPriority–
改變當(dāng)前線程的優(yōu)先級(248~255)CeGetThreadPriority–
得到當(dāng)前線程的優(yōu)先級CeSetThreadPriority–
改變當(dāng)前線程的優(yōu)先級WindowsCE調(diào)度時間片大小(Quantum):在線程獲得處理器后,會執(zhí)行特定的一段時間,然后重新調(diào)度,這段時間稱做時間片大小。默認的時間片是100毫秒,OEM可以在OAL中重新設(shè)置獲得時間片大小的APIDWORDCeGetThreadQuantum(
HANDLEhThread);此函數(shù)以線程的句柄為參數(shù),返回值是一個32位無符號整數(shù),代表線程的時間片大小。WindowsCE調(diào)度線程的狀態(tài)運行(Running)
線程正在處理器上執(zhí)行。就緒(Ready)
線程可以執(zhí)行,但是此刻沒有占用處理器。如果就緒的線程被調(diào)度程序選中,則占用處理器就進入運行狀態(tài)。掛起(Suspended)
創(chuàng)建線程時指定了CREATE_SUSPENDED參數(shù)或者調(diào)用SuspendThread()函數(shù)都可導(dǎo)致線程掛起。
睡眠(Sleeping)
調(diào)用Sleep函數(shù)可使線程進入睡眠狀態(tài),處于睡眠狀態(tài)的線程不能占有處理器。當(dāng)睡眠時間結(jié)束后,線程轉(zhuǎn)入就緒態(tài)。阻塞(Blocked)
如果線程申請的共享資源暫時無法獲得,那么線程就進入阻塞狀態(tài),處于阻塞狀態(tài)的線程不能占有處理器。終止(Terminated)
線程運行結(jié)束。WindowsCE調(diào)度線程的狀態(tài)轉(zhuǎn)換圖就緒終止阻塞睡眠運行掛起運行結(jié)束睡眠結(jié)束得到資源ResumeSuspend得到CPU上下文切換Sleep(n)WindowsCE調(diào)度線程A擁有最高的優(yōu)先級,他會一直執(zhí)行直到結(jié)束或阻塞線程B和C使用時間片輪轉(zhuǎn)算法(Round-Robin,RR)運行線程的調(diào)度WindowsCE調(diào)度WindowsCE調(diào)度系統(tǒng)的特點具有高優(yōu)先級的進程如果處于就緒狀態(tài),則總是會被調(diào)度系統(tǒng)選中執(zhí)行如果系統(tǒng)中存在多個優(yōu)先級相同的就緒進程,這些進程以時間片輪轉(zhuǎn)算法調(diào)度如果線程的時間片大小被設(shè)置為0,那么它會一直占用處理器運行,直到線程結(jié)束或者進入阻塞、掛起及睡眠狀態(tài)WindowsCE調(diào)度優(yōu)先級反轉(zhuǎn)(PriorityInversion):系統(tǒng)中有一些資源是由多個線程共享的,如果具有高優(yōu)先級的線程申請的資源正在被低優(yōu)先級線程占用,那么此時高優(yōu)先級別的線程就阻塞在低優(yōu)先級的線程上,反而使具有中優(yōu)先級的線程先于高優(yōu)先級的線程執(zhí)行,這就是所謂的優(yōu)先級反轉(zhuǎn)。WindowsCE調(diào)度WindowsCE中解決優(yōu)先級反轉(zhuǎn)的方法單級方法:在這種方法中,操作系統(tǒng)只會激活導(dǎo)致高優(yōu)先級線程阻塞的一個低優(yōu)先級線程上臺執(zhí)行,直到釋放共享資源。優(yōu)先級反轉(zhuǎn)AvoidpriorityinversionbykeepingallthreadswaitingforsameresourceatthesamepriorityThread3HighPriorityMediumPriorityLowPriorityThread3ResourceOwner:Thread2Thread1Thread1Priority
InversionPreemptPreemptBlockedPriority
RestoredThread3Example:Thread1blockedwaitingforresourceownedbyThread3,causingPriorityInversionThread3BlockedThread1Thread2BlockedThreadAPI線程創(chuàng)建CreateThread–
創(chuàng)建一個普通優(yōu)先級的線程線程優(yōu)先級GetThreadPriority–
當(dāng)前線程的優(yōu)先級SetThreadPriority–
改變當(dāng)前線程的優(yōu)先級(251)CeGetThreadPriority–
得到當(dāng)前線程的優(yōu)先級CeSetThreadPriority–
改變當(dāng)前線程的優(yōu)先級線程睡眠Sleep(0)–
放棄剩余的時間片Sleep(n)–
睡指定的毫秒Sleep(INFINITE)–
使當(dāng)前線程一直睡眠SleepTillTick–
睡到下一個時鐘嘀嗒SuspendThread–
增加線程的掛起計數(shù)ResumeThread–減少線程的掛起計數(shù)同步對象線程需要同步對象在某些時候進行同步操作。同步對象狀態(tài)未通知(Non-signaled)通知(Signaled)同步對象類型MutexSemaphoreEventCriticalSection同步對象等待函數(shù)DWORDWaitForSingleObject(HANDLE
hHandle,//同步對象的句柄
DWORDdwMilliseconds//等待的ms數(shù)
);DWORDWaitForMultipleObjects(
DWORDnCount,//lpHandles中的同步對象個數(shù)
CONSTHANDLE*lpHandles,//同步對象句柄的數(shù)組
BOOL
fWaitALL,//是否等該lpHandles中所有的內(nèi)核對象
DWORDdwMilliseconds//等待的ms數(shù)
);
同步對象(Mutex)概覽同一時刻只有一個線程可以擁有Mutex對象全局名稱的Mutex可以跨進程使用。在沒有線程擁有它時處于通知狀態(tài)被線程擁有的時候處于非通知狀態(tài)函數(shù)創(chuàng)建一個Mutex同步對象HANDLECreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes,//不支持,設(shè)置為NULLBOOLbInitialOwner,//是否為創(chuàng)建該Mutex的線程所擁有
LPCTSTRlpName//可選,該Mutex的名字);釋放對Mutex的占用BOOLReleaseMutex(HANDLEhMutex//Mutex的句柄);同步對象(Mutex)實例——使用Mutex對象對共享的全局變量i進行訪問
HANDLEhMutex;INTi=0;//創(chuàng)建Mutex對象和線程
VOIDInit(){hMutex=CreateMutex(NULL,FALSE,NULL);CreateThread(NULL,NULL,ThreadProc1,NULL,NULL,NULL);CreateThread(NULL,NULL,ThreadProc2,NULL,NULL,NULL)}DWORDWINAPITHreadProc1(LPVOIDlpParameter){WaitForSingleObject(hMutex,INFINITE);//獲得Mutex對象
i++;
//訪問共享資源
ReleaseMutex(hMutex);
//釋放同步對象
return0;}DWORDWINAPITHreadProc2(LPVOIDlpParameter){WaitForSingleObject(hMutex,INFINITE);//獲得Mutex對象
i--;
//訪問共享資源
ReleaseMutex(hMutex);
//釋放同步對象
return0;}同步對象(Semaphore)概覽限制占有共享資源的數(shù)量(如果一個Semaphore帶有記數(shù)n,這表示同時最多可以有n個線程占有該Semaphore)全局名稱的Semaphores可以跨進程使用。引用計數(shù)大于零時處于通知狀態(tài)引用計數(shù)小于等于0時處于非通知狀態(tài)函數(shù)創(chuàng)建一個Semaphore對象HANDLEWINAPICreateSemaphore(
LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,//不支持,設(shè)為NULL
LONGlInitialCount,//初始計數(shù)
LONGlMaximumCount,
//最大支持的線程數(shù)
LPCTSTRlpName
//可選,Semaphore的名字);釋放SemaphoreBOOLReleaseSemaphore(
HANDLEhSemaphore,
//要釋放的Semaphore句柄
LONGlReleaseCount,
//釋放的引用個數(shù)
LPLONGlpPreviousCount
//返回釋放前的Semaphore計數(shù));同步對象(Event)概覽全局名稱的Event可以跨進程使用。事件發(fā)生時處于通知狀態(tài)事件未發(fā)生時處于非通知狀態(tài)函數(shù)創(chuàng)建Event同步對象HANDLEWINAPICreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,//不支持,設(shè)為NULLBOOLbManualReset,//是否需要人工重置
BOOLbInitialState,
//初始狀態(tài),TRUE為通知狀態(tài)
LPCTSTRlpName
//可選,Event的名字);把Event同步對象設(shè)置為通知狀態(tài)BOOLSetEvent(HANDLEhEvent//Event的句柄);把Event同步對象設(shè)置為未通知狀態(tài)
BOOLResetEvent(HANDLEhEvent//Event的句柄););同步對象(Event)實例——使用Event對象對共享的全局變量i進行訪問
HANDLEhEvent;INTi=0;//創(chuàng)建一個自動重置,初始狀態(tài)為通知的Event對象。創(chuàng)建線程
VOIDInit(){hEvent=CreateEvent(NULL,FALSE,TRUE,NULL);CreateThread(NULL,NULL,ThreadProc1,NULL,NULL,NULL);CreateThread(NULL,NULL,ThreadProc2,NULL,NULL,NULL);}DWORDWINAPIThreadProc1(LPVOIDlpParameter){WaitForSingleObject(hEvent,INFINITE);//等待事件發(fā)生
i++;
//訪問共享資源
SetEvent(hEvent);
//讓事件再次發(fā)生
return0;}DWORDWINAPIThreadProc2(LPVOIDlpParameter){WaitForSingleObject(hEvent,INFINITE);//等待事件發(fā)生
i--;
//訪問共享資源
SetEvent(hEvent);
//讓事件再次發(fā)生
return0;}用戶態(tài)下的同步方法
用戶態(tài)下的同步方法CriticalSection互鎖函數(shù)同步(CriticalSection)概覽允許多個線程共享訪問同一塊數(shù)據(jù)使用互斥訪問保護數(shù)據(jù)其他線程會block直到占有者放棄臨界區(qū)每個CS都是OS提供的一個數(shù)據(jù)結(jié)構(gòu),只能在同一個進程內(nèi)部使用,比MUTEX要高效。函數(shù)InitializeCriticalSection分配CRITICAL_SECTION結(jié)構(gòu)EnterCriticalSection調(diào)用著,在占有CS的線程調(diào)用LeaveCriticalSection之前會阻塞TryEnterCriticalSectionEnterCriticalSection的非阻塞版LeaveCriticalSection釋放CriticalSection的所有權(quán)DeleteCriticalSection釋放InitializeCriticalSection分配的資源同步(CriticalSection)CRITICAL_SECTIONcs;INTi=0;//初始化臨界區(qū)
VOIDInit(){InitializeCriticalSection(&cs);CreateThread(NULL,NULL,ThreadProc1,NULL,NULL,NULL);CreateThread(NULL,NULL,ThreadProc2,NULL,NULL,NULL);}DWORDWINAPIThreadProc1(LPVOIDlpParameter){EnterCriticalSection(&cs);//進入臨界區(qū)
i++;
LeaveCriticalSection(&cs);//離開臨界區(qū)
return0;}DWORDWINAPIThreadProc2(LPVOIDlpParameter){EnterCriticalSection(&cs);//進入臨界區(qū)
i++;
LeaveCriticalSection(&cs);//離開臨界區(qū)
return0;}同步(InterlockedFunction)概覽對多個線程對同一個變量的共享訪問保護提供原子操作函數(shù)InterlockedIncrement–
對一個變量進行原子加1操作InterlockedDecrement-對一個變量進行原子減1操作InterlockedExchange–
對兩個變量進行交換值操作InterlockedTestExchange–
如果變量符合,則交換兩個變量的值InterlockedCompareExchange–
基于比較,交換兩個變量的值同步(InterlockedFunction)實例——使用互鎖函數(shù)對共享的全局變量i進行訪問
INTi=0;//創(chuàng)建線程
VOIDInit(){CreateThread(NULL,NULL,ThreadProc1,NULL,NULL,NULL);CreateThread(NULL,NULL,ThreadProc2,NULL,NULL,NULL);}DWORDWINAPIThreadProc1(LPVOIDlpParameter){InterlockedIncrement(&i);return0;}DWORDWINAPIThreadProc2(LPVOIDlpParameter){InterlockedDecrement(&i);return0;}進程間通信常用的兩種方法文件映射點對點消息隊列進程間通信——文件映射概覽通過文件映射文件可在進程的共享虛擬地址空間內(nèi)保留一個地址空間的區(qū)域,同時將文件所在的物理內(nèi)存映射到此區(qū)域。在WindowsCE中,內(nèi)存映射文件總是會被映射到4GB虛擬地址空間的0x42000000~0x7FFFFFFF的進程共享區(qū)域。函數(shù)CreateFileForMapping
–
創(chuàng)建一個文件,用于內(nèi)存映射
CreateFileMapping–
創(chuàng)建內(nèi)存映射文件對象
MapViewOfFile–把內(nèi)存映射文件映射到進程共享地址空間
UnmapViewOfFile–刪除內(nèi)存映射文件進程間通信——PTP消息隊列概覽消息隊列通常是一個先進先出的隊列結(jié)構(gòu),當(dāng)一個進程把消息寫入隊列,需要此消息的其他進程,就可從隊列中取得消息。消息隊列還可用來進行同步。消息是沒有優(yōu)先級的,對于同一個隊列,所有的消息都嚴(yán)格按照先進先出的方式進出。WindowsCE中的消息隊列是基于點對點操作的,它不能用來進行廣播。函數(shù)CreateMsgQueue–
創(chuàng)建或打開一個消息隊列OpenMsgQueue–
對一個現(xiàn)存的消息隊列打開一個句柄CloseMsgQueue–
關(guān)閉一個打開的消息隊列ReadMsgQueue–
從消息隊列中讀一個消息WriteMsgQueue–
向消息隊列寫一條消息GetMsgQueueInfo–
返回有關(guān)一個消息隊列的信息內(nèi)存管理WindowsCE采用層次化的結(jié)構(gòu)PhysicalMemory*StorageDeviceVirtualMemoryLogicalMemory(Heap,stack)CRuntime(mallc,new…)Application內(nèi)存結(jié)構(gòu)物理內(nèi)存在內(nèi)部或外部總線上可訪問的實際的RAM/ROM虛擬內(nèi)存通過內(nèi)存管理單元MMU把虛擬地址映射到物理地址允許代碼在需要的時候再換入概述虛擬內(nèi)存模型靜態(tài)映射的虛擬內(nèi)存進程模型進程內(nèi)存進程堆棧虛擬內(nèi)存模型虛擬內(nèi)存一個32-bit(4Gigabyte)虛擬內(nèi)存地址空間提供了被保護物理內(nèi)存的有效使用虛擬地址內(nèi)存管理單元(MMU)“擁有”
物理內(nèi)存MMU將虛擬地址轉(zhuǎn)換為物理地址一個有效的虛擬地址必須被映射到一個物理地址虛擬地址的靜態(tài)和動態(tài)映射物理地址在上電時,在MMU有效之前只被CPU使用虛擬內(nèi)存模式特權(quán)模式在內(nèi)核模式和用戶模式間的虛擬內(nèi)存split所有的進程共享同一個平板式虛擬內(nèi)存地址空間
通過MMU內(nèi)核模式管理用戶模式進程保護內(nèi)核空間只被特權(quán)訪問的內(nèi)核模式代碼使用(Kmode)大多數(shù)是靜態(tài)虛擬地址映射(不會有頁內(nèi)錯誤)用戶空間每32MB由64個slots組成大多數(shù)是動態(tài)虛擬地址映射虛擬內(nèi)存模式KernelSpaceUser
SpaceKernelAddresses:KPAGE,TrapArea,OthersSlot97:NK.EXEUnusedStaticallyMappedVirtualAddresses:Un-CachedStaticallyMappedVirtualAddresses:CachedSlot0–CurrentProcessSlot1–XIPDLLcodeSlots2-32-ProcessesSlots33-63ObjectStoreand
Memory-MappedFilesFFFFFFFFE0000000C4000000C2000000C0000000A0000000800000007FFFFFFF42000000040000000200000000000000Total4GBVirtual
Space2GB2GBKernelSpaceUserSpaceUnused靜態(tài)映射虛擬地址2GB
User512MB
Uncached512MB
Cached32MBFlashPhysicalMemoryVirtualMemory040000008200000080000000A0000000C00000000000000064MBRAM0000000064MBRAM32MBFlash64MBRAMFFFFFFFFAddress
Translation32MBFlashKernelSpaceUser
SpaceProcessModel虛擬地址Slots每個slot是32MB(225bytes)虛擬地址空間Slot空間被進程,DLLs,和虛擬分配共享在進程slot間快速進行上下文切換(交換頁表)當(dāng)前線程執(zhí)行在slot0上管理粒度虛擬地址空間以64KB的粒度被分割物理地址以4KB的粒度被頁進行管理分配規(guī)則DLL分配從高地址開始向下增長進程分配從低地址開始向上增長Lesson:ProcessMemorySlot30Slot31Slot32...01FFFFFF000100000000000032MBProcessSpaceCurrentProcessXIPROMDLLsnk.exefilesys.exeshell.exedevice.exegwes.exeC4000000C2000000FreeVirtualSpaceSlot63...ResourceDLLsSlot2Slot3Slot4Slot5Slot1Slot00A0000003E0000003C000000400000004200000000000000040000000200000006000000080000000C000000...Slot97800000007E000000堆用法以字節(jié)為粒度來分配內(nèi)存獨立于處理器(隱藏了內(nèi)存分頁)自動的分配內(nèi)存和按要求提交頁不可變更(當(dāng)整個堆被釋放時進行頁面回收)使用首次適應(yīng)算法(first-fitalgorithm)通過堆列表進行管理使用相同大小對象分配時效率最高局部堆在裝載處理時保留192KB虛擬內(nèi)存可用函數(shù)GetProcessHeap()得到默認堆棧用法存儲在一個函數(shù)中使用的臨時數(shù)據(jù)存儲在執(zhí)行處理過程中的處理器寄存器的狀態(tài)為每一個線程創(chuàng)建時分配默認的棧按要求提交大小依賴于CPU默認的棧大小在編譯程序時,可使用編譯器選項/STACK決定默認線程的棧大小默認情況,一個進程的所有線程擁有相同的棧大小系統(tǒng)API調(diào)用機制Coredll.dll定位每一個進程slot的頭地址從用戶模式的線程實現(xiàn)對系統(tǒng)API的調(diào)用直接實現(xiàn)一些系統(tǒng)API的調(diào)用引起一個例外(陷阱)轉(zhuǎn)遞到系統(tǒng)API的請求上內(nèi)核捕獲系統(tǒng)API請求的異常陷阱分配一個系統(tǒng)exe去執(zhí)行請求用戶模式的線程切換到系統(tǒng)exe進程空間用戶模式的線程繼承當(dāng)前進程的訪問權(quán)限系統(tǒng)API調(diào)用機制UsermodethreadWin32APIThunksFunctionCallCoredll.dllApp.exeKernel
TrapWin32APIDispatchNk.exeJumpFunctionCodesystemEXEKernel
CallReturn
Call文件系統(tǒng)所有與文件系統(tǒng)相關(guān)的函數(shù)都在FileSys.exe中實現(xiàn)單根“\”,沒有像“C:\”一樣的盤符有三個組件:對象存儲存儲管理器ROM文件系統(tǒng)文件系統(tǒng)概述對象存儲被FileSys.exe管理的一個堆從邏輯上講包括:RAM文件系統(tǒng)Registry(注冊表)Database(CE數(shù)據(jù)庫)RAM文件系統(tǒng)通常位于根目錄Ex:“\myfile.txt”
存在于RAM中ROM文件系統(tǒng)被映射成“\Windows”
目錄“\Windows”
目錄中所有的文件都是只讀的通常是nk.bin或nk.nb0中的文件注冊表用來保存應(yīng)用程序、驅(qū)動程序和用戶的設(shè)定以及其他一些配置信息。具有層次化的組織結(jié)構(gòu),由若干個鍵以及值組成注冊表類型基于RAM的注冊表(適用于沒有外部存儲)
基于Hive的注冊表(適用于有永久存儲并且須經(jīng)常冷啟動的設(shè)備)WindowsCE數(shù)據(jù)庫提供了與關(guān)系型數(shù)據(jù)庫類似的數(shù)據(jù)結(jié)構(gòu)化存儲和訪問CE數(shù)據(jù)庫最上層是數(shù)據(jù)庫卷標(biāo)(Volume)
一個Volume可包含一個或多個數(shù)據(jù)庫數(shù)據(jù)庫是一系列記錄的集合存儲管理負責(zé):管理所有的外部設(shè)備StoragedevicedriverPartitiondevicedriverFileSystemdevicedriverFileSystemfilter用戶界面與圖形系統(tǒng)圖形系統(tǒng)為WindowsCE提供圖形界面服務(wù),它是由GWES.EXE實現(xiàn)的。有三個組件:圖形系統(tǒng)(Graphic)窗口系統(tǒng)(Windows)事件系統(tǒng)(Event)圖形系統(tǒng)WindowsCE中使用圖形設(shè)備接口來處理程序的圖形輸出。以設(shè)備上下文(DeviceContext,DC)的對象的句柄為參數(shù),調(diào)用各種GDI函數(shù)實現(xiàn)各種文字或圖形的輸出。窗口系統(tǒng)創(chuàng)建窗口的步驟應(yīng)用程序調(diào)用RegisterClass()向系統(tǒng)注冊一個窗口類應(yīng)用程序調(diào)用CreateWindow()以某個已注冊的窗口類為模板創(chuàng)建窗口事件系統(tǒng)Windows應(yīng)用程序是以事件為驅(qū)動、消息機制為基礎(chǔ)的。Windows程序所做的一切都是響應(yīng)發(fā)送給窗口過程的消息。事件系統(tǒng)WindowsCE中,消息定義如下:
typedefstructtagMSG{HWNDhwnd;//接收該消息的窗口的句柄
UINTmessage;//消息的類型
WPARAMwParam;//與具體消息類型相關(guān)的附加數(shù)據(jù)
LPARAMlParam;//與具體消息類型相關(guān)的附加數(shù)據(jù)
DWORDtime;//發(fā)送消息時的時間
POINTpt;//發(fā)送消息時的鼠標(biāo)位置}MSG,*PMSG,NEAR*NPMSG,*LPMSGWindowsCE嵌入式系統(tǒng)應(yīng)用程序開發(fā)目錄工具和技術(shù)常規(guī)的應(yīng)用開發(fā)步驟WindowsMobile開發(fā)PocketPCSmartphone模擬器概述什么是應(yīng)用程序開發(fā)在特定的WindowsCE平臺下使用該平臺的編程接口實現(xiàn)各種功能平臺的價值依賴于運行在其上的應(yīng)用程序WindowsCE應(yīng)用程序開發(fā)工具PlatformBuilderEmbeddedVisualC++VisualStudio.NETPlatformBuilderPlatformBuilder支持WinCEApp/DLL/Lib,使用Win32API開發(fā)應(yīng)用程序?qū)⒈绘溄拥絆S內(nèi)核中一旦修改代碼,必須再重新編譯鏡像容易調(diào)試OS內(nèi)核,不容易調(diào)試應(yīng)用程序首先必須創(chuàng)建一個debug版的OSEmbeddedVisualC++EmbeddedVisualC++支持WinCEApp/DLL/COM/LibusingWin32API,MFC,ATLandSTL與VisualC++6.0具有相似的工程管理模式和用戶界面易于調(diào)試和測試必須安裝相應(yīng)的為特定平臺開發(fā)的SDK,從而開發(fā)相應(yīng)的應(yīng)用程序VisualStudio.NETVisualStudio.NET2003開發(fā)基于.NETCompactFramework1.0和.NETCompactFramework2.0的托管代碼,也可以使用C/C++語言來開發(fā)本機代碼可使用C#,VB.NET...VS.NET具有完整的開發(fā)環(huán)境目標(biāo)平臺上需要安裝.NETcompactframework易于調(diào)試和測試NativeApplicationModelManagedApplicationModelVisualStudio.NET2005C#orVB.NET.NETCompactFrameworkRuntimeCorC++Win32ApplicationsCompiledPlatformBuilderWindowsCEOperatingSystemCorC++Win32ApplicationseMbeddedVisualC++應(yīng)用程序開發(fā)選擇相關(guān)技術(shù)
你有哪些選擇?Win32MicrosoftFoundationClass(MFC).NETCompactFrameworkWin32Win32API是微軟32位Windows平臺的應(yīng)用程序編程接口。使用Win32API編寫的應(yīng)用程序可在不同的Windows平臺之間基本實現(xiàn)代碼級的兼容。一個標(biāo)準(zhǔn)的Win32源程序=源代碼文件+資源文件MFCMFC是一個基于C++語言的面向?qū)ο蟮某绦蛟O(shè)計框架,它大大簡化了Windows編程工作。優(yōu)點:MFC提供了一個標(biāo)準(zhǔn)化的結(jié)構(gòu),開發(fā)人員可從一個較高的起點編程,從而節(jié)省大量的時間提供了大量的代碼程序的控制主要由MFC框架完成。與桌面MFC的異同:WindowsCE中的MFC對桌面的MFC做了一定的改動。增加了一些WindowsCE特有的類,并且刪除了對其他一些類的支持。ATLATL(ActiveXTemplateLibrary),它是一套C++模板庫。優(yōu)點:ATL能夠快速地開發(fā)高效、簡潔的代碼,同時對COM組件的開發(fā)提供最大限度的代碼自動生成以及可視化支持。.NETCompactFramework.NETCompactFramework是.NET戰(zhàn)略的重要部分,是為了在智能設(shè)備和嵌入式系統(tǒng)上運行托管代碼而設(shè)計的。優(yōu)點:簡化了在智能設(shè)備上開發(fā)應(yīng)用程序的過程。.NETCompactFramework兩個組件:公共語言運行時.NETCompactFramework類庫相關(guān)技術(shù)
對大小的影響RuntimeSize(Byte)SizeIncrementWin329,805,2310MFC10,234,415429,184.NETcompactframework11,201,4591,396,228相關(guān)技術(shù)
開發(fā)和執(zhí)行時間Developtimeperformanceruntimeperformance.NETCompactframeworkMFCWin32API相關(guān)技術(shù)
結(jié)論
確定使用何種模式取決于你是否使用了Win32/MFC/C#/VB來開發(fā)程序,以及系統(tǒng)對操作系統(tǒng)鏡像大小的要求,同時還要考慮其他因素,如應(yīng)用程序開發(fā)速度以及系統(tǒng)的可靠性和兼容性等。常規(guī)的應(yīng)用開發(fā)步驟:獲得特定WindowsCE平臺的SDK。在WindowsCE模擬器上編輯和調(diào)試代碼。在實際目標(biāo)平臺上,編譯、運行程序,
如果需要在設(shè)備上調(diào)試程序,可以通過ActiveSync。第一步:獲得SDKSDK是用于在EVC和VisualStudio下開發(fā)應(yīng)用程序的獲得SDK的兩種方法微軟或第三方提供為自己的平臺導(dǎo)出SDKMicrosoft提供:StandardSDK(CommonSDKdev)WindowsMobileSDK(PocketPC…)PB下的SDK向?qū)且粋€工具,用來產(chǎn)生和導(dǎo)出特定平臺的SDK(softwaredevelopmentkit)。被導(dǎo)出的SDK由頭文件、庫文件、運行文件、平臺的外延和幫助文件等組成。應(yīng)用程序開發(fā)人員可以利用這個SDK去關(guān)聯(lián)MicrosoftembeddedVisualC++4.0或MicrosoftVisualStudio.NET,為特定平臺開發(fā)應(yīng)用。
Platform->ConfigureSDKPlatform->BuildSDKPB、SDK和開發(fā)工具間的關(guān)系圖提示:只在StandardSDK不能滿足需求時才使用自己的導(dǎo)出SDK用Platform->Configure
SDK
來配置SDK從控制面板中卸載SDK第二步:在模擬器下編程和調(diào)試與VisualC++6.0andVisualC++.NET類似取決于你的WindowsProgramming知識平臺管理器(PlatformManager)
它是一種通訊機制,用來管理宿主機和目標(biāo)機之間的通訊。平臺管理器允許宿主機上的開發(fā)工具以介質(zhì)無關(guān)的方式下載和連接目標(biāo)機,PB,EVC4.0,和Microsoft.NETCompactFramework使用平臺管理器下載諸如應(yīng)用、MSActiveX控件、實時運行庫和遠程客戶端工具等到目標(biāo)機上。WorkstationCEDeviceTCP/IPKITLActiveSyncPlatformManager遠程工具你可以在宿主機上遠程執(zhí)行位于目標(biāo)機上的各種程序不同的平臺支持不同的遠程工具位于PB和EVC的Tools
菜單下開發(fā)者可以使用相應(yīng)的接口和APIs產(chǎn)生新的遠程工具工具名稱描述RemoteCallProfilerProvidesprofilingandanalysistoolswithinagraphicaluserinterface(GUI)thatenableyoutoidentifyalgorithmicbottlenecksinyourapplications.RemoteFileViewerDisplaysahierarchicalviewofthefilesystemonatargetdevice.RemoteHeapWalkerDisplaysinformationaboutheapidentifiersandflagsforprocessesthatarerunningonatargetdevice.RemoteKernelTrackerDisplaysarepresentationoftheexecutionoftheoperatingsystem(OS)onatargetdevice.RemotePerformanceMonitorMeasurestheperformanceofatargetdevice.RemoteProcessViewerDisplaysalistofprocessesandthreadsrunningonatargetdevice.RemoteRegistryEditorDisplaystheregistryforatargetdeviceandenablesyoutomanagetheregistry.RemoteSpyDisplaysalistofwindowsopenedonatargetdeviceandmessagesgeneratedbythosewindows.RemoteSystemInformationDisplayssystemsettingsandpropertiesforatargetdevice.RemoteZoom-inDisplaysanimagefromthescreenofatargetdevice.第三步:在目標(biāo)機上的運行和調(diào)試根據(jù)目標(biāo)機使用的CPU編譯程序下載這個可執(zhí)行文件到目標(biāo)機上,然后運行該可執(zhí)行文件
如果需要,使用ActiveSync一步一步調(diào)試程序介紹ActiveSync
ActiveSync提供了一種支持,用來同步基于桌面Windows系統(tǒng)和基于CE.NET的便攜式系統(tǒng)間的數(shù)據(jù),它使用時間標(biāo)記(stamps)和用戶參數(shù)來跟蹤兩個系統(tǒng)間的數(shù)據(jù)改變,并傳送相應(yīng)的數(shù)據(jù)使得每個系統(tǒng)上的數(shù)據(jù)都是最新的,過時的或者冗余的數(shù)據(jù)會被刪除。
ActiveSync支持USB,紅外,調(diào)制解調(diào)器,以及Ethernet等多種連接。
ActiveSync不支持CE設(shè)備間的數(shù)據(jù)同步,也不支持CE設(shè)備和服務(wù)器間的數(shù)據(jù)同步。使用ActiveSync調(diào)試安裝ActiveSync(從Microsoft網(wǎng)站獲得)宿主機和目標(biāo)機間提供至少以下一種連接SerialUSBInfraredModemEthernet在EVC下選擇“WindowsCEDevice”inEVC,調(diào)試運行在目標(biāo)機上的程序介紹WindowsMobileWindowsMobile是微軟為PocketPCs和Smartphones開發(fā)的軟件平臺Windows移動延伸到微軟的桌面系統(tǒng)和個人設(shè)備Windows移動家族PocketPCSmartphoneWindows汽車電子SmartphonePocketPC為什么要開發(fā)Windows移動移動設(shè)備的市場越來越大截止2008,將會有超過10億集成設(shè)備和2億的移動手機用戶(IDC,2004).PocketPC已經(jīng)是PDA市場的龍頭,超過PalmSmartphone的快速發(fā)展WindowsMobile的特點Microsoft提供了平臺和SDKOEMs提供硬件開發(fā)人員不能修改Platform特性Windows移動開發(fā)
第一步:下載和安裝SDKsURL:/mobility/downloads/sdks/default.aspxSDK能被用在EVC和VisualStudio.NET2003上Windows移動開發(fā)
第二步:開發(fā)、調(diào)試,運行參考前面的部分你需要知道什么1.只能使用Unicode字符集a.ANSI是一個字節(jié),UNICODE是兩個字節(jié)b.聲明:CHAR->WCHARorTCHARc.字符串函數(shù):strlen()->wcslen()strcmp()->wcscmp()你需要知道什么2.注意內(nèi)存的使用減少靜態(tài)和全局變量的使用注意函數(shù)的遞歸注意圖片、視頻文件的大小檢查動態(tài)內(nèi)存的分配情況概述
仿真器是一個用來模擬支持WindowsCE平臺的硬件行為的工具。使用仿真器,你不需要硬件就可以設(shè)計、建立和測試一個CE平臺,它是用軟件的形式來實現(xiàn)對硬件平臺的模擬。用軟件模擬硬件。在模擬器上映射一個目錄
使用模擬器,你可以將一個宿主機上的目錄映射到仿真器上,就好像這個目錄是安裝在模擬器上的一個驅(qū)動設(shè)備。在模擬器的文件里,這個映射到模擬器上的目錄現(xiàn)在處于根目錄下,名字是StorageCard,模擬器一次只能映射一個目錄。在模擬器上映射一個目錄映射一個目錄到模擬器上在模擬器上,運行一個WindowsCE系統(tǒng),它可以支持宿主機目錄映射到模擬器上在模擬器窗口里,從模擬器菜單中選擇文件夾共享選擇共享文件夾選擇一個目錄共享,然后點OK刪除映射目錄在模擬器窗口里,從模擬器菜單中選擇文件夾共享在共享文件夾中選擇目錄的路徑選擇不共享模擬器的限制—通訊和網(wǎng)絡(luò)模擬器要運行在NAT(NetworkAddressTranslation,網(wǎng)絡(luò)地址轉(zhuǎn)換)連接上撥號連接不支持模擬器不能建立RemoteDesktopProtocol(RDP)不支持:IrDABluetooth802.11模擬器的限制—硬件限制Universalserialbus(USB)設(shè)備PCCard設(shè)備存儲設(shè)備,包括CF卡和硬盤文件系統(tǒng)驅(qū)動,包括fileallocationtable(FAT),compactdisc(CD),anddigitalvideodisc(DVD)driversIEEE1394devices仿真器的限制—多媒體限制不支持對多媒體的硬件加速DirectXWindowsMediaDVD-VideoAPIDigitalrightsmanagement(DRM)VoiceoverIP(VoIP)Multiple-screensupportPlatformBuilder集成開發(fā)環(huán)境PlatformBuilder主界面目錄(Catalog)BSPsCoreOS設(shè)備驅(qū)動器平臺管理器第三方特性
BSP:BoardSupportPackagesCoreOS:ApplicationsandServicesDevelopmentApplications-EndUserCommunicationServicesandNetworkingCoreOSServicesDeviceManagementFileSystemsandDataStoreFontsInternationalInternetClientServicesMultimediaTechnologiesSecurityShellandUserInterfaceVoiceoverIPPhoneServicesWindowsCEErrorReportingDeviceDriversPlatformManager目錄(Catalog)項Feature選項顯示備選feature信息Feature圖標(biāo)圖標(biāo)描述該Feature是BSPCoreOSdesign特性組,在它下面的特性只能從多個中選擇一個RequiredCatalogitem.必選的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 充值方案合同范例
- 出售鐵皮廠房合同范例
- 三手房合同范本
- 買賣合同變更補充合同范例
- 專業(yè)版保管合同范例
- 個人動產(chǎn)贈與合同范例
- 農(nóng)村門面房買賣合同范例
- 倉庫道具租賃合同范例
- 農(nóng)場組裝房屋合同范例
- 個人賣樹合同范例
- 《污水中微塑料的測定 傅里葉變換顯微紅外光譜法》
- 貨物學(xué) 課件1.3貨物的計量
- 2025四川省資陽市人民政府政務(wù)服務(wù)中心招聘4人高頻重點提升(共500題)附帶答案詳解
- 華東師大版初中科學(xué)八年級上冊知識點
- 【MOOC】跨文化思想交流英語-南京理工大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年共青團入團考試測試題庫及答案
- 2024解析:第十二章機械效率-講核心(原卷版)
- 四川省德陽市(2024年-2025年小學(xué)五年級語文)人教版小升初真題(上學(xué)期)試卷及答案
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2024-2030年中國語言培訓(xùn)行業(yè)競爭分析及發(fā)展策略建議報告版
- 女性健康知識講座課件
評論
0/150
提交評論