引言
近年来TD-SCDMA一直是通信行业关注的一个焦点,为了进一步支持TD-SCDMA产业化进展,国家对当前TD-SCDMA产业发展的各个环节给予支持[1]。我国正大力开发TD-SCDMA第三代移动通信(3G)系统,即将大规模组建3G网络,然而却没有所必需的实验研发、建网和运行测试设备,在国际上传统通信测试仪表厂商也只推出了基于CD-MA2000和WCDMA 2种标准的测试仪表。针对这样的情况,研制出具有自主知识产权的TD-SCDMA移动通信网络测试仪,完善TD-SCDMA产业链,形成系列产品并推向市场,必将产生巨大的社会效益及经济效益。该测试仪主要测试的接口包括Iub,Iur,IuCS,IuPS,Nc,Nb,C/D/E/G/Gr/MSCS- SCP,Gn/Gp,Gi等[2-4],主要实现协议分析(解码)、呼叫跟踪、业务统计及分析、网络异常分析、网络分析和优化、协议仿真等功能,采用工控机结构,多链路、多通道的硬件由多个基于PCI总线的数据采集卡(规程板)组成。E1数据采集卡是其中的一个PCI数据采集卡,它采集的2M信令用于网络的实时维护和管理,是TD-SCDMA网络系统中非常重要的一部分。
1、E1数据采集卡的实现
E1数据采集卡从E1线上采集信令消息(包括七号信令等),用以监视和仿真整个通话流程。控制流程如图1所示,PCI接口芯片(HDLC控制器)是一个多功能设备,包括一个网络控制器和一个PCI桥设备(EBUS)。网络控制器完成时隙映射和DMA传输等功能;PCI桥设备完成选通和配置成帧器,其中成帧器的选通用一个CPLD来完成。信令信号在成帧器成帧后,经过HDLC控制器以DMA方式送入到PC缓冲区,用户依据接口函数到缓冲区读取信令数据并进行分析,数据流程如图2所示。
图1 E1数据采集卡控制流程图
图2 E1数据采集卡数据流程图
2、E1数据采集卡的驱动设计
2.1 开发环境设置
在开发驱动前,首先要对开发、编译环境进行设置。WDM驱动程序开发环境及在Windows XP/Windows2000下编写驱动程序的环境被称为DDK For WindowsXP/Windows2000或WindowsXP/Windows2000 DDK。DDK是一个命令行下的工作环境。在安装DDK前需要先安装Microsoft Visual C++和Win32 SDK(可选),安装DDK成功后,一定要在控制面板“系统”属性的“高级”标签环境变量编辑器中设置好这个环境变量。对驱动程序的编译可以通过设置VC ++的项目设置,在VC环境中直接编译驱动程序,但改变设置的工作较繁琐且易出错,因此“DDKbuild.exe”编译联接器是构造驱动程序的主要工具。“DDKbuild.exe”从配置文件Sources中读出待编译的程序的配置,包括源文件、目标文件等,从环境变量Include中得到引用文件的地址,然后调用Visual C++的编译联接器“Nmake.exe”进行实际的编译联接工作。另外,build编译联接器还可以通过查看DIRS文件中的伪指令,确定要编译的驱动程序目录列表。日志文件build.log,build.wrn,build.err中分别记录了编译联接中执行的命令行、遇到的错误和警告。编译完成后的文件后缀为“.sys”。
2.2 驱动框架设计
驱动程序在初始化过程中,利用期间识别号(DID)、厂商识别号(VID)和检索号(Index)搜索PCI器件,通过调用PCI BIOS确认其存在,然后利用总线号、器件号、功能号和寻址设备的PCI配置空间(Configuration Space),获得该设备的参数。这部分可以由DRIVERWORKS的向导DriverWizard来完成。
DriverWizard为设计者生成了2个类:一是设备驱动程序类,另一个是设备应用对象类。驱动程序类主要完成WDM(Windows driver model)的DriverEntry和AddDevice例程;设备对象类就是与硬件对应的功能设备对象(FDO)类,与硬件交互的例程都是针对此类的。通过前面驱动框架设计的参数配置,驱动程序就建立了联系,接下来就是驱动功能设计。
2.3 驱动功能设计
E1数据采集卡底层驱动程序的2个部分分别对应接口芯片的2个功能设备:HDLC控制器和成帧器。E1数据采集卡的HDLC控制器和成帧器的配置都是驱动程序通过PCI接口芯片来配置的。
HDLC控制器的配置主要完成映射的共享体的配置。共享体用于HDLC寄存器的初配、接收和发送缓冲区配置。HDLC控制器为每个信道都建立一个消息链表,这样数据缓冲区可以循环利用。HDLC控制器与成帧器的对应关系决定于HDLC控制器端口映射方式的设置。 成帧器就是将E1线上的比特流整合成符合规范的HDLC帧,其中一个标准E1 HDLC帧包括32个时隙,这些时隙可以通过配置映射到HDLC控制器的端口信道上。另外,可以通过时钟配置实现多对多、多对一的灵活时隙映射。自环也是成帧器重要的功能之一,可以将发出的数据直接导到接收端,这对早期开发很重要。成帧器提供3种自环模式,可以满足不同阶段配置的要求,具体如下。
(1)N×64 K模式。在该模式下,E1数据采集卡通过成帧器耦合,将数据导入到一个HDLC控制器端口,这样提供的8个E1接口都可用作接收数据。另外,用户可以根据需要和当前数据量的大小增减时隙配置。
(2)2 M模式。在该模式下,E1数据采集卡将4个成帧器与4个HDLC完全对应,最大数据量达2 Mbit/s。
(3)N×8 K模式。该模式是为某些特殊情况设计的。在有些网络中,七号信令可能只走一个HDLC帧中一个时隙的一个或几个比特。在这种情况下,只将该时隙的对应比特位映射到HDLC端口中,获取准确信息。
借助于驱动的I/O接口函数,用户可以通过API或MFC配置下层驱动。另外,为满足用户对信令消息的特定要求,驱动提供了控制消息长度的接口函数,用户可以随意采集指定长度的消息数据,便于特定检测。
卡间同步决定了网络测试仪实时检测性能和仿真性能,是TD-SCDMA网络测试仪的主要技术之一。2 M卡解决了时钟同步问题,可实现一机多卡,为大型网络节点的繁重数据量采集提供升级参考。
3、E1数据采集卡的驱动实现
E1数据采集卡驱动程序采用WDM结构,程序具体模块分析如图3所示。
图3 设备驱动程序的组成示意图
3.1 驱动程序入口点和回调例程
驱动程序有一个主要的初始化入口点——DriverEntry,当驱动被装载时,内核就调用DriverEntry例程。在 DriverEntry里,有回调例程供内核调用,这些例程是驱动的实现主体。内核通过发送I/O请求包(IRP)来运行驱动程序中的这些例程。驱动程序入口点和回调例程功能列表如表1所示。
表1 驱动程序入口点和回调例程
3.2 IRP分发例程
“创建”、“关闭”、“读”、“写”、“CTL码”处理的例程就叫分发例程,在本驱动中,用来产生IRP,IRP向上向下转发、传送数据。
3.3 创建设备
每个设备接口都有一个惟一标识的GUID码(全局惟一标识符),安装设备驱动时,inf将该信息导入到注册表,形成一个符号链接名来表示设备。这样,操作系统在设备安装后都能够识别设备。
3.4 资源分配
资源包括I/O端口、存储器空间、中断和DMA线,这些资源都是由接口提供的。例如,存储器地址可通过KMemoryRange来找寻。
3.5 硬件访问
对硬件的访问包括IRP串行处理例程StartIo,StartIo例程可以防止程序的不同部分同时访问相同资源所引起的冲突,在E1数据采集卡中,StartIo例程负责上行处理接收的数据和下行的命令以及发送数据,StartIo可控性很强,能满足采集卡对高速数据采集的要求,具体程序如下。
3.6 中断处理
中断例程运行级别很高,windows为了保护操作系统的稳定性,禁止驱动程序调用内核函数。例如,中断程序如果想完成IRP操作,必须要调用DPC例程:m_DpcFor_Irq.Setup(LinkTo(DpcFor_Irq),this)。
3.7 驱动卸载
驱动卸载调用Pnp的IRP_MN_STOP_DE-VICE,所有申请内存和中断必须释放,指针置空,例程如下:
3.8 测试结果
图4给出了E1数据采集卡采集的测试结果,从中可看到E1线采集的数据经过驱动打标后,被送到了上层测试程序,具有多线路、多业务、实时性等优点,满足了设计要求。另外,板卡经过了超过24小时的大数据量压力测试,测试效果良好。
图4 E1数据采集卡采集测试结果
4、结束语
利用E1数据采集卡可以实时监测通信链路的建立、传输、停止等过程,并且可以通过该卡的信令发送功能,实现业务仿真,减小TD-SCDMA网络设计风险。经多次测试证明,E1数据采集卡完全可以应用于TD-SCDMA网络测试。该测试卡驱动代码运行稳定高效,功能模块明晰,可以实时升级,以满足不同用户功能需求。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !