快乐飞艇平台上:接待您拜候长沙鹏翔电子科技无限公司声发射分站

手艺操纵

您今后的地位:首页手艺操纵

抢先的声发射装备焦点供给商

手艺操纵

PCI 总线高速数据收罗卡WDM 驱动法式开辟

宣布日期:2017-05-05 16:42    阅读次数:次

杨纪伟,刘教民,冯瑶

(河北产业大学计较机迷信与软件学院,天津300130)
择要:先容了PCI 总线的特征、体系布局,连系PCI 装备的详细特色,操纵DriverWorks 和VisualC++ 开辟Windows 2000 下的PCI 装备驱动法式及其与操纵法式的接口,并概述了其完成,体例,给出了PCI 总线驱动法式开辟的局部代码。
关头词: PCI 总线; DriverWorks; 装备驱动法式
中固分类号:TP274 文献标识码:A
WDM(Windows Driver Model)是一种便利式的编程手艺,它可以或许或许使开辟职员写出的驱动法式跨平台运转,撑持编写微软所撑持的WDM 总线驱动法式。在WDM 中"总线(Bus)" 的观点是一种附加在其余装备(包含物理装备、逻辑装备、假造装备)上的装备和谈。
PCI 总线体系布局是一种条理式的( Hierarchical)体系布局,其界说了32 位数据总线(可扩大到64 位) ;最高任务频次为33 MHz ,撑持并发任务体例,使传输速率更高,在33 MHz 总线速率下,拜候时辰只须要60ns
 ;基于ISA , EISA , MAC 体系的PCI 扩大板,削减了用户的开辟本钱;对PCI 扩大卡及元件可以或许或许主动设置装备摆设,完成装备的即插即用;处置器自力,不依靠任何CPU ,撑持多种处置器及未来更高机能的处置器;PCI 是
一个低提早、高速的I/ O 总线;PCI 供给数据和地点的奇偶校验功效,保障了数据的完全性和精确性问。
今朝开辟驱动法式的东西比拟多,如DDK , DriverWorks 等。用DDK 开辟驱动法式比拟烦琐,难度较大,开辟周期长。DriverWorks 把DDK 的函数封装成类,开辟者按照本身驱动法式的须要,操纵开辟东西进
行简略操纵就可以或许很便利地天生驱动法式框架,让驱动开辟者集合精神去完成驱动法式的根基功效,使WDM驱动法式的开辟变得简略、便利,进步了开辟效力凶。
1 PCI 总线数据收罗卡的硬件假想
硬件体系布局框图见图1。
此中: FPGA 一方面完成PCI 总线接口的功效,另外一方面作数据收罗节制器。接纳异步进步前辈先出存储器(FIFO) 作中心缓存,处置了A/D 局部和PCI 总线速率差别步题目;接纳高速摹拟多路开关作摹拟旌旗灯号转换;接纳高速ADC 芯片(AD5220) 作摹拟数字转换。该电路板上电路还包含一些旌旗灯号调度电路,其首要功效是对输入的摹拟旌旗灯号停止缩小、滤波、断绝、衰减、多路复用等一系列处置,使调度今后的旌旗灯号知足A/D的采样请求。
笔者假想的数据收罗卡是基于PCI 总线,接纳ALTERA 公司的EPIK50 完成PCI 和谈。同时EPIK50 还集成了数据收罗节制器,可以或许或许有用地简化电路假想。
2 PCI 总线的WDM 装备驱动法式
2.1 PCI 总线数据收罗卡装备驱动法式的体例
在PCI 总线数据收罗卡的装备驱动法式体例进程中,最主要的是焦点构成布局凶。
1)本驱动法式的DriverEntry 例程用来初始化驱动法式规模的数据布局和资本。当l/O 办理器装人驱动法式时,它挪用DriverEntry 例程。前往的状况号标明驱动法式是不是胜利装人并能领受和处置来自PnP 办理器的设置装备摆设,是不是增添及启动其余装备的请求。
2) 在驱动法式初始化以后.PnP 办理器挪用驱动法式AddDevice 例程来初始化由该驱动法式所节制的装备。
3) 当一段IRQL 相称高的内核形式的代码正在履行的时辰,其余相称或较低IRQL 的法式就不会履行。可是,若是有太多具有高的IRQL 的代码履行太永劫辰的话,就影响了全部体系的机能。时辰告急的事务被提早处置,从而致使丧失沉重。为了防止这个题目,履行大批的内核形式的代码必须分派最低的优先权,这个战略的主要局部是提早进程挪用(DPC) 。
2.2 辨认总线上的PCI 装备
辨认PCI 器件的体例是先向设置装备摆设空间地点寄放器写入总线和装备号,在外面搜刮PCI 器件时取得的寄放器号,再对设置装备摆设空间数据寄放器停止读写。用C 说话描写以下:
BOOL search_pciO j j查验计较机上的PCI 装备的子法式
{
forCio_cf8 = Ox80000000; io_cf8< = Ox80ffffOO; io_cf8+ = Ox800;)
{
DWORD_OUTCOxOcf8 , io_cf8); //OxOcf8 为输入端口地点,向其输入有用节制宇
io_cfc=DWORD_INCOxcfc); //Oxcfc 为输入端口地点,从其读人前往值
ifCio_cfc! = Oxffffffff) //找到了PCI 装备
{
DWORD_OUTCOxOc侣, io_cf8) ;//读取VID
VID=DWORD_INCOxcfc) ;
ifCVID= =OxlOb5) //找到PCI 开辟卡装备
{
PCI_BASE= io_cf8; //将基址赋值以便停止下一步的拜候任务
Return (TURE);
     }
    }
 }
Return CFALSE);
}
2.3 读写设置装备摆设空间取得设置装备摆设信息
PCI 装备的很多参数,包含所用的间断号、端口地点的规模、l/O 体例、存储器的地点、存储器映照体例等,都可以或许或许从PCI 设置装备摆设空间的各基址所对应的寻址空间中取得。读写设置装备摆设空间可以或许或许挪用BIOS 间断lAH ,也可以或许或许先向设置装备摆设空间地点寄放器写入总线和装备号,在后面搜刮PCI 器件时取得的寄放器号,再对设置装备摆设空间数据寄放器停止读写。对装备驱动来讲,最主要的是取得基址寄放器。不能以为PCI 器件资本老是假想装备时设置的初值,体系可以或许会按照硬件情况为PCI 装备分派新的资本。用C 说话描写以下
void read_pci()                   //读PCI 卡的设置装备摆设寄放器
{
ifC search_pci() = =TURE)     //找到PCI 卡
{
int i;
i0_cf8= PCI_BASE;
DWORD_OUT( oxocf8, io_cf8) ;   //向输入端口输入有用节制宇
io_cfc= DWORD_IN (oxcfc) ;             //从输人端口读人前往值
for (i=O;i<=15 ;i+ +)  //从io_cf8 这个地点起头在oh-63h 地点规模内读取该装备PCI 设置装备摆设寄放器的值
{
DWORD_OUT( oxocf8 , io_cf8 +4 *i);  //每次读双字节数据
buffer[i] = DWORD_IN ( oxcfc) ;  //读人PCI 设置装备摆设寄放器的值
    }
}
2.4 驱动法式与操纵法式的通讯
在WindowsNTj2000jXP 中,操纵法式与驱动法式间的通讯经由进程挪用Win32 API 完成,操纵法式用CreatFileC) 经由进程巳经界说的装备接口取得驱动法式的文件句柄,而后将文件句柄作为其余Win32 API 函数的一个参数,对驱动法式停止数据操纵,操纵法式可以或许或许经由进程API 函数DeviceloControl 来完成对装备的拜候,取得信息,发送号令,互换数据等。在操纵法式中,插手以下函数,便可完成拜候驱动法式所界说的缓冲区的操纵,从而完成了驱动法式与操纵法式的通讯题目。
HANOLE hOevice;
hDevice = CreateFile ("\ \ \ \. \ \Onepci" ,GENERIC_REAO I GENERIC_ WRITE ,
FIL E_ SHARE_REAO I FIL E_ SHARE_ WRITE , NULL , OPEN_EXIST2ING,
FIL E_ ATTRIBUTENORMAL,NULL) ;
//取得驱动法式的句柄;
ULONG Test_ONEPCLIOCTL_806(ULONG sel)
KS_MAILBOX_MESSAG E message;
message. MessageMailBox = 0;
message. MessageValue = sel;
ULONG nOutput; / / Count written to bufOutput
if (! OeviceloControl(hOevice , / /装备句柄
ONEPCI_IOCTL_806 , / /操纵法式挪用驱动法式的节制号令
&message , / /操纵法式通报给驱动法式数据缓冲区指针
sizeof(message) , / /操纵法式通报给驱动法式数据字节数
&message , / /驱动法式前往数据的缓冲区指针
sizeof(message) , / /驱动法式前往数据的缓冲区字节数
&nOutput,
NULL) )
printf( "ERROR: OeviceloControl returns %Ox. ", GetLastErrorO);
Exìt(1); }
return message. MessageValue; / /前往输入缓冲区中的数据
3 结语
装备驱动法式的开辟与凡是的操纵法式开辟有很大的差别,因为驱动法式间接拜候硬件资本,它在调试开辟进程中的毛病常会致使体系死机,呈现蓝屏。是以,驱动法式的调试须要特地的软件,不能间接操纵VC 的编译情况,最好给体系备份,以避免每次重装体系。NuMega 公司的Softice 是一个抱负的调试东西。
操纵OriverWorks 可以或许或许疾速发生一个驱动法式,而后只要在外面作一些小的修改就可以或许或许操纵了。是以操纵OriverWorks 开辟PCI 装备驱动法式可以或许或许大大延长开辟周期,进步开辟效力,是开辟PCI 硬件装备驱动法式的杰出东西。
文中编写的Onepci 驱动法式操纵于PCI 数据收罗卡,可以或许或许完成驱动法式的装置,并与操纵法式通讯,完成了及时请求及所请求的接口,驱动法式运转杰出,完成了预期假想的方针。

湖南省长沙高新区文轩路27号麓谷企业广场A4栋507 德律风:0731-84668116,85128115,85128116

Copyright © 2005~2019 长沙鹏翔电子科技无限公司 IS09001 Certified Acoustic Emission products

快乐飞艇是官彩还是私人彩票 快乐赛车app哪个好玩 快乐飞艇用哪个计划 澳洲快乐赛车pk拾计划 快乐飞艇开奖正规吗 快乐飞艇怎么玩内承 有快乐飞艇的彩票app 快乐飞艇定位胆技巧 三分钟快乐飞艇 彩票快乐飞艇玩法