在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Windows CE操作系統實現串口應用程序開發和驅動設計

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:李維 , 謝云 ? 2020-09-10 17:20 ? 次閱讀

引言

Windows CE是一個開放的、可升級、可裁減的32位實時嵌入式操作系統,具有可靠性好、實時性高、內核體積小的特點,廣泛應用于工業控制信息家電、移動通信汽車電子、個人電子消費品等領域。最新版本Windows Em-bedded CE 6.0于2006年11月發布,其特點有:最大進程數量到32K,且每個進程有最大2 GB的虛擬內存空間;將關鍵的驅動程序、文件系統和圖形界面管理器移到了內核中,大大減少了CPU在內核態和用戶態間切換造成的性能損失等。 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的串口驅動模型

基于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所列的一些重要文件。

基于Windows CE操作系統實現串口應用程序開發和驅動設計

如圖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下的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開發板上實驗成功。在串口驅動開發中所用的思路,對其他類似的驅動設計有較高的參考價值。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3584

    瀏覽量

    89467
  • 操作系統
    +關注

    關注

    37

    文章

    6905

    瀏覽量

    123855
  • 應用程序
    +關注

    關注

    38

    文章

    3299

    瀏覽量

    57982
收藏 人收藏

    評論

    相關推薦

    嵌入式操作系統Windows CE研究

    Windows CE 的組件,用戶可以根據自己的系統的需要進行定制,選擇需要的組件,去掉不必要的組件,這樣可以減小內存需求,使系統性能達到最佳。應用
    發表于 09-24 16:26

    怎么在不同的硬件設備上實現Windows CE驅動開發

    起來,使得操作系統能夠識別設備,并為應用程序提供相應的服務。要想真正了解驅動程序必須結合一些驅動程序的實際開發。本文以基于ARM9核心硬件平
    發表于 03-17 06:55

    Windows CE下的串口驅動設計

    驅動程序串口驅動開發和設計是構建嵌入式系統的重要組成部分。該文介紹了Windows
    發表于 04-13 09:04 ?22次下載

    Windows CE遠程應用程序接口(Remote API)

    主要介紹如何利用嵌入式操作系統Windows CE遠程應用程序接口RAPI實現開發應用,同時以訪
    發表于 08-06 08:13 ?6次下載

    嵌入式操作系統Windows CE的研究

    Windows CE是適合嵌入式應用的操作系統,介紹了Windows CE嵌入式系統
    發表于 08-15 11:19 ?15次下載

    Windows CE.Net下基于流驅動的AD驅動設計與實現

    驅動程序是連接操作系統和硬件的橋梁。文中作者主要討論在Windows CE.Net 操作系統下,如何設計
    發表于 08-25 09:18 ?19次下載

    什么是Windows CE,LynxOS是什么操作系統

    什么是Windows CE   Microsoft Windows CE是從整體上為有限資源的平臺設計的多線程、完整優先權、多任務的
    發表于 06-17 00:36 ?1899次閱讀

    Windows CE下事件驅動的串行通信方式

    Windows CE 是目前應用較廣的嵌入式操作系統, 而Windows 程序的基本執行方式即事件驅動
    發表于 06-27 15:52 ?43次下載

    Windows CE平臺上開發采集板驅動程序

    應用的艾訊AX10410A型高速數據采集板為例介紹了Windows CE 操作系統的設備驅動程序開發過程。經過測試效果良好。
    發表于 04-18 10:02 ?0次下載

    Windows CE驅動程序開發

    不同的嵌入式系統硬件平臺,往往有其獨有或特殊的設備,而這些設備的Windows CE驅動程序設計問題是開發人員經常遇到的。本文著重闡述了
    發表于 04-18 10:13 ?0次下載

    Windows CE設備驅動程序開發

    本文介紹了 Windows CE 體系結構和開發 wince 設備驅動程序的過程,闡述了設備驅動程序模型、設備
    發表于 04-18 10:13 ?0次下載

    Windows CE在指紋傳感器設備驅動程序開發中的應用

    本文介紹了Windows CE操作系統的設備驅動結構和驅動實現方式,以一個嵌入式指紋識別
    發表于 04-18 10:27 ?0次下載

    Windows CE實現串口通信

    文章首先簡單介紹了在WIndows CE下設備驅動程序的訪問 方式, 然后詳細介紹了在WIndows CE
    發表于 04-18 14:12 ?6次下載

    Windows CE操作系統在工業控制領域的應用

    Windows CE是一個搶先式多任務并具有強大通信能力的嵌入式操作系統。它是一個全新的、可移植的、實時的、模塊化的操作系統,具有流行的微軟程序
    的頭像 發表于 10-17 09:21 ?7381次閱讀

    基于Windows CE操作系統實現OAL層的功能和結構應用設計

    重新寫的,并不是任何一款桌面版Windows的精簡版本。 Windows CE是一種支持多種CPU架構的操作系統,這其中包括ARM、x86、MIPS和SHx,極大地減輕了0EM
    的頭像 發表于 10-04 13:30 ?2064次閱讀
    基于<b class='flag-5'>Windows</b> <b class='flag-5'>CE</b><b class='flag-5'>操作系統</b><b class='flag-5'>實現</b>OAL層的功能和結構應用設計
    主站蜘蛛池模板: 中文字幕一区二区三区乱码aⅴ | 日本19xxxxxxxxx69| 色偷偷.com | 日本三级高清 | 性夜影院爽黄e爽在线观看 羞羞色院91精品网站 | 狠狠操人人| 网址色 | 黄色一级日本 | 亚洲视频四区 | 四虎影院在线播放 | 久久黄色一级片 | 日本三级香港三级人妇网站 | 黑色丝袜在丝袜福利国产 | 亚洲人成网站色7777 | 午夜影院操| 又黄又粗暴的120秒免费gif视频 | ts 人妖 另类 在线 | 日本久久久久久久 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 一级在线免费视频 | 久久综合久久久久 | 亚洲国产精品嫩草影院 | bt 电影天堂 | 色咯咯| 日本xxxxbbbb| 网www天堂资源在线 网红和老师啪啪对白清晰 网络色综合久久 | 欧美一级视频免费 | 色视频在线免费观看 | 香蕉久久夜色精品国产小说 | 一区不卡在线观看 | 亚洲va久久久噜噜噜久久男同 | 五月激情啪啪 | 国产真实乱xxxav | 国产高清精品自在久久 | 狠狠色噜噜狠狠狠狠2021天天 | 拍拍拍拍拍拍拍无挡大全免费 | 九九热在线视频观看这里只有精品 | 国产成人三级经典中文 | 免费午夜视频在线观看 | 97一本大道波多野吉衣 | aaa在线|