資料介紹
這是我從1月6日開始主持天極網(wǎng)論壇嵌入式開發(fā)版以來第一次發(fā)表文章,加上以前瑣碎的文章共計30篇。研究的越多就越感覺自己懂的太少,其實在驅(qū)動開發(fā)方面我還是個菜鳥,我是想再次拋磚引玉,讓做驅(qū)動有N年經(jīng)驗的人奉獻一點出來,讓大家減少一些研究驅(qū)動源碼而又缺少注釋所帶來的痛苦。
我想即使讀者看過微軟的關(guān)于驅(qū)動開發(fā)的培訓教材和CE幫助文檔中的驅(qū)動部分,頭腦中仍然一片茫然。要想真正了解驅(qū)動程序必須結(jié)合一些驅(qū)動程序源碼,在此我以串口驅(qū)動程序(COM16550)中初始化過程為線索簡單講一講驅(qū)動開發(fā)的基礎(chǔ)知識。
Windows CE下的串口驅(qū)動程序能夠處理所有I/O行為類似串口的設(shè)備,包括基于16450、16550 UART(通用異步收發(fā)芯片)的設(shè)備和一些采用DMA的設(shè)備,常見的有9針串口、紅外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目錄下,COM_MDD2子目錄包含新的串口驅(qū)動MDD層函數(shù)代碼。COM16550子目錄包含串口驅(qū)動PDD層代碼。SER16550子目錄包含的一系列函數(shù)專用于控制與16550兼容的UART,這樣PDD層的主要工作就是調(diào)用SER16550中的函數(shù)。還有一個ISR16550子目錄包含的是串口驅(qū)動程序?qū)S玫目砂惭bISR(中斷服務例程),而很多硬件設(shè)備驅(qū)動程序采用CE默認的可安裝ISR giisr.dll。一般串口設(shè)備相應的注冊表設(shè)置例子及意義如下:
![Windows CE的驅(qū)動程序開發(fā)解析](/uploads/allimg/171106/2362486-1G106143144338.png)
SysIntr由CE在文件Nkintr.h中預定義,用于唯一標識中斷設(shè)備。OEM可以在文件Oalintr.h中定義自己的SysIntr。常見的預定義SysIntr有SYSINTR_NOP(中斷只由ISR處理,IST不再處理),SYSINTR_RESCHED(重新調(diào)度線程),SYSINTR_DEVICES(由CE預定義的設(shè)備中斷ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定義的。IoBase是串口1的IO地址空間的首地址,IoLen是IO空間的大小。IO地址空間只存在于x86平臺,如果在其它平臺硬件寄存器必須映射到物理地址空間,那子鍵的名稱為MemBase和MemLen。在x86平臺更多硬件的寄存器由于IO空間的局限也映射到物理地址空間。DeviceArrayIndex是設(shè)備的索引,用于區(qū)分同類型的設(shè)備。Prefix是流驅(qū)動程序的前綴,當應用程序調(diào)用CreateFile函數(shù)傳遞COM1:參數(shù)時,文件系統(tǒng)負責與串口驅(qū)動程序通信,串口驅(qū)動程序是在CE啟動時由device.exe加載的。
下面從MDD層函數(shù)COM_Init開始探索串口驅(qū)動的初始化過程。COM_Init是在串口設(shè)備被檢測后由設(shè)備管理器device.exe調(diào)用的,主要的作用是初始化設(shè)備,它的唯一參數(shù)Identifier是由device.exe傳遞的,其類型是一個字符串指針,字符串的內(nèi)容是HLMDriversActivexx,xx是一個十進制數(shù)(device.exe會跟蹤系統(tǒng)中每個驅(qū)動程序,把加載的驅(qū)動程序記錄在Active鍵下)。
我想即使讀者看過微軟的關(guān)于驅(qū)動開發(fā)的培訓教材和CE幫助文檔中的驅(qū)動部分,頭腦中仍然一片茫然。要想真正了解驅(qū)動程序必須結(jié)合一些驅(qū)動程序源碼,在此我以串口驅(qū)動程序(COM16550)中初始化過程為線索簡單講一講驅(qū)動開發(fā)的基礎(chǔ)知識。
Windows CE下的串口驅(qū)動程序能夠處理所有I/O行為類似串口的設(shè)備,包括基于16450、16550 UART(通用異步收發(fā)芯片)的設(shè)備和一些采用DMA的設(shè)備,常見的有9針串口、紅外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目錄下,COM_MDD2子目錄包含新的串口驅(qū)動MDD層函數(shù)代碼。COM16550子目錄包含串口驅(qū)動PDD層代碼。SER16550子目錄包含的一系列函數(shù)專用于控制與16550兼容的UART,這樣PDD層的主要工作就是調(diào)用SER16550中的函數(shù)。還有一個ISR16550子目錄包含的是串口驅(qū)動程序?qū)S玫目砂惭bISR(中斷服務例程),而很多硬件設(shè)備驅(qū)動程序采用CE默認的可安裝ISR giisr.dll。一般串口設(shè)備相應的注冊表設(shè)置例子及意義如下:
![Windows CE的驅(qū)動程序開發(fā)解析](/uploads/allimg/171106/2362486-1G106143144338.png)
SysIntr由CE在文件Nkintr.h中預定義,用于唯一標識中斷設(shè)備。OEM可以在文件Oalintr.h中定義自己的SysIntr。常見的預定義SysIntr有SYSINTR_NOP(中斷只由ISR處理,IST不再處理),SYSINTR_RESCHED(重新調(diào)度線程),SYSINTR_DEVICES(由CE預定義的設(shè)備中斷ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定義的。IoBase是串口1的IO地址空間的首地址,IoLen是IO空間的大小。IO地址空間只存在于x86平臺,如果在其它平臺硬件寄存器必須映射到物理地址空間,那子鍵的名稱為MemBase和MemLen。在x86平臺更多硬件的寄存器由于IO空間的局限也映射到物理地址空間。DeviceArrayIndex是設(shè)備的索引,用于區(qū)分同類型的設(shè)備。Prefix是流驅(qū)動程序的前綴,當應用程序調(diào)用CreateFile函數(shù)傳遞COM1:參數(shù)時,文件系統(tǒng)負責與串口驅(qū)動程序通信,串口驅(qū)動程序是在CE啟動時由device.exe加載的。
下面從MDD層函數(shù)COM_Init開始探索串口驅(qū)動的初始化過程。COM_Init是在串口設(shè)備被檢測后由設(shè)備管理器device.exe調(diào)用的,主要的作用是初始化設(shè)備,它的唯一參數(shù)Identifier是由device.exe傳遞的,其類型是一個字符串指針,字符串的內(nèi)容是HLMDriversActivexx,xx是一個十進制數(shù)(device.exe會跟蹤系統(tǒng)中每個驅(qū)動程序,把加載的驅(qū)動程序記錄在Active鍵下)。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于WinDriver for CE的視頻采集驅(qū)動程序設(shè)計 0次下載
- 基于Windows CE.NET的設(shè)備驅(qū)動程序開發(fā) 0次下載
- 基于Windows CE的USB設(shè)備驅(qū)動程序設(shè)計 5次下載
- Windows CE在指紋傳感器設(shè)備驅(qū)動程序開發(fā)中的應用 0次下載
- Windows CE驅(qū)動程序開發(fā) 0次下載
- Windows CE設(shè)備驅(qū)動程序開發(fā) 0次下載
- Windows CENET環(huán)境下的流接口驅(qū)動程序開發(fā) 3次下載
- Windows CENET中斷架構(gòu)分析和高速AD驅(qū)動程序的開發(fā) 0次下載
- Windows CE平臺上開發(fā)采集板驅(qū)動程序 0次下載
- Windows CE下GPIO驅(qū)動程序的設(shè)計與應用
- Windows CE下通用串行總線(USB)驅(qū)動程序開發(fā)
- 基于Windows CE的USB設(shè)備驅(qū)動程序設(shè)計
- Windows CE 下通用串行總線(USB)驅(qū)動程序開發(fā)
- 大地電磁儀的Windows CE驅(qū)動程序設(shè)計
- Windows CE下的串口驅(qū)動設(shè)計
- 怎么編寫Framebuffer驅(qū)動程序 589次閱讀
- Windows文件系統(tǒng)過濾驅(qū)動程序介紹 1551次閱讀
- HDF驅(qū)動框架中USB DDK的解析與開發(fā)指導 2259次閱讀
- ProfiNet輸入/輸出端的驅(qū)動程序解析 3579次閱讀
- 基于S3C2410處理器對Windows CE 5.0操作系統(tǒng)實現(xiàn)BSP移植 1069次閱讀
- USB驅(qū)動開發(fā)的步驟及方法解析 1.1w次閱讀
- 淺談電腦驅(qū)動程序的工作原理 詳解電腦驅(qū)動程序意義 3w次閱讀
- 嵌入式系統(tǒng)開發(fā)中驅(qū)動程序設(shè)計的5個方法盤點 3244次閱讀
- 基于Linux2.6.30開發(fā)DS18B20的驅(qū)動程序的類型和文件操作接口函數(shù)詳解 1498次閱讀
- 8255A驅(qū)動程序 3429次閱讀
- 8155驅(qū)動程序 3284次閱讀
- Xilinx設(shè)備的驅(qū)動程序 8200次閱讀
- 監(jiān)控軟件設(shè)備驅(qū)動程序的編程與實現(xiàn) 4327次閱讀
- 嵌入式Win CE中CAN總線控制器的驅(qū)動設(shè)計與實現(xiàn) 1872次閱讀
- PCI驅(qū)動程序開發(fā)實例 6831次閱讀
下載排行
本周
- 1IP6823 支持 qi 認證的無線充電發(fā)射控制 SOC
- 1.01 MB | 1次下載 | 免費
- 2IP6824? 全集成QI?無線充電發(fā)射控制SOC
- 1.22 MB | 1次下載 | 免費
- 3GD32G5x3 FFT模塊用戶指南
- 920.15KB | 次下載 | 免費
- 4GD32H73x/H75x的器件限制
- 774.05KB | 次下載 | 免費
- 5PDTA115EU配備PNP電阻的晶體管規(guī)格書
- 189.74KB | 次下載 | 免費
- 6帶注入電流控制的1.8V通用SP8T-Z和2個SP4T-Z模擬開關(guān)
- 847.62KB | 次下載 | 免費
- 7PESD18VY1BBIF保護二極管規(guī)格書
- 4.56MB | 次下載 | 免費
- 8視頻處理器晶振應用方案
- 515.02 KB | 次下載 | 免費
本月
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 41次下載 | 1 積分
- 3PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 4PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 5dsPIC33EDV64MC205電機控制開發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費
- 6STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 7AN-1267: 使用ADSP-CM408F ADC控制器的電機控制反饋采樣時序
- 1.41MB | 5次下載 | 免費
- 8LP9962集成 PFC 和 和的 高壓半橋驅(qū)動的 LLC 諧振
- 3.30 MB | 4次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935124次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73813次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論