<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于WinCE6.0的 LPC3250串口驅動(dòng)程序開(kāi)發(fā)

基于WinCE6.0的 LPC3250串口驅動(dòng)程序開(kāi)發(fā)

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

引 言
Windows CE是一個(gè)開(kāi)放的、可升級、可裁減的32位實(shí)時(shí)嵌入式操作系統,具有可靠性好、實(shí)時(shí)性高、內核體積小的特點(diǎn),廣泛應用于工業(yè)控制、信息家電、移動(dòng)通信、汽車(chē)電子、個(gè)人電子消費品等領(lǐng)域。最新版本W(wǎng)indows Em-bedded CE 6.0于2006年11月發(fā)布,其特點(diǎn)有:最大進(jìn)程數量到32K,且每個(gè)進(jìn)程有最大2 GB的虛擬內存空間;將關(guān)鍵的驅動(dòng)程序、文件系統和圖形界面管理器移到了內核中,大大減少了CPU在內核態(tài)和用戶(hù)態(tài)間切換造成的性能損失等。 是NXP半導體公司(由Philips公司成立)推出的帶有矢量浮點(diǎn)協(xié)處理器的ARM926EJ-SCPU內核的微控制器。它具有豐富的外圍接口,包括7個(gè)UART,其中4個(gè)是標準UART,另外3個(gè)是高速UART,都帶有64字節的接收和發(fā)送FIFO,最高可支持的速率達921 600 b/s。為了實(shí)現低功耗,采用NXP半導體先進(jìn)的開(kāi)發(fā)技術(shù)來(lái)優(yōu)化內在功率,并使用增強型的軟件控制結構使基于功率管理的應用得到優(yōu)化。在同時(shí)要求高性能和低功耗的嵌入式應用中,運行Win-dows CE的平臺將會(huì )有很好的市場(chǎng)前景,對于最常用到的串口的驅動(dòng)開(kāi)發(fā)顯得尤為重要。

本文引用地址:http://dyxdggzs.com/article/202649.htm

1 WindOWS CE的模型
基于Windows CE有兩種驅動(dòng)程序模型:本機設備驅動(dòng)程序和流接口驅動(dòng)程序。就屬于分層的流接口驅動(dòng)程序。分層驅動(dòng)程序將設備的驅動(dòng)程序分為兩層:平臺相關(guān)驅動(dòng) PDD(Platform Dependence Driver)層和模型設備驅動(dòng)MDD(Model Device Driver)層。PDD層由特定于給定硬件設備或平臺的代碼組成,很多時(shí)候用戶(hù)需要根據具體平臺修改;MDD層包含平臺無(wú)關(guān)的代碼,它通過(guò)實(shí)現一些操作系統預先定義的接口來(lái)實(shí)現某一類(lèi)設備的通用功能,通常由微軟提供。操作系統與MDD層之間通過(guò)DDI(設備驅動(dòng)接口)進(jìn)行交互。MDD層也實(shí)現了中斷處理線(xiàn)程IST,并定義一些與PDD層的接口函數,這些接口函數稱(chēng)為DDSI(設備驅動(dòng)服務(wù)接口)。
用%_WINCEROOT%來(lái)表示W(wǎng)indows CE的安裝根目錄,符合‘550工業(yè)規范的源碼主要位于\%_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\SERIAL下,主要看表1所列的一些重要文件。

如圖1所示,串口應用程序通過(guò)設備管理器調用mdd.c中MDD層的標準流設備驅動(dòng)接口COM_XXX,在COM_XXX中通過(guò)結構體 HW_INDEP_INFO中HWOBJ結構體調用串口硬件操作函數HWxxx;然后在cserpdd.cpp中GetSeri-alObject函數通過(guò)HW_VTBL類(lèi)型數組IoVTb1將HWxxx映射為Serxxx系列函數,Serxxx系列函數則調用CSerialPDD類(lèi)中的成員函數(其中的純虛函數由CserialP-DD的繼承類(lèi)CP-dd16550實(shí)現,真正與物理底層操作的是CPdd16550的數據成員CReg16550中的 Write_XXX、Read_XXX函數);最終通過(guò)調用WRITE_PORT_UCHAR和READ_PORT_UCHAR系統函數來(lái)實(shí)現。

2 .0下的LPC3250串口驅動(dòng)程序開(kāi)發(fā)
Windows CE的串口驅動(dòng)程序開(kāi)發(fā)中最重要的是兩點(diǎn):配置串口相關(guān)的寄存器和處理中斷。配置寄存器,包括實(shí)現與物理底層操作的函數,將寄存器地址映射到內核進(jìn)程的虛擬地址,在串口操作的不同階段配置好各種寄存器;處理中斷,包括將物理中斷映射為系統中斷,將中斷與事件綁定,中斷發(fā)生時(shí)進(jìn)行相應的中斷處理。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: WinCE6 3250 LPC 串口驅動(dòng)

評論


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