<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 專(zhuān)題 > TD-SCDMA網(wǎng)絡(luò )測試儀中E1數據采集卡的驅動(dòng)程序設計

TD-SCDMA網(wǎng)絡(luò )測試儀中E1數據采集卡的驅動(dòng)程序設計

作者: 時(shí)間:2008-01-30 來(lái)源:重慶郵電學(xué)院學(xué)報 收藏

0、引言

本文引用地址:http://dyxdggzs.com/article/78275.htm

  近年來(lái)TD-SCDMA一直是通信行業(yè)關(guān)注的一個(gè)焦點(diǎn),為了進(jìn)一步支持TD-SCDMA產(chǎn)業(yè)化進(jìn)展,國家對當前TD-SCDMA產(chǎn)業(yè)發(fā)展的各個(gè)環(huán)節給予支持[1]。我國正大力開(kāi)發(fā)TD-SCDMA第三代移動(dòng)通信(3G)系統,即將大規模組建3G網(wǎng)絡(luò ),然而卻沒(méi)有所必需的實(shí)驗研發(fā)、建網(wǎng)和運行測試設備,在國際上傳統通信測試儀表廠(chǎng)商也只推出了基于CD-MA2000和WCDMA 2種標準的測試儀表。針對這樣的情況,研制出具有自主知識產(chǎn)權的TD-SCDMA移動(dòng)通信網(wǎng)絡(luò )測試儀,完善TD-SCDMA產(chǎn)業(yè)鏈,形成系列產(chǎn)品并推向市場(chǎng),必將產(chǎn)生巨大的社會(huì )效益及經(jīng)濟效益。該測試儀主要測試的接口包括Iub,Iur,IuCS,IuPS,Nc,Nb,C/D/E/G/Gr/MSCS-SCP,Gn/Gp,Gi等[2-4],主要實(shí)現協(xié)議分析(解碼)、呼叫跟蹤、業(yè)務(wù)統計及分析、網(wǎng)絡(luò )異常分析、網(wǎng)絡(luò )分析和優(yōu)化、協(xié)議仿真等功能,采用工控機結構,多鏈路、多通道的硬件由多個(gè)基于PCI總線(xiàn)的(規程板)組成。E1是其中的一個(gè)PCI,它采集的2M信令用于網(wǎng)絡(luò )的實(shí)時(shí)維護和管理,是TD-SCDMA網(wǎng)絡(luò )系統中非常重要的一部分。

1、E1數據采集卡的實(shí)現

  E1數據采集卡從E1線(xiàn)上采集信令消息(包括七號信令等),用以監視和仿真整個(gè)通話(huà)流程??刂屏鞒倘鐖D1所示,PCI接口芯片(HDLC控制器)是一個(gè)多功能設備,包括一個(gè)網(wǎng)絡(luò )控制器和一個(gè)PCI橋設備(EBUS)。網(wǎng)絡(luò )控制器完成時(shí)隙映射和DMA傳輸等功能;PCI橋設備完成選通和配置成幀器,其中成幀器的選通用一個(gè)CPLD來(lái)完成。信令信號在成幀器成幀后,經(jīng)過(guò)HDLC控制器以DMA方式送入到PC緩沖區,用戶(hù)依據接口函數到緩沖區讀取信令數據并進(jìn)行分析,數據流程如圖2所示。

 

圖1 E1數據采集卡控制流程圖

Fig.1 E1 data acquisition card control flow chart

 

圖2 E1數據采集卡數據流程圖

Fig.2 E1 data acquisition card data flow chart

2、E1數據采集卡的驅動(dòng)設計

  2.1 開(kāi)發(fā)環(huán)境設置

  在開(kāi)發(fā)驅動(dòng)前,首先要對開(kāi)發(fā)、編譯環(huán)境進(jìn)行設置。WDM驅動(dòng)程序開(kāi)發(fā)環(huán)境及在Windows XP/Windows2000下編寫(xiě)驅動(dòng)程序的環(huán)境被稱(chēng)為DDK For WindowsXP/Windows2000或WindowsXP/Windows2000 DDK。DDK是一個(gè)命令行下的工作環(huán)境。在安裝DDK前需要先安裝Microsoft Visual C++和Win32 SDK(可選),安裝DDK成功后,一定要在控制面板“系統”屬性的“高級”標簽環(huán)境變量編輯器中設置好這個(gè)環(huán)境變量。對驅動(dòng)程序的編譯可以通過(guò)設置VC++的項目設置,在VC環(huán)境中直接編譯驅動(dòng)程序,但改變設置的工作較繁瑣且易出錯,因此“DDKbuild.exe”編譯聯(lián)接器是構造驅動(dòng)程序的主要工具。“DDKbuild.exe”從配置文件Sources中讀出待編譯的程序的配置,包括源文件、目標文件等,從環(huán)境變量Include中得到引用文件的地址,然后調用Visual C++的編譯聯(lián)接器“Nmake.exe”進(jìn)行實(shí)際的編譯聯(lián)接工作。另外,build編譯聯(lián)接器還可以通過(guò)查看DIRS文件中的偽指令,確定要編譯的驅動(dòng)程序目錄列表。日志文件build.log,build.wrn,build.err中分別記錄了編譯聯(lián)接中執行的命令行、遇到的錯誤和警告。編譯完成后的文件后綴為“.sys”。

  2.2 驅動(dòng)框架設計

  驅動(dòng)程序在初始化過(guò)程中,利用期間識別號(DID)、廠(chǎng)商識別號(VID)和檢索號(Index)搜索PCI器件,通過(guò)調用PCI BIOS確認其存在,然后利用總線(xiàn)號、器件號、功能號和尋址設備的PCI配置空間(Configuration Space),獲得該設備的參數。這部分可以由DRIVERWORKS的向導DriverWizard來(lái)完成。

  DriverWizard為設計者生成了2個(gè)類(lèi):一是設備驅動(dòng)程序類(lèi),另一個(gè)是設備應用對象類(lèi)。驅動(dòng)程序類(lèi)主要完成WDM(Windows driver model)的DriverEntry和AddDevice例程;設備對象類(lèi)就是與硬件對應的功能設備對象(FDO)類(lèi),與硬件交互的例程都是針對此類(lèi)的。通過(guò)前面驅動(dòng)框架設計的參數配置,驅動(dòng)程序就建立了聯(lián)系,接下來(lái)就是驅動(dòng)功能設計。

  2.3  驅動(dòng)功能設計

  E1數據采集卡底層驅動(dòng)程序的2個(gè)部分分別對應接口芯片的2個(gè)功能設備:HDLC控制器和成幀器。E1數據采集卡的HDLC控制器和成幀器的配置都是驅動(dòng)程序通過(guò)PCI接口芯片來(lái)配置的。

  HDLC控制器的配置主要完成映射的共享體的配置。共享體用于HDLC寄存器的初配、接收和發(fā)送緩沖區配置。HDLC控制器為每個(gè)信道都建立一個(gè)消息鏈表,這樣數據緩沖區可以循環(huán)利用。HDLC控制器與成幀器的對應關(guān)系決定于HDLC控制器端口映射方式的設置。

  成幀器就是將E1線(xiàn)上的比特流整合成符合規范的HDLC幀,其中一個(gè)標準E1 HDLC幀包括32個(gè)時(shí)隙,這些時(shí)隙可以通過(guò)配置映射到HDLC控制器的端口信道上。另外,可以通過(guò)時(shí)鐘配置實(shí)現多對多、多對一的靈活時(shí)隙映射。自環(huán)也是成幀器重要的功能之一,可以將發(fā)出的數據直接導到接收端,這對早期開(kāi)發(fā)很重要。成幀器提供3種自環(huán)模式,可以滿(mǎn)足不同階段配置的要求,具體如下。

 ?。?)N×64 K模式。在該模式下,E1數據采集卡通過(guò)成幀器耦合,將數據導入到一個(gè)HDLC控制器端口,這樣提供的8個(gè)E1接口都可用作接收數據。另外,用戶(hù)可以根據需要和當前數據量的大小增減時(shí)隙配置。

 ?。?)2 M模式。在該模式下,E1數據采集卡將4個(gè)成幀器與4個(gè)HDLC完全對應,最大數據量達2 Mbit/s。

 ?。?)N×8 K模式。該模式是為某些特殊情況設計的。在有些網(wǎng)絡(luò )中,七號信令可能只走一個(gè)HDLC幀中一個(gè)時(shí)隙的一個(gè)或幾個(gè)比特。在這種情況下,只將該時(shí)隙的對應比特位映射到HDLC端口中,獲取準確信息。

  借助于驅動(dòng)的I/O接口函數,用戶(hù)可以通過(guò)API或MFC配置下層驅動(dòng)。另外,為滿(mǎn)足用戶(hù)對信令消息的特定要求,驅動(dòng)提供了控制消息長(cháng)度的接口函數,用戶(hù)可以隨意采集指定長(cháng)度的消息數據,便于特定檢測。

  卡間同步?jīng)Q定了網(wǎng)絡(luò )測試儀實(shí)時(shí)檢測性能和仿真性能,是的主要技術(shù)之一。2 M卡解決了時(shí)鐘同步問(wèn)題,可實(shí)現一機多卡,為大型網(wǎng)絡(luò )節點(diǎn)的繁重數據量采集提供升級參考。

3、E1數據采集卡的驅動(dòng)實(shí)現

  E1數據采集卡驅動(dòng)程序采用WDM結構,程序具體模塊分析如圖3所示。

 

圖3 設備驅動(dòng)程序的組成示意圖

Fig.3 Component of device driver

  3.1 驅動(dòng)程序入口點(diǎn)和回調例程

  驅動(dòng)程序有一個(gè)主要的初始化入口點(diǎn)——DriverEntry,當驅動(dòng)被裝載時(shí),內核就調用DriverEntry例程。在DriverEntry里,有回調例程供內核調用,這些例程是驅動(dòng)的實(shí)現主體。內核通過(guò)發(fā)送I/O請求包(IRP)來(lái)運行驅動(dòng)程序中的這些例程。驅動(dòng)程序入口點(diǎn)和回調例程功能列表如表1所示。

表1 驅動(dòng)程序入口點(diǎn)和回調例程

Tab.1 Driver entry pointer and callback routine

 

  3.2 IRP分發(fā)例程

  

  “創(chuàng )建”、“關(guān)閉”、“讀”、“寫(xiě)”、“CTL碼”處理的例程就叫分發(fā)例程,在本驅動(dòng)中,用來(lái)產(chǎn)生IRP,IRP向上向下轉發(fā)、傳送數據。

  3.3 創(chuàng )建設備

  每個(gè)設備接口都有一個(gè)惟一標識的GUID碼(全局惟一標識符),安裝設備驅動(dòng)時(shí),inf將該信息導入到注冊表,形成一個(gè)符號鏈接名來(lái)表示設備。這樣,操作系統在設備安裝后都能夠識別設備。

  3.4 資源分配

  資源包括I/O端口、存儲器空間、中斷和DMA線(xiàn),這些資源都是由接口提供的。例如,存儲器地址可通過(guò)KMemoryRange來(lái)找尋。

  

  3.5 硬件訪(fǎng)問(wèn)

  對硬件的訪(fǎng)問(wèn)包括IRP串行處理例程StartIo,StartIo例程可以防止程序的不同部分同時(shí)訪(fǎng)問(wèn)相同資源所引起的沖突,在E1數據采集卡中,StartIo例程負責上行處理接收的數據和下行的命令以及發(fā)送數據,StartIo可控性很強,能滿(mǎn)足采集卡對高速數據采集的要求,具體程序如下。

   

  3.6 中斷處理

  中斷例程運行級別很高,windows為了保護操作系統的穩定性,禁止驅動(dòng)程序調用內核函數。例如,中斷程序如果想完成IRP操作,必須要調用DPC例程:m_DpcFor_Irq.Setup(LinkTo(DpcFor_Irq),this)。

  3.7 驅動(dòng)卸載

  驅動(dòng)卸載調用Pnp的IRP_MN_STOP_DE-VICE,所有申請內存和中斷必須釋放,指針置空,例程如下:

  

  3.8 測試結果

  圖4給出了E1數據采集卡采集的測試結果,從中可看到E1線(xiàn)采集的數據經(jīng)過(guò)驅動(dòng)打標后,被送到了上層測試程序,具有多線(xiàn)路、多業(yè)務(wù)、實(shí)時(shí)性等優(yōu)點(diǎn),滿(mǎn)足了設計要求。另外,板卡經(jīng)過(guò)了超過(guò)24小時(shí)的大數據量壓力測試,測試效果良好。

 

圖4 E1數據采集卡采集測試結果

Fig.4 E1 data acquisition card testing result

4、結束語(yǔ)

  利用E1數據采集卡可以實(shí)時(shí)監測通信鏈路的建立、傳輸、停止等過(guò)程,并且可以通過(guò)該卡的信令發(fā)送功能,實(shí)現業(yè)務(wù)仿真,減小TD-SCDMA網(wǎng)絡(luò )設計風(fēng)險。經(jīng)多次測試證明,E1數據采集卡完全可以應用于TD-SCDMA網(wǎng)絡(luò )測試。該測試卡驅動(dòng)代碼運行穩定高效,功能模塊明晰,可以實(shí)時(shí)升級,以滿(mǎn)足不同用戶(hù)功能需求。

  參考文獻

  [1] 王炎.TD-SCDMA系統測試情況分析[EB/OL].(2005-08-04).http://www.cttl.com.cn.

  [2] 李小文,李貴勇,陳賢亮,等.TD-SCDMA第三代移動(dòng)通信系統、信令及實(shí)現[M].北京:人民郵電出版社,2003.

  [3] 李貴山,戚德虎.PCI局部總線(xiàn)開(kāi)發(fā)者指南[M].西安:西安電子科技大學(xué)出版社,1997.

  [4] 武安河,邰銘,于洪濤.windows 2000_XP WDM設備驅動(dòng)程序開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2003.

 



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>