《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于WinCE6.0的LPC3250串口驅動程序開發
基于WinCE6.0的LPC3250串口驅動程序開發
摘要: 本文介紹了WinCE6.0下的串口驅動模型,結合LPC3250的硬件情況,詳細說明了串口驅動開發過程,包括配置串口相關的寄存器和處理中斷中重要函數的實現,以及注冊表和Source文件編寫等。本驅動程序在廣州致遠電子有限公司的SmartARM3250開發板上實驗成功。在串口驅動開發中所用的思路,對其他類似的驅動設計有較高的參考價值。
Abstract:
Key words :

引 言

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

1 WindOWS CE的串口驅動" title="串口驅動">串口驅動模型

基于Windows CE有兩種驅動程序模型:本機設備驅動程序和流接口驅動程序。串口驅動就屬于分層的流接口驅動程序。分層驅動程序將設備的驅動程序分為兩層:平臺相關驅動 PDD(Platform Dependence Driver)層和模型設備驅動MDD(Model Device Driver)層。PDD層由特定于給定硬件設備或平臺的代碼組成,很多時候用戶需要根據具體平臺修改;MDD層包含平臺無關的代碼,它通過實現一些操作系統預先定義的接口來實現某一類設備的通用功能,通常由微軟提供。操作系統與MDD層之間通過DDI(設備驅動接口)進行交互。MDD層也實現了中斷處理線程IST,并定義一些與PDD層的接口函數,這些接口函數稱為DDSI(設備驅動服務接口)。

用%_WinCEROOT%來表示Windows CE的安裝根目錄,符合‘550工業規范的串口驅動源碼主要位于\%_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\SERIAL下,主要看表1所列的一些重要文件。

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


2 WinCE6.0" title="WinCE6.0">WinCE6.0下的LPC3250串口驅動程序開發

Windows CE的串口驅動程序開發中最重要的是兩點:配置串口相關的寄存器和處理中斷。配置寄存器,包括實現與物理底層操作的函數,將寄存器地址映射到內核進程的虛擬地址,在串口操作的不同階段配置好各種寄存器;處理中斷,包括將物理中斷映射為系統中斷,將中斷與事件綁定,中斷發生時進行相應的中斷處理。

LPC3250串口與‘550工業規范的串口有差異,為了保證程序的通用性和盡量減少代碼量,在實現LPC3250串口驅動程序時,需要繼承 CPdd16550和CReg16550類,根據實際的硬件特性實現它們的純虛函數并擴展其虛函數的功能,配置硬件相關的寄存器和修改相關代碼。首先實現 CReg16550的繼承類CRegLPC32xx,主要實現與物理底層操作的函數Write_xxx和Read_xxx,對串口寄存器進行讀寫操作。這里要注意的是LPC3250串口寄存器地址間隔是32位,而不是標準的8位;CPdd16550的繼承類Clpc32xxPdd16550UART本質還是個抽象類,同時為標準串口和高速串口服務,要重新實現Init、GetDivisorO-{Rate、GetWaterMark、 MapHardware、CreateHardwareAc-cess、CreateSerialObject、DeleteSerialObject等函數,其他的函數可以直接調用CPdd16550的成員函數,只需要修改相關串口寄存器的宏定義。


在Clpc32xxPdd16550UART的Init函數中,GetIsrInfo以串口的Active注冊表鍵為依據查出物理中斷號,并保存在 DDKISRINFO結構體的dwlrq成員中。KernelloCon-trol函數將物理中斷號轉換為邏輯中斷號,符合條件就將邏輯中斷號回寫到注冊表中。相關代碼如下:

接著調用父類CPdd16550的Init函數,創建中斷服務線程(IST)事件,并通過InterruptInitialize函數將事件與邏輯中斷號關聯起來,最后調用CreateHardwareAccess和MapHardware函數將串口基地址及相關寄存器片內地址映射到內核進程的虛擬地址。
在MapHardware中,用GetWindowInfo根據串口的Active注冊表鍵獲得串口的全部I/O端口和內存地址信息,然后用 MmMapIoSpace函數將串口物理地址和相關控制寄存器地址轉換成內核進程的虛擬地址,以便后面對寄存器進行操作,部分代碼如下:

CreateHardwareAccess函數根據MapHardware得到的m_pBaseAddress,構造一個CRegLPC32xx類實例,然后調用CRegLPC32xx類的Init函數確保串口控制器硬件進入穩定的工作狀態。

根據LPC3250的數據手冊,設置標準UART的波特率需要設置小數波特率預分頻器和UART波特率發生器。當不用小數波特率預分頻器(即X=Y=1) 時,將標準UART的{Baudrate,DLM:DLL}的值定義一個數組BaudPairs[]。GetDivisorOfRate根據這個數組得到分頻系數,然后調用父類的成員函數SetBaudRate便可設置波特率。高速UART的波特率類似,只是波特率計算公式和分頻系數與標準UART不同。

用GetWaterMark得到接收器FIFO的觸發深度,分別為16、32、48和60位,然后在CPdd16550的InitReceive中設置FIFO控制寄存器,默認的FIFO觸發深度是32位。

Clpc32xxPdd16550UART是個抽象類,實現通用功能,具體的要分別由繼承的標準串口Clpc32xxPdd16550Stan- dardUART類和高速串口Clpc32xxPdd16550HighUART類實現。在各自初始化時,主要是配置各種寄存器,實現具體硬件差異化,包括:配置UART時鐘控制寄存器、時鐘模式寄存器和時鐘選擇寄存器,分別使能UART時鐘、設置自動時鐘模式、選擇相應的時鐘源作為分頻器的輸入時鐘;禁止UART3 Modem和UART6 IrDA功能;禁止UART的回送功能。

特別要強調的是關于中斷的處理,串口驅動中斷可以用動態映射,也可以用靜態映射。在OEMInter-ruptHandler、 Clpc32xxPdd16550UART::Init、CPdd16550::Init、CPdd16550::ThreadRun等處加入調試打印信息,可以較快地找到問題所在,確定硬件中斷是否映射為系統中斷、系統中斷與中斷事件是否綁定、中斷產生時是否進入相應的處理程序。中斷處理好了,串口驅動就基本完成了。

上述工作結束后,就要添加串口的注冊表。以串口3為例,主要是設置動態鏈接庫DLL、設備基地址、中斷號、前綴名、被加載的順序等。根據注冊表的 DeviceArrayIn-dex、CreateSerialObject就可以構造標準串口或高速串口類實例了, DeleteSerialObject在退出驅動時刪除實例。具體代碼如下:





在廣州致遠電子有限公司的SmartARM3250開發板上,通過WinCE的串口應用程序與上位PC機進行發送接收實驗,本驅動已經實現標準串口最高460 800 b/s、高速串口最高921 600 b/s的穩定傳輸。

結 語

本文介紹了WinCE6.0下的串口驅動模型,結合LPC3250的硬件情況,詳細說明了串口驅動開發過程,包括配置串口相關的寄存器和處理中斷中重要函數的實現,以及注冊表和Source文件編寫等。本驅動程序在廣州致遠電子有限公司的SmartARM3250開發板上實驗成功。在串口驅動開發中所用的思路,對其他類似的驅動設計有較高的參考價值。 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          在线观看国产精品网站| 韩日精品中文字幕| 国产精品美女视频网站| 亚洲精品网址在线观看| 国产欧美1区2区3区| 欧美一区二区三区四区在线观看地址| 国产欧美日韩精品在线| 国产欧美1区2区3区| 性欧美大战久久久久久久免费观看| 亚洲精品中文在线| 欧美v国产在线一区二区三区| 麻豆精品传媒视频| 亚洲人体一区| 国产日韩欧美成人| 欧美日韩在线综合| 亚洲欧洲精品一区二区| 亚洲国产一二三| 亚洲欧美国产精品va在线观看| 国产亚洲精品aa午夜观看| 亚洲精品一区二区三区在线观看| 亚洲日本成人在线观看| 亚洲九九九在线观看| 激情久久一区| 久久综合九色综合网站| 亚洲无线观看| 亚洲欧美精品一区| 亚洲一区二区三区涩| 国产精品99久久久久久www| 精品二区久久| 亚洲高清免费视频| 午夜在线播放视频欧美| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久一区二区三区四区| 国产亚洲视频在线| 欧美多人爱爱视频网站| 国产主播精品| 欧美主播一区二区三区| 久久亚洲影院| 欧美视频在线观看免费网址| 亚洲久久一区二区| 国产伦精品一区二区| 久久久久国内| 艳妇臀荡乳欲伦亚洲一区| 国产精品美女www爽爽爽视频| 欧美伦理a级免费电影| 国产日韩欧美精品| 好看不卡的中文字幕| 久久国产精品高清| 欧美一级在线亚洲天堂| 韩国av一区二区三区在线观看| 欧美黑人多人双交| 国产视频精品va久久久久久| 欧美香蕉视频| 日韩视频不卡中文| 亚洲欧美日产图| 免费不卡视频| 亚洲神马久久| 欧美日韩网站| 欧美亚洲综合久久| 国产欧美日本一区二区三区| 午夜免费电影一区在线观看| 欧美一乱一性一交一视频| 久久天天躁狠狠躁夜夜av| 国产目拍亚洲精品99久久精品| 亚洲女人小视频在线观看| 欧美在线视频在线播放完整版免费观看| 国产精品久久久久久av福利软件| 国产日韩欧美在线播放不卡| 欧美一级在线亚洲天堂| 亚洲乱码国产乱码精品精| 黑人极品videos精品欧美裸| 亚洲精品在线免费观看视频| 欧美亚洲三区| 久久久蜜桃一区二区人| 亚洲图片欧美午夜| 欧美一区二区三区免费视频| 国产欧美视频一区二区| 国产精品一二三四| 另类成人小视频在线| 国产精品久久77777| 亚洲女性喷水在线观看一区| 欧美日韩国产综合视频在线观看中文| 欧美日韩综合在线免费观看| 亚洲免费观看视频| 悠悠资源网亚洲青| 国产精品久久二区| 午夜精品久久久久久99热软件| 亚洲伦理自拍| 免费日韩av电影| 国产午夜精品理论片a级探花| 99re这里只有精品6| 欧美一区二区三区在线看| 亚洲二区视频在线| 一二三区精品福利视频| 亚洲免费影视| 欧美日产一区二区三区在线观看| 欧美亚洲不卡| 欧美一区1区三区3区公司| 久久视频在线看| 国内成人精品一区| 精品96久久久久久中文字幕无| 在线国产精品一区| 国产精品成人免费视频| 国产一区二区三区久久久| 亚洲一区二区在线免费观看视频| 欧美高潮视频| 久久久999国产| 国产精品久久久久高潮| 欧美日本二区| 日韩视频免费在线| 欧美成人资源| 亚洲国产一区二区在线| 欧美一区二区视频网站| 欧美日韩另类在线| 美国成人毛片| 国产精品久久久久国产a级| 久久亚洲图片| 黑人中文字幕一区二区三区| 国产日韩欧美一区二区三区在线观看| 久久精品国产69国产精品亚洲| 欧美激情免费观看| 国产欧美日韩精品在线| 欧美三区免费完整视频在线观看| 国产日本欧美一区二区三区在线| 黄色一区二区三区四区| 久久激情久久| 精品1区2区3区4区| 欧美另类一区| 亚洲男人第一网站| 亚洲黄色在线看| 国产精品区二区三区日本| 国产毛片一区| 亚洲一区尤物| 欧美色123| 午夜久久久久久久久久一区二区| 欧美日韩a区| 亚洲激情欧美激情| 国产一区二区三区在线观看精品| 欧美天堂在线观看| 麻豆精品传媒视频| 欧美高清一区二区| 99re热这里只有精品免费视频| 国产偷国产偷精品高清尤物| 国产无遮挡一区二区三区毛片日本| 欧美日韩亚洲综合一区| 一区二区三区无毛| 欧美日韩另类字幕中文| 一色屋精品视频在线观看网站| 国产欧美成人| 亚洲精品少妇30p| 欧美在线观看www| 亚洲人成在线观看网站高清| 亚洲午夜久久久久久尤物| 欧美精品七区| 亚洲自拍都市欧美小说| 免费在线观看日韩欧美| 国产精品久久久久永久免费观看| 国产精品一区二区在线| 欧美在线播放一区二区| 欧美高清视频www夜色资源网| 激情综合在线| 久久天堂国产精品| 女主播福利一区| 亚洲国产va精品久久久不卡综合| 欧美va天堂va视频va在线| 一本色道久久综合精品竹菊| 欧美精品日韩精品| 欧美一区激情视频在线观看| 国产精品久久二区二区| 国产精品乱码一区二区三区| 亚洲欧洲精品一区二区三区不卡| 这里只有精品电影| 欧美v国产在线一区二区三区| 午夜免费在线观看精品视频| 亚洲欧洲精品一区二区三区不卡| 国产精品免费久久久久久| 亚洲美女在线一区| 亚洲视频精品| 久久综合色8888| 一区福利视频| 国产日韩综合| 欧美日韩在线精品一区二区三区| 一本色道久久综合亚洲精品不卡| 国产亚洲成人一区| 国产综合久久久久影院| 欧美偷拍另类| 亚洲日本精品国产第一区| 一区在线播放视频| 久久精品青青大伊人av| 欧美日韩国产麻豆| 欧美激情欧美狂野欧美精品| 在线免费日韩片| 亚洲美女在线观看| 国产欧美一区二区在线观看| 亚洲日本免费| 亚洲欧美另类久久久精品2019| 亚洲第一福利在线观看| 亚洲精美视频| 正在播放亚洲一区| 午夜欧美理论片| 免费中文字幕日韩欧美| 亚洲深夜av| 久久久久九九视频| 亚洲欧美在线另类| 老牛国产精品一区的观看方式| 欧美私人啪啪vps| 欧美日韩精品一区视频| 国产欧美一区二区三区久久| 亚洲激情六月丁香| 免费久久99精品国产| 欧美日韩日日骚| 国产乱子伦一区二区三区国色天香| 亚洲少妇一区| 裸体丰满少妇做受久久99精品| 99香蕉国产精品偷在线观看| 国内精品写真在线观看| 一区二区三区在线视频观看| 欧美在线一二三| 国产精品美女久久久浪潮软件| 欧美亚州韩日在线看免费版国语版| 久久久久欧美精品| 欧美国产三区| 亚洲视频999| 久久国产日韩欧美| 欧美在线视频二区| 欧美激情第3页| 狠狠色综合色综合网络| 国产欧美日韩在线观看| 欧美国产三区| 国产女主播一区二区三区| 欧美大尺度在线| 亚洲第一网站| 亚洲桃色在线一区| 欧美成人自拍视频| 国产精品久久国产精麻豆99网站| 亚洲欧美日韩国产| 欧美日本一区二区高清播放视频| 欧美成人精品影院| 在线日韩日本国产亚洲| 国产精品一区二区女厕厕| 国产视频亚洲| 亚洲美女中文字幕| 久久嫩草精品久久久久| 久久一区欧美| 久热精品在线| 午夜久久久久| 久久中文欧美| 欧美一级久久久久久久大片| 一本一本久久| 久久免费黄色| 久久久91精品国产一区二区三区| 牛人盗摄一区二区三区视频| 欧美一区二区三区成人| 久久久久久久网站| 一区二区高清| 欧美日韩免费观看一区三区| 国产丝袜一区二区| 国产一区二区精品| 国产精品人人做人人爽| 亚洲一区二区三区影院| 久久久www免费人成黑人精品| 欧美网站大全在线观看| 一区二区三区欧美成人| 亚洲在线视频网站| 欧美久久久久久蜜桃| 午夜在线观看免费一区| 亚洲欧美一区二区三区在线| 欧美精品播放| 亚洲一二三四久久| 欧美国产综合视频| 欧美精品尤物在线| 久久综合久久久| 国产精品乱码人人做人人爱| 在线国产精品播放| 午夜精品久久久久久99热| 99精品欧美一区二区三区| 一区二区高清视频在线观看| 亚洲精品自在久久| 国产精品视频精品视频| 亚洲国产精品一区制服丝袜| 国产精品免费看久久久香蕉| 久久黄色影院| 亚洲大胆人体在线| 欧美精品在欧美一区二区少妇| 一区二区三区视频免费在线观看| 国产精品久久久久久久久免费樱桃| 久久国产精品黑丝| 99国产精品久久久久久久成人热| 免费日韩精品中文字幕视频在线| 欧美日韩一区二区三区在线观看免| 久久夜色精品亚洲噜噜国产mv| 亚洲一二三区在线| 国产精品久久久久久久一区探花| 久久精品视频在线看| 亚洲美女精品一区| 欧美日韩精品一区二区三区四区| 亚洲欧美激情一区| 91久久香蕉国产日韩欧美9色| 亚洲高清资源综合久久精品| 影音先锋中文字幕一区| 国产一区二区三区免费观看| 国产精品一二一区| 鲁鲁狠狠狠7777一区二区| 亚洲一区不卡| 日韩视频中文| 香蕉av福利精品导航| 小处雏高清一区二区三区| 亚洲级视频在线观看免费1级| 国语自产精品视频在线看抢先版结局| 亚洲欧美国产日韩中文字幕| 西西裸体人体做爰大胆久久久| 国产精品乱码妇女bbbb| 亚洲综合激情| 欧美日韩视频在线一区二区观看视频| 欧美黄色aa电影| 亚洲精品久久久久久下一站| 国产婷婷色综合av蜜臀av| 亚洲欧洲一区二区三区在线观看| 欧美高清在线精品一区| 国产视频在线一区二区| 欧美精品一区三区在线观看| 免费成人高清视频| 欧美黄色片免费观看| 久久偷窥视频| 亚洲福利视频一区二区| 你懂的亚洲视频| 欧美大片一区二区三区| 久久精品国产久精国产爱|