當(dāng)前位置:首頁(yè) > 智能硬件 > 智能硬件
[導(dǎo)讀]摘要:針對(duì)Windows CE系統(tǒng)下專用網(wǎng)絡(luò)驅(qū)動(dòng)接口開(kāi)發(fā)難度大的情況,本文介紹一種基于Windows CE流接口驅(qū)動(dòng)的工作機(jī)制及開(kāi)發(fā)方法。相比于Windows CE對(duì)各種硬件設(shè)備所提供的專用接口,流接口驅(qū)動(dòng)具有更大的靈活性,且能夠

摘要:針對(duì)Windows CE系統(tǒng)下專用網(wǎng)絡(luò)驅(qū)動(dòng)接口開(kāi)發(fā)難度大的情況,本文介紹一種基于Windows CE流接口驅(qū)動(dòng)的工作機(jī)制及開(kāi)發(fā)方法。相比于Windows CE對(duì)各種硬件設(shè)備所提供的專用接口,流接口驅(qū)動(dòng)具有更大的靈活性,且能夠?qū)崿F(xiàn)應(yīng)用層到底層硬件的控制。以含有ARM11內(nèi)核的S3C6410結(jié)合以太網(wǎng)通信芯片DM9000A為例,逐步分析流接口驅(qū)動(dòng)程序的開(kāi)發(fā)流程,并利用PC機(jī)抓取以太網(wǎng)通信數(shù)據(jù),驗(yàn)證了流接口驅(qū)動(dòng)程序開(kāi)發(fā)的正確性。

關(guān)鍵詞:Windows CE 6.0;S3C6410;DM9000A;流接口驅(qū)動(dòng)

引言

嵌入式技術(shù)在各個(gè)領(lǐng)域的應(yīng)用與日俱增,基于微軟公司研發(fā)的Windows CE嵌入式操作系統(tǒng)的電子設(shè)備更是滲透到各行各業(yè)。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,以太網(wǎng)幾乎成為了電子通信設(shè)備首選的通信方式。Windows CE 6.0提供的網(wǎng)絡(luò)接口驅(qū)動(dòng)器標(biāo)準(zhǔn)(NIDS)固然得到系統(tǒng)的良好支持,但其驅(qū)動(dòng)程序的實(shí)現(xiàn)較為復(fù)雜,且通過(guò)NIDS實(shí)現(xiàn)應(yīng)用程序?qū)W(wǎng)絡(luò)底層驅(qū)動(dòng)的操作難度較大。

針對(duì)Windows CE6.0系統(tǒng)下應(yīng)用程序?qū)υO(shè)備硬件難以靈活控制的問(wèn)題,本文介紹一種使用流接口驅(qū)動(dòng)實(shí)現(xiàn)應(yīng)用程序?qū)τ布M(jìn)行控制的方法??紤]到Windows CE6.0在內(nèi)核訪問(wèn)機(jī)制上有別于以往版本,且以太網(wǎng)接口的廣泛使用及其基于NIDS的開(kāi)發(fā)難度較大,故而以DM9000A網(wǎng)絡(luò)芯片的驅(qū)動(dòng)及控制為例進(jìn)行介紹。

1 Windows CE 6.0的設(shè)備驅(qū)動(dòng)機(jī)制

Windows CE所有的驅(qū)動(dòng)程序都是以DLL文件的形式存在的,系統(tǒng)在執(zhí)行驅(qū)動(dòng)程序代碼之前必須先將相應(yīng)的DLL文件加載到地址空間。Wind owsCE 6.0提供3個(gè)系統(tǒng)進(jìn)程來(lái)加載和執(zhí)行驅(qū)動(dòng)程序的DLL文件,它們分別是Device.exe、GWES.exe和FileSys.exe。它們各自加載的驅(qū)動(dòng)類型如圖1所示。

2 流接口驅(qū)動(dòng)工作原理

2.1 流接口驅(qū)動(dòng)架構(gòu)

應(yīng)用程序根據(jù)加載的流驅(qū)動(dòng)的名稱和操作碼調(diào)用文件API,文件API被系統(tǒng)轉(zhuǎn)發(fā)到FileSys.exe進(jìn)程中;FileSys.exe一旦發(fā)現(xiàn)轉(zhuǎn)發(fā)過(guò)來(lái)的文件API是對(duì)設(shè)備的操作,則會(huì)交給設(shè)備管理器進(jìn)行處理;設(shè)備管理器將根據(jù)具體的請(qǐng)求,調(diào)用相應(yīng)的流驅(qū)動(dòng)接口程序。對(duì)于Windows CE系統(tǒng)應(yīng)用層而言,使用流接口驅(qū)動(dòng)的硬件設(shè)備被抽象為一個(gè)具有固定接口函數(shù)的動(dòng)態(tài)鏈接庫(kù)(DLL)。應(yīng)用程序調(diào)用文件API函數(shù)與流接口驅(qū)動(dòng)程序進(jìn)行通信,把對(duì)硬件的操作轉(zhuǎn)化為對(duì)文件的讀寫控制,從而達(dá)到應(yīng)用程序操作硬件的目的。流接口驅(qū)動(dòng)程序的體系結(jié)構(gòu)如圖2所示。

2.2 流驅(qū)動(dòng)接口函數(shù)

流接口驅(qū)動(dòng)程序具有統(tǒng)一的接口函數(shù),只需根據(jù)硬件沒(méi)備的操作時(shí)序在相應(yīng)的接口函數(shù)里編寫控制指令。Windows CE系統(tǒng)下流接口函數(shù)功能描述如表1所列。

表1中XXX代表驅(qū)動(dòng)文件的名稱,Windows CE中流接口驅(qū)動(dòng)的文件名稱規(guī)定為3個(gè)大寫的字母/數(shù)字。在進(jìn)行流接口驅(qū)動(dòng)程序編程時(shí),并非所有的接口函數(shù)都要編寫,一般比較重要的是XXX_Init()和XXX_IOControl()兩個(gè)函數(shù)。前者在設(shè)備驅(qū)動(dòng)被加載時(shí)調(diào)用,主要編寫初始化硬件設(shè)備的相應(yīng)控制指令,其中包括很是關(guān)鍵的地址映射操作;后者則主要實(shí)現(xiàn)對(duì)硬件設(shè)備的各種控制,可以實(shí)現(xiàn)數(shù)據(jù)的讀寫等操作,對(duì)設(shè)備的所有控制都可以在這個(gè)接口函數(shù)下實(shí)現(xiàn),只需分配好相應(yīng)的控制碼。對(duì)于本文介紹的DM9000A,DM9_Init()實(shí)現(xiàn)虛擬地址的獲取及初始化操作,DM9_IOControl()則實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收,其中發(fā)送控制碼定義為DM9_SendData,接收控制碼為DM9_ReceiveData。

3 DM9000A流驅(qū)動(dòng)程序的實(shí)現(xiàn)

DM9000A支持IEEE802.3x全雙工模式流控制,提供IP/TCP/UDP校驗(yàn)、產(chǎn)生及檢測(cè)功能;內(nèi)部集成10/100M自適應(yīng)PHY,同時(shí)具有13 KB的接收緩沖區(qū)和3 KB的發(fā)送緩沖區(qū),支持8位和16位數(shù)據(jù)接口。

S3C6410與DM9000A的接口電路如圖3所示。在流驅(qū)動(dòng)程序中是將DM9000A內(nèi)部寄存器地址空間映射到S3C6410內(nèi)部劃分的SROM的BANK1空間上,物理基地址是0x18000000。在Windows CE 6.0系統(tǒng)下對(duì)硬件寄存器的訪問(wèn)首先需要進(jìn)行地址映射,將寄存器物理地址映射為系統(tǒng)可訪問(wèn)的虛擬地址。最為簡(jiǎn)單的方法就是從系統(tǒng)目錄(C:\wince600\platform\studk6410\src\inc)下找到基于OEM層的地址配置表(oemaddrt ab_cfg.inc),從文件中找到所使用的SROM的BANK1的虛擬地址,在驅(qū)動(dòng)程序中直接訪問(wèn)該地址(如同訪問(wèn)芯片的寄存器地址)。

流接口驅(qū)動(dòng)的實(shí)現(xiàn)將集中體現(xiàn)在對(duì)初始化接口函數(shù)和I/O控制接口函數(shù)的操作,函數(shù)主要代碼如下:

其中,0x94000000正是從地址配置表文件中獲取的虛擬地址,dwEthernetIOBase經(jīng)映射后則如同DM9000A內(nèi)部寄存器的首地址。由于硬件線路上是使用S3C6410的地址線中的位2作為DM9000A的數(shù)據(jù)/地址訪問(wèn)信號(hào)(高電平為訪問(wèn)數(shù)據(jù)),故以“dwEthernetIOBase+4”作為訪問(wèn)數(shù)據(jù)的基地址。

其中,參數(shù)Handle為流接口設(shè)備的句柄;dwIoControICode為I/O控制碼,可以根據(jù)需要自由定義;pInBuf為傳入數(shù)據(jù)指針;nInBufSize為數(shù)據(jù)長(zhǎng)度。除了初始化函數(shù)和I/O控制函數(shù)外的其他流驅(qū)動(dòng)接口函數(shù)無(wú)需任何處理,直接給出返回值即可。

發(fā)送函數(shù)dm9000_send(pInBuf,nInBufSize)獲取流接口函數(shù)傳入的發(fā)送數(shù)據(jù)指針和相應(yīng)數(shù)據(jù)長(zhǎng)度,然后驅(qū)動(dòng)DM9000A發(fā)送數(shù)據(jù),其工作流程如圖4所示。

4 Windows CE 6.0系統(tǒng)下流驅(qū)動(dòng)程序的使用

4.1 流驅(qū)動(dòng)程序的加載

流接口驅(qū)動(dòng)程序需要按一定的方式配置后才能被系統(tǒng)識(shí)別并編譯。其配置的主要流程如圖5所示。

將流驅(qū)動(dòng)程序加入定制系統(tǒng)之后還需要添加相應(yīng)的注冊(cè)表啟動(dòng)信息,在platform.reg文件中添加以下內(nèi)容:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\DM9]

“Index”=dword:1

“Order”=dword:30

“Prefix”=“DM9”

“DLL”=“DM9.dll”

為使生成的DLL文件能夠被包括在燒寫文件中并下載到開(kāi)發(fā)板上,還需在platform.bib文件中加入相應(yīng)代碼,內(nèi)容如下:

IF BSP_NODM91

DM9.dll $(FLATRELEASEDIR)\DM9.dll NK SHK

ENDIF BSP_NODM9 !

經(jīng)過(guò)以上的配置之后,流接口驅(qū)動(dòng)程序已經(jīng)配置完成,只需要對(duì)Windows CE 6.0的系統(tǒng)定制工程重新編譯,并將生成的鏡像文件下載到開(kāi)發(fā)板上,即可通過(guò)文件API操作DM9000A的數(shù)據(jù)收發(fā)。

4.2 應(yīng)用程序?qū)α黩?qū)動(dòng)程序的調(diào)用

Windows CE啟動(dòng)時(shí)會(huì)自動(dòng)枚舉注冊(cè)表HKEY_LOCAL_MACHINE\Drivers\BuiltIn目錄下的驅(qū)動(dòng)信息,并加載相應(yīng)驅(qū)動(dòng)程序的動(dòng)態(tài)鏈接庫(kù),然后執(zhí)行初始化接口函數(shù)——DM9_Init()。在驅(qū)動(dòng)程序成功加載之后,應(yīng)用程序?qū)τ布牟僮骶椭恍枵{(diào)用文件API便可實(shí)現(xiàn),但前提是相應(yīng)的操作必須在驅(qū)動(dòng)程序中有定義,并且分配了操作碼。對(duì)于DM9000A的數(shù)據(jù)發(fā)送,其文件API代碼如下:

……

hDm9=CreateFile(TEXT(“DM91:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

該代碼調(diào)用文件API打開(kāi)設(shè)備進(jìn)行讀寫操作,得到文件操作的句柄名hDm9。

DeviceIoControl(hDm9,DM9_SendFrame,&SendData,sizeof(SendData),NULL,0,&dwReturn,Null);

……

該代碼調(diào)用文件API對(duì)設(shè)備發(fā)送操作命令。其中,hDm9告訴系統(tǒng)要操作的設(shè)備為DM9000A;DM9 SendFrame為發(fā)送數(shù)據(jù)的操作碼,這必須與驅(qū)動(dòng)程序中定義的相一致,也就是讓系統(tǒng)知道進(jìn)行的是什么操作;&SendData為發(fā)送的數(shù)據(jù)幀首地址;sizeof(SendData)為發(fā)送數(shù)據(jù)的長(zhǎng)度……

4.3 實(shí)驗(yàn)驗(yàn)證

將基于Windows CE 6.0的DM9000A流接口驅(qū)動(dòng)程序應(yīng)用于電子式互感器合并單元的以太網(wǎng)數(shù)據(jù)通信模塊設(shè)計(jì)中,其通過(guò)DM9000A發(fā)送的數(shù)據(jù)幀在PC機(jī)上使用WinPcap軟件進(jìn)行以太網(wǎng)數(shù)據(jù)包抓取,從而驗(yàn)證流驅(qū)動(dòng)程序及其應(yīng)用程序是否正確實(shí)現(xiàn)Windows CE下以太網(wǎng)數(shù)據(jù)的發(fā)送。在實(shí)驗(yàn)中以IEC61850-9-2數(shù)據(jù)幀格式發(fā)送標(biāo)識(shí)為NCEPU的采樣值測(cè)試數(shù)據(jù),其實(shí)驗(yàn)結(jié)果如圖6所示。

抓取的以太網(wǎng)數(shù)據(jù)說(shuō)明了PC機(jī)接收到的數(shù)據(jù)和開(kāi)發(fā)板上通過(guò)流接口驅(qū)動(dòng)發(fā)送過(guò)來(lái)的數(shù)據(jù)是一致的,從而驗(yàn)證了流接口驅(qū)動(dòng)程序正確可行。

結(jié)語(yǔ)

本文介紹的流接口驅(qū)動(dòng)雖然不支持WIndwos CE提供的標(biāo)準(zhǔn)接口,無(wú)法通過(guò)系統(tǒng)標(biāo)準(zhǔn)函數(shù)庫(kù)進(jìn)行操作,但可以直接根據(jù)硬件設(shè)備的操作時(shí)序編寫驅(qū)動(dòng),具有極大的操作靈活性,非常適合在Windows CE應(yīng)用程序中對(duì)硬件設(shè)備底層進(jìn)行操作。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉