資料介紹
這是我從1月6日開始主持天極網(wǎng)論壇嵌入式開發(fā)版以來第一次發(fā)表文章,加上以前瑣碎的文章共計(jì)30篇。研究的越多就越感覺自己懂的太少,其實(shí)在驅(qū)動(dòng)開發(fā)方面我還是個(gè)菜鳥,我是想再次拋磚引玉,讓做驅(qū)動(dòng)有N年經(jīng)驗(yàn)的人奉獻(xiàn)一點(diǎn)出來,讓大家減少一些研究驅(qū)動(dòng)源碼而又缺少注釋所帶來的痛苦。
我想即使讀者看過微軟的關(guān)于驅(qū)動(dòng)開發(fā)的培訓(xùn)教材和CE幫助文檔中的驅(qū)動(dòng)部分,頭腦中仍然一片茫然。要想真正了解驅(qū)動(dòng)程序必須結(jié)合一些驅(qū)動(dòng)程序源碼,在此我以串口驅(qū)動(dòng)程序(COM16550)中初始化過程為線索簡(jiǎn)單講一講驅(qū)動(dòng)開發(fā)的基礎(chǔ)知識(shí)。
Windows CE下的串口驅(qū)動(dòng)程序能夠處理所有I/O行為類似串口的設(shè)備,包括基于16450、16550 UART(通用異步收發(fā)芯片)的設(shè)備和一些采用DMA的設(shè)備,常見的有9針串口、紅外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目錄下,COM_MDD2子目錄包含新的串口驅(qū)動(dòng)MDD層函數(shù)代碼。COM16550子目錄包含串口驅(qū)動(dòng)PDD層代碼。SER16550子目錄包含的一系列函數(shù)專用于控制與16550兼容的UART,這樣PDD層的主要工作就是調(diào)用SER16550中的函數(shù)。還有一個(gè)ISR16550子目錄包含的是串口驅(qū)動(dòng)程序?qū)S玫目砂惭bISR(中斷服務(wù)例程),而很多硬件設(shè)備驅(qū)動(dòng)程序采用CE默認(rèn)的可安裝ISR giisr.dll。一般串口設(shè)備相應(yīng)的注冊(cè)表設(shè)置例子及意義如下:

SysIntr由CE在文件Nkintr.h中預(yù)定義,用于唯一標(biāo)識(shí)中斷設(shè)備。OEM可以在文件Oalintr.h中定義自己的SysIntr。常見的預(yù)定義SysIntr有SYSINTR_NOP(中斷只由ISR處理,IST不再處理),SYSINTR_RESCHED(重新調(diào)度線程),SYSINTR_DEVICES(由CE預(yù)定義的設(shè)備中斷ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定義的。IoBase是串口1的IO地址空間的首地址,IoLen是IO空間的大小。IO地址空間只存在于x86平臺(tái),如果在其它平臺(tái)硬件寄存器必須映射到物理地址空間,那子鍵的名稱為MemBase和MemLen。在x86平臺(tái)更多硬件的寄存器由于IO空間的局限也映射到物理地址空間。DeviceArrayIndex是設(shè)備的索引,用于區(qū)分同類型的設(shè)備。Prefix是流驅(qū)動(dòng)程序的前綴,當(dāng)應(yīng)用程序調(diào)用CreateFile函數(shù)傳遞COM1:參數(shù)時(shí),文件系統(tǒng)負(fù)責(zé)與串口驅(qū)動(dòng)程序通信,串口驅(qū)動(dòng)程序是在CE啟動(dòng)時(shí)由device.exe加載的。
下面從MDD層函數(shù)COM_Init開始探索串口驅(qū)動(dòng)的初始化過程。COM_Init是在串口設(shè)備被檢測(cè)后由設(shè)備管理器device.exe調(diào)用的,主要的作用是初始化設(shè)備,它的唯一參數(shù)Identifier是由device.exe傳遞的,其類型是一個(gè)字符串指針,字符串的內(nèi)容是HLMDriversActivexx,xx是一個(gè)十進(jìn)制數(shù)(device.exe會(huì)跟蹤系統(tǒng)中每個(gè)驅(qū)動(dòng)程序,把加載的驅(qū)動(dòng)程序記錄在Active鍵下)。
我想即使讀者看過微軟的關(guān)于驅(qū)動(dòng)開發(fā)的培訓(xùn)教材和CE幫助文檔中的驅(qū)動(dòng)部分,頭腦中仍然一片茫然。要想真正了解驅(qū)動(dòng)程序必須結(jié)合一些驅(qū)動(dòng)程序源碼,在此我以串口驅(qū)動(dòng)程序(COM16550)中初始化過程為線索簡(jiǎn)單講一講驅(qū)動(dòng)開發(fā)的基礎(chǔ)知識(shí)。
Windows CE下的串口驅(qū)動(dòng)程序能夠處理所有I/O行為類似串口的設(shè)備,包括基于16450、16550 UART(通用異步收發(fā)芯片)的設(shè)備和一些采用DMA的設(shè)備,常見的有9針串口、紅外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目錄下,COM_MDD2子目錄包含新的串口驅(qū)動(dòng)MDD層函數(shù)代碼。COM16550子目錄包含串口驅(qū)動(dòng)PDD層代碼。SER16550子目錄包含的一系列函數(shù)專用于控制與16550兼容的UART,這樣PDD層的主要工作就是調(diào)用SER16550中的函數(shù)。還有一個(gè)ISR16550子目錄包含的是串口驅(qū)動(dòng)程序?qū)S玫目砂惭bISR(中斷服務(wù)例程),而很多硬件設(shè)備驅(qū)動(dòng)程序采用CE默認(rèn)的可安裝ISR giisr.dll。一般串口設(shè)備相應(yīng)的注冊(cè)表設(shè)置例子及意義如下:

SysIntr由CE在文件Nkintr.h中預(yù)定義,用于唯一標(biāo)識(shí)中斷設(shè)備。OEM可以在文件Oalintr.h中定義自己的SysIntr。常見的預(yù)定義SysIntr有SYSINTR_NOP(中斷只由ISR處理,IST不再處理),SYSINTR_RESCHED(重新調(diào)度線程),SYSINTR_DEVICES(由CE預(yù)定義的設(shè)備中斷ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定義的。IoBase是串口1的IO地址空間的首地址,IoLen是IO空間的大小。IO地址空間只存在于x86平臺(tái),如果在其它平臺(tái)硬件寄存器必須映射到物理地址空間,那子鍵的名稱為MemBase和MemLen。在x86平臺(tái)更多硬件的寄存器由于IO空間的局限也映射到物理地址空間。DeviceArrayIndex是設(shè)備的索引,用于區(qū)分同類型的設(shè)備。Prefix是流驅(qū)動(dòng)程序的前綴,當(dāng)應(yīng)用程序調(diào)用CreateFile函數(shù)傳遞COM1:參數(shù)時(shí),文件系統(tǒng)負(fù)責(zé)與串口驅(qū)動(dòng)程序通信,串口驅(qū)動(dòng)程序是在CE啟動(dòng)時(shí)由device.exe加載的。
下面從MDD層函數(shù)COM_Init開始探索串口驅(qū)動(dòng)的初始化過程。COM_Init是在串口設(shè)備被檢測(cè)后由設(shè)備管理器device.exe調(diào)用的,主要的作用是初始化設(shè)備,它的唯一參數(shù)Identifier是由device.exe傳遞的,其類型是一個(gè)字符串指針,字符串的內(nèi)容是HLMDriversActivexx,xx是一個(gè)十進(jìn)制數(shù)(device.exe會(huì)跟蹤系統(tǒng)中每個(gè)驅(qū)動(dòng)程序,把加載的驅(qū)動(dòng)程序記錄在Active鍵下)。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于WinDriver for CE的視頻采集驅(qū)動(dòng)程序設(shè)計(jì) 0次下載
- 基于Windows CE.NET的設(shè)備驅(qū)動(dòng)程序開發(fā) 0次下載
- 基于Windows CE的USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì) 5次下載
- Windows CE在指紋傳感器設(shè)備驅(qū)動(dòng)程序開發(fā)中的應(yīng)用 0次下載
- Windows CE驅(qū)動(dòng)程序開發(fā) 0次下載
- Windows CE設(shè)備驅(qū)動(dòng)程序開發(fā) 0次下載
- Windows CENET環(huán)境下的流接口驅(qū)動(dòng)程序開發(fā) 3次下載
- Windows CENET中斷架構(gòu)分析和高速AD驅(qū)動(dòng)程序的開發(fā) 0次下載
- Windows CE平臺(tái)上開發(fā)采集板驅(qū)動(dòng)程序 0次下載
- Windows CE下GPIO驅(qū)動(dòng)程序的設(shè)計(jì)與應(yīng)用
- Windows CE下通用串行總線(USB)驅(qū)動(dòng)程序開發(fā)
- 基于Windows CE的USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)
- Windows CE 下通用串行總線(USB)驅(qū)動(dòng)程序開發(fā)
- 大地電磁儀的Windows CE驅(qū)動(dòng)程序設(shè)計(jì)
- Windows CE下的串口驅(qū)動(dòng)設(shè)計(jì)
- 怎么編寫Framebuffer驅(qū)動(dòng)程序 589次閱讀
- Windows文件系統(tǒng)過濾驅(qū)動(dòng)程序介紹 1551次閱讀
- HDF驅(qū)動(dòng)框架中USB DDK的解析與開發(fā)指導(dǎo) 2259次閱讀
- ProfiNet輸入/輸出端的驅(qū)動(dòng)程序解析 3579次閱讀
- 基于S3C2410處理器對(duì)Windows CE 5.0操作系統(tǒng)實(shí)現(xiàn)BSP移植 1069次閱讀
- USB驅(qū)動(dòng)開發(fā)的步驟及方法解析 1.1w次閱讀
- 淺談電腦驅(qū)動(dòng)程序的工作原理 詳解電腦驅(qū)動(dòng)程序意義 3w次閱讀
- 嵌入式系統(tǒng)開發(fā)中驅(qū)動(dòng)程序設(shè)計(jì)的5個(gè)方法盤點(diǎn) 3244次閱讀
- 基于Linux2.6.30開發(fā)DS18B20的驅(qū)動(dòng)程序的類型和文件操作接口函數(shù)詳解 1498次閱讀
- 8255A驅(qū)動(dòng)程序 3429次閱讀
- 8155驅(qū)動(dòng)程序 3284次閱讀
- Xilinx設(shè)備的驅(qū)動(dòng)程序 8200次閱讀
- 監(jiān)控軟件設(shè)備驅(qū)動(dòng)程序的編程與實(shí)現(xiàn) 4327次閱讀
- 嵌入式Win CE中CAN總線控制器的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 1872次閱讀
- PCI驅(qū)動(dòng)程序開發(fā)實(shí)例 6831次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論