网卡驱动程序范文

时间:2023-02-25 20:43:44

网卡驱动程序

网卡驱动程序范文第1篇

第五阶段:装入基本核心驱动程序;

第六阶段:释放一些已经完成使命的装入初始数据块;

第七阶段:进一步初始化注册库,以便有些依赖于基本核心驱动程序的上层驱动程序能顺利装入;

第八阶段:服务控制器装入应该由该服务控制器装入的各种驱动程序。

§2.2.2 fddi网卡驱动程序的加载过程

在windows nt启动的第五个阶段,将加载核心驱动程序。而对于ndis网卡驱动程序是在ndis接口(ndis.sys)加载后调入运行,向ndis wrapper注册、初始化、查询设置参数等。

windows nt启动时,相应的实体如nt的服务控制器根据注册库中yhfddi驱动程序的配置注册信息,初始化ndis wrapper,并装入相应的驱动程序,生成驱动程序管理块结构,申请内存以保存各种信息,向ndis wrapper注册驱动程序。初始化和注册完毕后,再由服务控制器读取注册库中相应的链接信息。

在ndis wrapper和yhfddi驱动程序初始化和注册成功后,ndis wrapper根据系统相应的注册信息,加入和yhfddi驱动程序所对应的fddi网卡,同时读入网卡的注册信息,并进行网卡注册和网卡初始化。

在以上过程成功后,wrapper将查询和设置驱动程序的各种参数,了解驱动程序对哪些操作支持,决定对上层驱动程序的支持范围。

第三节fddi网卡驱动程序的注册

driverentry函数是windows nt ddk规定的核心驱动程序的入口点,wrapper识别到入口点后,调入驱动程序,在driverentry函数内完成两个基本注册任务:

调用ndisminitializewapper函数向ndis接口报告驱动程序将以miniport类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回ndiswrapperhandle,驱动程序保存这个句柄,以利后来调用ndisxxxconfiguration和initialization等函数。

填写ndisxx_miniport_characteristics属性结构,主要记录ndis版本号和驱动程序支持的miniportxxx函数的入口点,然后调用ndismregisterminiport函数实现驱动程序的整体注册。

以yhfddi为例所要注册的属性结构的内容大致如下:

ndis_miniport_characteristics yhfddichar;

(ndis_miniport_characteristics这个结构将在第三章介绍)

yhfddichar.majorndisversion=yhfddi_ndis_major_version;

yhfddichar.minorndisversion=yhfddi_ndis_minor_version;

这两个属性决定驱动程序是ndis的哪个版本所支持,我们所用的是ndis3.0

yhfddichar.disableinterrupthandler=yhfddidisableinterrupt;

yhfddichar.enableinterrupthandler=yhfddienableinterrupt;

yhfddichar.isrhandle=yhfddiinterruptservice;

yhfddichar.handleinterrupthandler=yhfddihandleinterrupt;

以上四项属性是中断处理所需的上边缘服务函数的入口点(句柄)。fddi网卡驱动程序需要有smt站管理功能,而smt是以中断处理方式进行的,故这四项属性在fddi网卡驱动程序中是很重要的。

yhfddichar.initializehandler=yhfddiinitialize;

此项注册的是驱动程序的初始化函数句柄。

yhfddichar.queryinformationhandler= yhfddiqueryinformation;

yhfddichar.setinformationhandler=yhfddisetinformation;

这两项注册的是参数查询和设置函数的句柄。

yhfddichar.sendhanler= yhfddisend;

yhfddichar.transferdatahandler= yhfdditransferdata;

主要提供数据发送和接收函数句柄。

yhfddichar.resethandler=yhfddireset;

此项注册网卡软硬件重置函数句柄。

yhfddichar.halthandler= yhfddihalt;

此项注册网卡驱动程序挂起函数句柄。

yhfddichar.checkforhandler=null;

yhfddichar.reconfigurehandler=null;

这两个上边缘服务函数是fddi网卡驱动程序所不提供的,故置为null。

填好这些结构以后,调用以下函数实现驱动程序的注册:

ndismregisterminiport(

yhfddiwrapperhandle,

&yhfddichar,

sizeof(yhfddichar));

其中yhfddiwrapperhandle是在此之前初始化wrapper调用ndisminitializewrapper所得的句柄。

如果调用ndismregisterminiport不能返回ndis_status_success,必须在退出driverentry之前释放已经分配的资源(如yhfddiwrapperhandle等),故调用

ndisterminatewrapper(yhfddiwrapperhandle,null)。

这样驱动程序没能正确注册,亦不能正常运行。

第四节 网卡驱动程序对象查询与设置

如果ndis的管理实体要查询或设置一个特定的网络对象,它必须提供一个32位的oid。oid的结构如下: 图2.3.0 oid结构图

由上可以看到,oid可分为三大类:

所有ndis驱动程序都有的一般对象;

特定介质的对象;

特殊的与具体实现相关的对象(如多目地址表的长度)。

一般的和特定介质的oid被记录在windows nt ddk中,对于这些oid ddk文本指明了相关的对象能否通过miniportqueryinformation查询参数和通过miniportsetinformation设置参数。

oid也可被分为操作特性(如多目地址表长度参数)和统计参数(如广播包接收)。最后oid可分为必须的和可选的两种。

oid的前三个字节表明oid的不同类别,而最后一个字节确定这一类别内特定的信息管理对象。

针对于fddi网卡,被查询的oid的第一个字节为0x03。而ndis所查询的介质相关参数为:

0x03010104 oid_fddi_long_max_list_size

0x03010108 oid_fddi_short_max_list_size

0x03010102 oid_fddi_long_current_addr

0x03010106 oid_fddi_short_current_addr

tcp/ip传输驱动程序所要查询的fddi oid为:

0x03010102 oid_fddi_long_current_addr

0x03010103 oid_fddi_long_multicast_list

0x03010107 oid_fddi_short_multicast_list

通过以上两阶段的查询,ndis和tcp/ip驱动程序就分别了解了网卡驱动程序对其的支持,从而进行相应的捆绑,以便数据传输时正确选择网卡驱动程序。

第五节 开发环境与调试方法

开发环境:

fddi网卡驱动程序的开发环境为nt server 3.51,sdk,ddk for workstation 3.51, vc++4.1,硬件平台为586。

调试平台:

主机为nt server 3.51,windbg32

目标机为nt workstation3.51 (check 944)

调试方法:

利用dbgprint把目标机上关键信息通过串口传到主机进行分析,以得出ndis驱动程序的调度机制和运转状况;

利用assert产生异常断点,由主机对异常进行控制

自定义宏,进行分级控制,以根据不同情况产生不同调试信息

第四章 与smt移植相关的问题讨论

在本yhfddi网卡驱动程序中,smt的移植是极其关键的一部分,主要承担了驱动程序中硬件初始化和中断延迟处理。但由于smt是相对独立的软件,这样就有一个ndis wrapper与smt间参数传递的问题。所以本章主要讨论miniport驱动程序与smt的关系和移植smt过程中初始化的要求、中断处理的要求,ndis wrapper与smt如何传递参数。

(一)miniport fddi网卡驱动程序与smt的关系。

在第一章已经谈及网卡驱动程序主要实现osi参考模型中的物理层和mac层。而对于fddi网络的物理层又可分为介质相关子层和介质无关子层。

对于我们的fddi/pci是基于x.3.19、x3.148、x3.166和x3.229而实现的。

smt在整个iso七层模型中属低两层范畴。下图是iso模型与fddi层次的对应关系,从而可知fddi miniport驱动程序在nt网络结构中的位置。

即在windows nt fddi网卡驱动程序应包含smt,实现fddi拓扑环上的站管理。

而在驱动程序内部smt主要是在miniport驱动程序中的中断延迟处理上边缘服务中实现的,也可以说是将smt嵌入中断延迟处理程序中,实现ndis接口对smt的正确调度。

yh-fddi驱动程序的实现可分为硬件无关部分和硬件相关部分。

移植smt过程中初始化的要求.

这里的初始化主要是指硬件初始化,包括寄存器的初始化和数据结构的初始化,由smt共用的硬件相关例程库中硬件初始化部分来完成. 我们在开发过程序是调用fddi_main(bdd_t*bdd)这个函数来调用smt共用的硬件相关例程库的.可见使用fddi_main(bdd_t*bdd)时,需要传递bdd这个参量,而bdd_t这个数据结构的定义如下:

它包含了各类硬件寄存器的基址,所以要对其进行正确赋值就必须首先在nt的内存中映射一块虚存与网卡内存相对应,也就实现了bdd_t结构的赋值,对fddi_main(bdd_t *bdd)的正确调用.

因此,我们在调用fddi_main前首先将网卡上寄存器内存空间映射到nt的虚存空间上,并将bdd结构正确赋值.以映射bsi_phy_base为例,具体过程如下:

pchar destination;

bdd_t *bdd;

ndis_physical_address physicaladdress;

ulong baseaddress;

ndis_status status;

baseadress =0x0d0000+bsi_phy_base;

ndissetphysicaladdresshigh(physicaladdress,0);

ndissetphysicaladdresslow(physicaladdress,baseaddress);

status=ndismmapiospace(

(pvoid *)&destination,

miniportadapterhandle,

physicaladdress,

bsi_phy_len

);

bdd->bsi_vir_base=(pchar) destination;

adapter-> bdd->bsi_vir_base= bsi_vir_base;

/*对adapter结构中的bdd结构赋值,以便在其它上边缘函数中使用这些虚存基地址*/

中断处理要求.

对于中断处理,在smt中主要调用cspintrhandandler()来实现.我们的fddi网卡驱动程序是miniport方式的,若在isr中做此处理将占用大量系统资源,使系统崩溃,所以我们采用只在isr中进行中断的排队,而在dpc中调用cspintrhandler()来完成中断处理.

在中断处理方面还有一个中断屏蔽和中断使能的问题,这两方面smt并不提供,故我们要正确处理.

具体处理方法见第三章.

ndis wrapper与smt间参数如何传递.

miniport方式的网卡驱动程序中,网卡上有中断时,系统反映给ndiswrapper,再由wrapper调度中断处理上边缘服务实现中断处理,在我们的yhfddi网卡驱动程序的中断具体处理是smt完成的所以在调用cspintrhandler时应将adapter结构传进smt以便在以后应用.

如在处理接收中断时,处理的最后应调用ndisindicatefddireceive,向ndiswrapper指示以接收到一个数据包,而ndisindicaterfddireceive的调用需要adapterminiporthandle作为参数,这就必须一级级从中断延迟处理函数(yhfddi handleinterrupt)中将adapter结构传递下来. 当然,其它方面如发送,也会有类似的问题需要考虑.

总之,对于smt的移植,需要详尽的在程序中做好接口,才能实现与

smt的数据交换.

结束语

ndis规范在网络两层间提供了一个统一界面,ndis对网络本身而言,是一个带有协议功能的标准接口,对实现者而言,它应该是一个环境,这种环境不仅带有协议功能,更重要的是带有和软、硬平台无关的核心功能支持,它不会受软、硬平台的变化严重影响,无疑,它是软件的移植和兼容的可靠保证,ndis把网络的一部分共性抽象出来,并根据具体的操作系统实现系统和平台相关的基础库以保证ndis的标准性和对开发者提供最大的功能支持,这也将加速和规范开发过程,但是,在操作系统之上提供ndis基础库获得标准同时也失去直接作用于操作系统带来的灵活性以及更强的功能支持,同时,ndis处于网络中层和低层之间,低层网络的快速发展和ndis对网络部分共性的抽象必然导致ndis对实现者的滞后,例如ddk3.51提供的ndis开发环境只支持10m以太网、fddi、令牌网(802.5)、localtalk、arcnet等,而对新出现的快速以太网及atm不提供支持,这对我们如何在ndis环境下实现诸如atm的lan emulation,ip over atm、快速以太网带来很大问题。

smt是实现fddi网卡驱动程序的关键,然而由于应用ddk开发miniport驱动程序时要遵循其结构框架,所以要想完整地按其结构移植smt,就必须分解smt适应之,即要求对smt有一个很好的理解。但smt是庞大的给开发带来了一定的困难。

参考文献

【1】《device driver kit用户手册》

【2】《device driver kit核心驱动程序设计》

【3】《device driver kit网络驱动程序设计》

【4】《windows nt核心内幕》

网卡驱动程序范文第2篇

Abstract: Windows nt is a fully functional operating system, with a fully integrated ability of networking, it started in the network model of the MAC son layer, network interface card (network interface card as nic or after nic drivers) stay in it. Through the network card related the Windows nt and network connected, but until the late 80's, many transmission implementation of the protocol is restricted to the MAC layer interface of unique realization, because the MAC layer defines the agreement and nic conversion between mechanism.

中图分类号:TP311 文献标识码:A 文章编号:

对于高速网络fddi(fiber distributed data interface)网卡驱动程序还需要smt(station management)站管理功能的实现,否则将不能作为一个fddi站连入环结构中,只能实现点到点间的数据通信。故有必要将smt软件移植到网卡驱动程序中,这将又导致对miniport nic驱动程序编程框架的破坏,于是有必要形成fddi网卡驱动程序(包含smt)与windows nt操作系统的良好接口──由逻辑网卡的注册和mac层驱动程序的初始化来完成。

所以,本课题旨在深入研究应用microsoft公司的ddk(device driver kit)将smt移植于windows nt的fddi网卡驱动程序过程中如何注册miniport nic驱动程序。即怎样正确注册逻辑网卡和mac驱动程序的初始化。着重讨论与初始化相关的上边缘函数的使用和调用关系以及初始化过程中遇到的各种问题的具体解决。

1 windows nt环境下fddi网卡驱动程序

1.1 windows nt网络结构

1.1.1 windows nt网络体系结构

windows nt的网络体系结构是基于国际标准化(iso)制定的标准模型──开放式系统互连(open system interconnection:osi)参考模型分层建立的,这种方式有利于随时扩展其它功能和服务。

windows nt网络模型开始于mac子层,网卡驱动程序就驻留在其中。它通过相关的网卡把windows nt与网络连接起来。

这一网络体系结构包括两个重要接口──ndis接口与传输驱动程序接口(tdi)。这两个接口把两个层隔离开来,办法是相邻的部件只允许按单一的标准来写,不允许多重标准。例如一个网卡驱动程序(在ndis接口的下面)就不需要特地按每个传输协议来写它的代码块,恰恰相反,该驱动程序是写给ndis接口的,它通过符合ndis的相应传输协议来请求服务。这些接口包含在windows nt的网络体系结构中,用来容纳可移植、可互换的模块。

1.1.2 windows nt网络驱动程序

windows nt支持两种类型的网络驱动程序

 传输驱动程序

实现数据链路层中的逻辑链路控制子层协议和传输层协议。向 下与ndis接口,向上与tdi接口。

 网卡驱动程序

实现对物理层的管理和数据链路层中介质访问控制子层协议,通过ndis向下管理物理网卡,向上与传输驱动程序通信。

1.1.3 windows nt网卡驱动程序

windows nt环境下的网卡驱动程序也分为两种:

 miniport网卡驱动程序:miniport驱动程序只须实现与网络硬件相关的操作(包括发送和接收)。而所有底层网卡驱动程序的通用操作(如同步),一般由ndis接口程序来实现。

 full网卡驱动程序:full网卡驱动程序必须实现所有硬件相关和同步、排队等操作。例如,full网卡驱动程序为了响应数据接收,需要保持本身的捆绑信息,而miniport就可以由ndis接口库来实现。

在windows nt的早期版本中,full网卡驱动程序要求开发者实现许多底层操作,来处理多处理器的核心问题以及处理器、线程的同步,这样不同的开发者在大量重复着许多相同的工作。

而miniport网卡驱动程序允许开发者仅仅写一些与网络硬件相关的代码即可,而那些通用的函数由ndis接口库来实现,这样开发出来的驱动程序减少了不必要的工作。

1.2miniport驱动程序的结构

ndis接口规范了网卡驱动程序的实现,同时也对tdi驱动程序的实现提出了一定的要求。 miniport驱动程序包括驱动程序对象、驱动程序源代码和ndis接口库代码。windows nt ddk提供ndis.h作为miniport驱动程序的主要头文件,定义了miniport驱动程序的入口点、ndis接口库函数和通用数据结构。

1.2.1 miniport网卡对象

ndis用一个叫做逻辑网卡的软件对象来描述系统中的每块网卡,而逻辑网卡与windows nt设备对象的通信由i/o子系统来管理,描述网卡的设备对象包括相关的网络信息如名字、网络地址和网卡内存基地址等,它还包含与硬件相关的驱动程序状态数据(捆绑数目,捆绑句柄,包过滤数据库等)。ndis分配一个句柄到miniportinitialize这个上边缘函数的一个结构中,然后miniport网卡驱动程序将在以后提供这个句柄来给ndis调用,这个结构一直被ndis保持,并且对miniport驱动程序不透明。

1.2.2网络对象标识符

miniport nic驱动程序还需要维护一组对象,这些对象是系统定义的对象标识符(object idetifier:oid)来标识,以描述驱动程序的性能和当前状态信息。为查询这些信息,上层

驱动程序调用ndisrequest向ndis接口库指示oid。oid表示了调用所需的信息类型,如miniport驱动程序所支持的lookahead缓冲区大小等。ndis接到上层驱动程序的查询请求,将oid传递给上边缘函数miniportqueryinformation实现对oid的查询,如果上层驱动程序请求改变状态信息则调用miniportsetinformation实现对oid的设置。

1.2.3 miniport网卡驱动程序代码

典型的miniport nic驱动程序必须有一些函数来通过ndis接口实现上层驱动程序与硬件的通信。这些函数称为上边缘服务函数。

这些上边缘服务函数由驱动程序的开发者根据驱动程序面向的特定低层网络类型和硬件以及相应环境,可以有选择地实现,但必须保证驱动程序最基本的功能,这些基本功能包括初始化、发送、中断处理、重置、参数查询与设置和报文接收。

1.2.4 ndis接口库

ndis接口库包括在ndis.sys中,它是一个核态函数库,有一套抽象的函数,无论协议驱动程序还是nic驱动程序都连接到这个库中,以实现上下层之间的操作。

2 fddi网卡驱动程序的加载和运行

2.1 网卡驱动程序的安装

windows nt网卡驱动程序安装的目的是实现网卡相应硬件信息和驱动程序在windows nt注册库中的注册,使windows nt能够正确识别网卡,了解所必需的软硬件信息并能在windows nt启动时加载相应驱动程序。

网卡驱动程序安装时,首先在主群组的控制面板中选择“网络”,然后添加网卡,指定相应信息文件──oemsetup.inf的路径,以完成以下两个必要的操作:

复制驱动程序到相应的系统目录(windows nt根目录\system32\drivers\)中;

在windows nt注册库中存入相应软硬件信息。

2.1.1网卡一般硬件参数

对于fddi网卡,必须在编写其oemsetup.inf文件时确定以下硬件参数:

总线类型:pci(5)……括号中的数字5表示pci总线在ndis中的总线类型代码;

厂商代号:0x5588……系统加载时确定网卡的标记,也是编程时确定pci槽号的标识;

cfid: 0x01;

介质类型:光纤(3) ……括号中的数字表示光纤在ndis中的介质类型代码;

是否支持全双工:支持。

对于其它的硬件信息在此inf配置信息文件中可有可无,如若配置,则可在驱动程序的编写时利用这些信息,方便编程,同时有利于其它应用对其参数的确定和使用。

2.1.2 fddi网卡加载时需在注册库登录表里做的网络配置

网卡驱动程序的安装通常将创建登录表中的四个不同子键: software registrion键,对应于驱动程序,存在于hkey_local_machine\software\company\ productname\version中我们的fddi网卡驱动程序所对应的是hkey_local_machine\software\net612\yhfddi\yhfddi1.0;

网卡的软件登录键,存在于hkey_local_machine\software\microsoft\ windows nt\nt3.51\networkcards\yhfddi1;

驱动程序的服务登录键,存在于hkey_local_machine\system\currentcontrolset\services 网卡的服务登录键,存在于hkey_local_machine\system\currentcontrolset\services

对于每一个网络部件,一个名为netrules的特殊子键在邻近的驱动程序或网卡登录子键里创建,netrules标识网络部件为网络整体的一部分。

2.1.3编写inf信息配置文件

gui inf描述语言被windows nt用以书写系统所有部件的配置文件,当然也可以用以书写网络系统各部件的配置文件,该配置文件描述了网络部件安装、配置、删除的执行过程。当网络部件进行初始安装或二次安装(通常通过ncpa进行)时,安装程序读取部件对应的配置文件,进行解释执行。gui inf描述语言由节、命令、逻辑操作、变量规范、流程控制以及一套调用dll或外部程序的机制组成,其中,节是配置文件的主体,节可分为install节(类似于函数),shell节(也类似于函数,但可调用insall和shell节),detect节(不包含命令),一个配置文件一般由若干不同类型的节组成。驱动程序的开发者根据需要可以在配置文件中编写相应代码,使得用户和系统之间能进行交互,并且由用户决定一些配置参数。

nt网卡配置文件有其一套规范,驱动程序开发者必须按规范编写配置文件,一般来说,一个配置文件至少应该提供下面三个节:

安装入口点:[identify]shell节。该节主要功能是给出安装部件的类型名,系统通过它识别该部件属于哪一大类(display,mouse,scsi,network等)中的哪一类(网络adapter,driver,transport,service,network和netprovidor),同时,还需要给出映像文件和配置文件所在的源介质及标识。

[returnoption]shell节。系统执行安装identify节后,执行该节。它主要功能是检查所需安装的部件是否支持的硬件平台和语言,并给出网卡名(有些配置文件支持多类网卡,此时必须让用户进行选择,并获得选择结果)。

[installoption]shell节。该节是配置文件得主体,也是上次安装完后再次进行配置、删除、更新的入口点。主要功能是拷贝映像文件和配置文件,生成配置的各种选项,创建该部件在注册库中对应的各种登录子树并更新重写。

2.2 驱动程序的加载过程

2.2.1 windows nt的启动过程

第一阶段:调入装入程序。和硬件平台相关,x86机器首先由rom装入根扇区,再由根扇区装入ntldr;

第二阶段:硬件检测。x86机器调ntdetect程序最大限度地获取各种硬件设备信息,引导hal及基本卷设备驱动程序,以便引导nt内核;

第三阶段:获取注册库中各种控制信息,如用户定义的非页内存大小;第四阶段:初始化

注册库 \registry\machine下system和hardware并创建currentcontrolset,为装入相关硬件设备驱动程序作准备;

第五阶段:装入基本核心驱动程序;

第六阶段:释放一些已经完成使命的装入初始数据块;

第七阶段:进一步初始化注册库,以便有些依赖于基本核心驱动程序的上层驱动程序能顺利装入;

第八阶段:服务控制器装入应该由该服务控制器装入的各种驱动程序。

2.2.2 fddi网卡驱动程序的加载过程

在windows nt启动的第五个阶段,将加载核心驱动程序。而对于ndis网卡驱动程序是在ndis接口(ndis.sys)加载后调入运行,向ndis wrapper注册、初始化、查询设置参数等。

windows nt启动时,相应的实体如nt的服务控制器根据注册库中yhfddi驱动程序的配置注册信息,初始化ndis wrapper,并装入相应的驱动程序,生成驱动程序管理块结构,申请内存以保存各种信息,向ndis wrapper注册驱动程序。初始化和注册完毕后,再由服务控制器读取注册库中相应的链接信息。

在ndis wrapper和yhfddi驱动程序初始化和注册成功后,ndis wrapper根据系统相应的注册信息,加入和yhfddi驱动程序所对应的fddi网卡,同时读入网卡的注册信息,并进行网卡注册和网卡初始化。

在以上过程成功后,wrapper将查询和设置驱动程序的各种参数,了解驱动程序对哪些操作支持,决定对上层驱动程序的支持范围。

2.3 fddi网卡驱动程序的注册

driverentry函数是windows nt ddk规定的核心驱动程序的入口点,wrapper识别到入口点后,调入驱动程序,在driverentry函数内完成两个基本注册任务:

调用ndisminitializewapper函数向ndis接口报告驱动程序将以miniport类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回ndiswrapperhandle,驱动程序保存这个句柄,以利后来调用ndisxxxconfiguration和initialization等函数。

填写ndisxx_miniport_characteristics属性结构,主要记录ndis版本号和驱动程序支持的miniportxxx函数的入口点,然后调用ndismregisterminiport函数实现驱动程序的整体注册。

2.4网卡驱动程序对象查询与设置

如果ndis的管理实体要查询或设置一个特定的网络对象,它必须提供一个32位的oid。

一般的和特定介质的oid被记录在windows nt ddk中,对于这些oid ddk文本指明了相关的对象能否通过miniportqueryinformation查询参数和通过miniportsetinformation设置参数。

oid也可被分为操作特性(如多目地址表长度参数)和统计参数(如广播包接收)。最后oid可分为必须的和可选的两种。

oid的前三个字节表明oid的不同类别,而最后一个字节确定这一类别内特定的信息管理对象。

针对于fddi网卡,被查询的oid的第一个字节为0x03。而ndis所查询的介质相关参数为:

0x03010104 oid_fddi_long_max_list_size

0x03010108 oid_fddi_short_max_list_size

0x03010102 oid_fddi_long_current_addr

0x03010106 oid_fddi_short_current_addr

tcp/ip传输驱动程序所要查询的fddi oid为:

0x03010102 oid_fddi_long_current_addr

0x03010103 oid_fddi_long_multicast_list

0x03010107 oid_fddi_short_multicast_list

通过以上两阶段的查询,ndis和tcp/ip驱动程序就分别了解了网卡驱动程序对其的支持,从而进行相应的捆绑,以便数据传输时正确选择网卡驱动程序。

2.5开发环境与调试方法

开发环境:

fddi网卡驱动程序的开发环境为nt server 3.51,sdk,ddk for workstation 3.51, vc++4.1,硬件平台为586。

调试平台:

主机为nt server 3.51,windbg32

目标机为nt workstation3.51 (check 944)

调试方法:

利用dbgprint把目标机上关键信息通过串口传到主机进行分析,以得出ndis驱动程序的调度机制和运转状况;

利用assert产生异常断点,由主机对异常进行控制

自定义宏,进行分级控制,以根据不同情况产生不同调试信息

3与smt移植相关的问题讨论

在本yhfddi网卡驱动程序中,smt的移植是极其关键的一部分,主要承担了驱动程序中硬件初始化和中断延迟处理。但由于smt是相对独立的软件,这样就有一个ndis wrapper与smt间参数传递的问题。所以本章主要讨论miniport驱动程序与smt的关系和移植smt过程中初始化的要求、中断处理的要求,ndis wrapper与smt如何传递参数。

3.1miniport fddi网卡驱动程序与smt的关系

在第一章已经谈及网卡驱动程序主要实现osi参考模型中的物理层和mac层。而对于fddi网络的物理层又可分为介质相关子层和介质无关子层。

对于我们的fddi/pci是基于x.3.19、x3.148、x3.166和x3.229而实现的。

smt在整个iso七层模型中属低两层范畴。fddi网卡驱动程序应包含smt,实现fddi拓扑环上的站管理。

而在驱动程序内部smt主要是在miniport驱动程序中的中断延迟处理上边缘服务中实现的,也可以说是将smt嵌入中断延迟处理程序中,实现ndis接口对smt的正确调度。

yh-fddi驱动程序的实现可分为硬件无关部分和硬件相关部分。

3.2移植smt过程中初始化的要求.

这里的初始化主要是指硬件初始化,包括寄存器的初始化和数据结构的初始化,由smt共用的硬件相关例程库中硬件初始化部分来完成. 我们在开发过程序是调用fddi_main(bdd_t*bdd)这个函数来调用smt共用的硬件相关例程库的.可见使用fddi_main(bdd_t*bdd)时,需要传递bdd这个参量,而bdd_t这个数据结构的定义如下:

它包含了各类硬件寄存器的基址,所以要对其进行正确赋值就必须首先在nt的内存中映射一块虚存与网卡内存相对应,也就实现了bdd_t结构的赋值,对fddi_main(bdd_t *bdd)的正确调用.

因此,我们在调用fddi_main前首先将网卡上寄存器内存空间映射到nt的虚存空间上,并将bdd结构正确赋值.以映射bsi_phy_base为例,

中断处理要求.

对于中断处理,在smt中主要调用cspintrhandandler()来实现.我们的fddi网卡驱动程序是miniport方式的,若在isr中做此处理将占用大量系统资源,使系统崩溃,所以我们采用只在isr中进行中断的排队,而在dpc中调用cspintrhandler()来完成中断处理.

在中断处理方面还有一个中断屏蔽和中断使能的问题,这两方面smt并不提供,故我们要正确处理.

4结束语

ndis规范在网络两层间提供了一个统一界面,ndis对网络本身而言,是一个带有协议功能的标准接口,对实现者而言,它应该是一个环境,这种环境不仅带有协议功能,更重要的是带有和软、硬平台无关的核心功能支持,它不会受软、硬平台的变化严重影响,无疑,它是软件的移植和兼容的可靠保证,ndis把网络的一部分共性抽象出来,并根据具体的操作系统实现系统和平台相关的基础库以保证ndis的标准性和对开发者提供最大的功能支持,这也将加速和规范开发过程,但是,在操作系统之上提供ndis基础库获得标准同时也失去直接作用于操作系统带来的灵活性以及更强的功能支持,同时,ndis处于网络中层和低层之间,低层网络的快速发展和ndis对网络部分共性的抽象必然导致ndis对实现者

的滞后,例如ddk3.51提供的ndis开发环境只支持10m以太网、fddi、令牌网(802.5)、localtalk、arcnet等,而对新出现的快速以太网及atm不提供支持,这对我们如何在ndis环境下实现诸如atm的lan emulation,ip over atm、快速以太网带来很大问题。

smt是实现fddi网卡驱动程序的关键,然而由于应用ddk开发miniport驱动程序时要遵循其结构框架,所以要想完整地按其结构移植smt,就必须分解smt适应之,即要求对smt有一个很好的理解。但smt是庞大的给开发带来了一定的困难。

参考文献

【1】《device driver kit用户手册》

【2】《device driver kit核心驱动程序设计》

【3】《device driver kit网络驱动程序设计》

【4】《windows nt核心内幕》

【5】《windows nt资源》之三《性能评测》

网卡驱动程序范文第3篇

关键词: linux;WLAN;无线网卡;驱动程序

中图分类号:TN967 文献标识码:A 文章编号:1671-7597(2012)0910013-01

0 前言

无线局域网是当前应用范围较广的一种无线接入技术,其最大的优势在于运行速度快以及灵活程度高,对基于linux的无线局域网产品进行研发已经成为当前的一大热点课题。

1 WLAN无线网卡及linux网络设备

1.1 WLAN无线网卡

WLAN,即无线局域网,其重要组成部分之一就是无线网卡,也就是通信网络接口卡,无线局域网除无线网卡之外的另一重要组成部分是接入点/桥接器。借助无线网卡硬件及软件可以确保无线局域网物理层及MAC层的实现;不仅如此,无线网卡还为用户设备提供与接入点/桥接器进行连接的接口。当前应用无线网卡的主要方式是PCMCIA以及CF卡,Atmel芯片组是USB设备无线网卡的基础,除此之外的绝大部分无线网卡都是依托于Intersil Prism或Lucent Hermes芯片组的。无线网卡一大关键硬件就是以802.11标准为设计依据的MAC协议处理芯片,对其性能的要求主要体现为以下两方面:一方面,需要具备将所接收到的来自于射频模块的信号转换为主机所能接收的数据格式能力,另一方面,还需要能够对所接收到的来自于驱动程序的数据包进行转换,并以802.11标准数据包形式传输给射频前端。MAC层全部功能借助MAC协议处理芯片均可以得以实现,对于用户而言,在使用过程中只需要添加memory以及对应的物理层,便可以得到一个完整性的无线局域网连接。

1.2 linux网络设备

处于便于管理的考虑,linux全部硬件设备被划分为字符设备、块设备以及网络设备等三大类。

2 基于linux的无线网卡驱动程序结构及设计方案

无线网卡的种类繁多,网卡不同,相应的支持硬件也有所区别,这也就决定了编写驱动程序也不尽一致。简言之,USB接口的网卡不需要任何模块的支持,CF及PCMCIA接口的网卡驱动需要有Card Service(CS)模块支持,Orinoco接口的网卡除此之外还需要Hermes模块加以辅助。在参考程序的选择上,笔者在此以cisco 350系列pcmcia无线网卡驱动为主,且已将其成功安装在笔记本电脑中,同时其收发包数据格式已通过airopeek测试;以orinoco.c,mpi350.c及Tenda 7722u USB设备驱动程序为辅。和传统的以太网卡驱动程序设计相比较而言,无线网卡中诸如开关网卡、加载及卸载模块等并无明显区别,因此,笔者只选择驱动中诸如函数初始化、收发数据等具有无限特色的内容进行介绍,这些也是驱动程序的核心。

2.1 网卡初始化

网卡初始化就是对网卡存在进行检测,主要内容就是对设备结构进行初始化,并将其在系统中进行登记。通常情况下,在对某网卡设备进行登记时,核心会自动发出初始化请求。

初始化函数主要具有以下功能:

1)在初始化程序中,以硬件特征为主要依据,对硬件存在与否进行检测,并作出是否将该驱动程序予以启动的决定;

2)对request-irq及request-region进行调取,完成I/O基地址以及设备中断号的登记,同时对其进行检测;

3)填充硬件帧头,这也是驱动程序的一项重要工作内容。通常情况喜爱,硬件会将自身硬件帧头添加到待发送的上层数据前,例如以太网就拥有添加在上层ip或ipx数据包前的14字节的帧头。驱动程序提供hard-header方法,该程序会在协议层进行数据发送前被调取。应在dev->hard header len填入硬件帧头的长度信息,以便协议层预留出必要空间,此时hard-header程序只需要对skb-push进行调取同时准确填写硬件帧头即可;

4)负责对设备结构所接收到的大多数的域段进行填写。以太网接口很多设备结构网络接口信息的设置都是借助ether setup()函数得以实现的,该函数已被归入linux内核内部函数,无需特别指明。

2.2 数据包传输

分析OSI七层协议不难发现,在应用层具有数据传输需求的情况下,数据包传输方向是从上到下的,同时在各层都会添加对应的帧头,最终借助dev queue xmit()函数将数据包传输至网络接口。网络接口的作用就是向网卡传送数据包,以确保物理传输的顺利实现。根据设备结构可知,所有的网络接口都具有dev- > hard start xmit硬件传输函数指针,其主要作用是辅助linux进行数据传输。Cisco352驱动程序需要在hard start xmit函数中进行的工作主要有:

1)确定一个未经使用的FID,并将其添加到MAC芯片链表中。这部分是Cisco352驱动程序的特色之一。

2)对802.11控制域的结构体struct TXHDR-CTRL进行填充,从而为802.11帧头的构建奠定坚实基础。

3)对来自于协议层的帧格式进行判断,并将帧头长度确定下来。根据802.11协议,无线网卡只可以对三种帧格式进行传输,分别是数据帧hdrlen=30;管理帧hdrlen=24;控制帧hdrlen=16或10。

网卡驱动程序范文第4篇

>> 第三次亲密 接触下载就用SD卡! 卢卡申科第三次当选白俄罗斯总统 与怒江的三次亲密接触 第一次亲密接触 SD卡紧急启动恢复 第三次单身浪潮 宜昌第三次机遇 苏州第三次转型 第三次机会 第三次表白 华为第三次革命 东湖“第三次崛起” 神舟第三次启程 中联:第三次搏击 第三次华丽转身 霍金第三次来京 第三次相逢 第三次流浪 第三次创业浪潮 第三次起航 她第三次自杀 常见问题解答 当前所在位置:I”下载一款制作好的Windows PE镜像。之后在windows XP中运行Ghost32 exe程序,依次选择“local”“disk”“fromimage”,在打开的弹出窗口中,选择之前下载到的windows PE GHO镜像文件。确定后在选择要恢复的分区时,选择将其恢复到SD卡上(如图10)。

步骤2 由于这个Windows PE专做下载之用,因此还要为它安装上本本的网卡驱动。对此可运行“智能光盘驱动2008”,单击“驱动备份”,按提示选择上网卡驱动,点击“下一步”将网卡驱动提取到“D:\本机驱动程序备份\WinXp”文件夹中(如图11)。完成后使用winRAR打开提取出的网卡驱动,将其中的NET目录解压到D盘下备用。

步骤3 现在运行“xcab.exe”系统封包程序,在打开窗口中,定位到“待压缩”栏,并输入要添加的网卡驱动所在文件夹,这里为“d:\net”。在“保存为”输入栏内,键入SD卡上Windows PE系统“外置程序”目录的位置,这里为“e:\外置程序\PE_OUTERPART\DRlVERS_NET01.CAB”(如图12)。完成后点击“压缩”按钮,即可将当前网卡驱动重新压缩为CAB文件,并放置在Windows PE的“外置程序”目录下。这样当进入Windows PE系统后。便可自动安装好本本的网卡驱动。

步骤4 现在重启Windows XP系统,进入本本BIOS设置窗口,将SD卡设置为第一启动设备。保存退出后,本本即可由SD卡启动到Windows PE系统,双击桌面上的“启动网络支持”图标。Windows PE便会自动加载网络服务和本本的网卡驱动。当成功加载后,可看到网络配置窗口(如图13)。

小提示

如果Windows PE提示无法安装网卡时,可手动为其安装网卡驱动。方法是右击点击“我的电脑’选择“管理”命令,在打开窗口中切换到“设备管理器”标签,单击菜单栏上的“查看””显示隐藏设备”,之后转到右侧窗格中,依次展开“others device”“以太网控制器”,在其上右击选择“更新驱动程序”,在弹出窗口中选择“在这些位置搜索最佳的驱动程序”,然后勾选上“在搜索时包含这个位置”,并在输入栏内键入“c:\windows\lnf”路径,这样即可自动搜索硬盘上Windows XP的网卡驱动,接着按提示指定驱动文件位置“c:\Wlndowsksystem32\drivers”,就可成功安装网卡。注意在安装完成后,系统提示是否需要重启时,一定要选择“否”。

步骤5 一切就绪,只要双击桌面上的“宽带连接”图标,按提示输入ADSL帐号密码就可以联机上网了。现在再来试试是否能够进行下载操作,点击“开始”“程序”“聊天下载工具”“迅雷5.0”(如图14),之后在网上找到要下载的电影和软件。点击下载链接后便可使用迅雷开始下载了。注意在选择下载文件保存路径时,要将其保存到SD卡上,这样才不会对硬盘进行读写操作。

步骤6 考虑到要整夜下载软件,所以尽管此时本本上的硬盘已不在有读写操作,但为更好保护本本硬盘,达到节能、降温、减噪的效果,此时不妨将硬盘关闭。对此,如果是采用SATA接口硬盘的本本,可在Windows PE系统托盘中,点击“安全删除硬件”图标,在弹出的提示条中选择硬盘即可将其关闭。

小提示

网卡驱动程序范文第5篇

就象UNIX,Linux支持的网卡主要是以太网卡。如3COM、ACCTON、AT&T、IBM、CRYSTAL、D-LINK等众多品牌的以太网卡只要安装配置正确,都可以得到你所期望的效果。

一、Linux中网卡的工作原理

为了将这个问题说明的更清楚一些,不妨先简要地剖析一下Linux是如何让网卡工作的。一般来说,Linux核心已经实现了OSI参考模型的网络层及更上层部分。网络层的实现依赖于数据链路层的有效工作。网卡的驱动程序就是数据链路层与物理层的接口。通过调用驱动程序的发送例程向物理端口发送数据,调用驱动程序的接收例程从物理端口接收数据。

1.网卡驱动程序

简单地说,要将你手中的网卡利用起来,你唯一要做的是得到这块网卡的驱动程序。驱动程序提供了面向操作系统核心的接口和面向物理层的接口。

驱动程序的操作系统接口是一些用于发现网卡、检测网卡参数以及发送接收数据的例程。当驱动程序开始运作时,操作系统首先调用检测例程以发现系统中安装的网卡。如果该网卡支持即插即用,那么检测例程应该可以自动发现网卡的各种参数;否则你就要在驱动程序运作前,设置好网卡的参数供驱动程序使用。当核心要发送数据时,它调用驱动程序的发送例程。发送例程将数据写入正确的空间,然后激活物理发送过程。

驱动程序面向物理层的接口是中断处理例程。当网卡接收到数据、发送过程结束,或者发现错误时,网卡产生一个中断,然后核心调用该中断的处理例程。中断处理例程判断中断发生的原因,并进行响应的处理。比如当网卡接收到数据而发生中断时,中断处理例程调用接收例程进行接收。

2.驱动程序工作参数

驱动程序的工作参数因网卡性质的不同而不同,大致包括I/O端口号、中断号、DMA通道、共享存储区等。输入输出端口号又被称为输入输出基地址,当网卡工作于端口输入输出模式时被使用。端口输入输出模式需要CPU的全程干预,但所需硬件及存储空间要求较低。CPU通过端口号指定的空间与网卡交换数据。中断号是网卡的中断序号,只要不与其它设备冲突即可。当网卡使用DMA方式时,它要使用DMA通道批量传输数据而不需要CPU的干预。

对于一块具体的网卡,如果网卡支持完全自动检测,那么一个参数也不用指定,驱动程序的检测例程会自动设定所需参数。一般情况,你需要人工设定这些参数的一部分。如果你的网卡使用端口输入输出模式,你要设定端口号和中断号。如果你的网卡使用DMA模式,你要设定DMA通道和中断号。如果你的网卡使用共享存储区的模式,那你就得设定共享存储区的地址范围。

3.驱动程序的使用方式

有了网卡的驱动程序后,你可以选择是把驱动程序加入到Linux核心之中还是把驱动程序加工成独立模块。Linux系统一个引人入胜的长处就是可以定制系统的核心。把需要频繁调用的功能加入系统核心,可以大大提高系统的效率。在这种情况下系统启动时,系统核心自动加载网卡的驱动程序。驱动程序的参数可以通过LILO命令参数加以指

定。系统启动后驱动程序永久驻留核心,不能用常规的方法将其卸载。至于定制的系统核心,是通过重新编译得到的;如何编译核心将在后文叙及。

如果把驱动程序编译成可装载模块,就可以用系统提供的命令在系统启动后随时加载。随时加载的好处是减少内存开销,易于管理,但同时也牺牲了一点网络传输的效率。驱动程序的参数是在命令行中直接输入或通过配置文件指定。二、网卡安装前的准备在安装网卡前,务必检查是否具备下列条件:

1.硬件方面

以太网卡

网络连接线及连接头,如10base-T一般为8芯双绞线配RJ-45接口

2.软件方面

Linux操作系统

网卡驱动程序(目标码或源代码)

*网卡配置程序

*软件开发工具,如GNU工具包(包括编译器gcc、make等)

3.系统配置信息

可用的端口地址

可用的中断号

以上不带星号标记的是必要条件,带星号的是视情况不同而要求的条件。具体情况在下面进一步说明。

三、网卡的安装及配置

第一步:配置以太网卡的工作参数

配置网卡就是配置网卡的工作参数,如端口地址、中断号等。网卡的缺省参数一般存储于网卡内部的EEPROM,这是网卡出厂前设置好的。缺省参数在大多数情况下是可行的,但如果这些参数与你的系统有冲突并且网卡又不支持软件动态设置,那么你就要使用网卡的设置程序。并不是所有的网卡都要经过这一步,因为有些网卡支持通过驱动软件及其输入参数来确定网卡的工作参数。可以通过查阅网卡使用说明书来确定这一点。

网卡的设置程序与驱动程序不同,设置程序仅仅用来对网卡EEPROM中的设置进行修改。网卡程序本身可能运行在其它操作系统下,如WINDOWS95/98、OS/2、DOS等。如果是非Linux平台,那你就先在适合设置程序运行的系统中安装网卡,按设置程序说明设置网卡参数。然后再在Linux系统下安装该网卡。

第二步:安装Linux系统

假如你将要安装以太网卡的Linux系统本身还未安装,那么可以先试着在安装Linux的同时安装网卡。这一步成功的前提是你的Linux发行版本包含将要安装的网卡的驱动程序。

运行Linux的安装程序,按提示进行操作,别忘了安装核心的网络部分。当进行到LAN配置时,安装程序会列出它支持的所有网卡的类型。看看你的网卡是否榜上有名。随着Linux发行版本的不断升级,目前RedHat6.0已经覆盖了常用的网卡类型。如果很幸运地你的网卡恰好在其中,那么下文讨论的很多步骤都可以不必考虑了,安装程序会自动完成网卡的安装与驱动。但如果没找到适用于你的网卡类型,也不必担心,继续下一步。

第三步:手工安装网卡

安装网卡也就是安装网卡的驱动程序。网卡要工作必须要有驱动程序,并且驱动程序越成熟越好。驱动程序一般由网卡的生产或供应商提供。由于Linux是一个起步不久的新兴操作系统,网卡的生产商并不一定提供Linux环境下的驱动程序。这时候你就得从其它途径想办法了,比如到INTERNET上专门提供硬件驱动程序的网站查找一下,也可以在新闻组上贴个求助信息。总之,只有得到网卡的驱动程序后,方可进行下一步。

网卡的驱动程序有两种类型。一是可直接使用的二进制代码;另一种是驱动程序的源代码。二进制代码一般是预先编译好的可装载模块。源代码可以编译成可装载模块,也可以编译成系统核心的一部分。如何把源代码编译成可装载模块不在本文讨论之列,具体可以查阅驱动程序的说明书。

1.可装载模块的使用

系统提供了一组命令用于将驱动程序模块载入内存执行。这些命令包括modprobe、insmod、Ismod、rmmod。modprobe与insmod命令功能相似,但是方式各异。

modprobe命令使用配置文

件/erc/config.modules来加载可执行模块。要用modprobe命令加载以太网卡的驱动程序,可以在config.modules文件中加入:

aliaseth0drivermodule(drivermodule是驱动程序模块的名称)

这行配置信息把以太网卡的设备名与驱动程序模块联系起来。modprobe命令依据这条信息,自动加载存放于/lib/library/xxxx/net目录下名为drivermodule.o的模块。因此要使modprobe命令找到驱动程序模块,必须将该模块放在/lib/library/xxxx/net目录下。

那么驱动程序的参数如何指定呢?还是使用conf.modules文件。方法是在接着上述配置信息的后面加入下行信息:

optionsdrivermoduleparml=valuel,parm2=value2,……

这里parm1是驱动程序可以接受的参数名,valuel是该参数值;依次类推。

比如optionscs89x0io=0x200irq=0xAmedia=aui

insmod命令直接通过命令行参数将驱动程序模块载入内存,并可以在命令中指定驱动程序参数。例如:

insmoddrivermodule.oparml=valuel,parm2=value2,……

以上两个命令中可以使用驱动程序参数要依据具体的网卡及其驱动程序而定,要仔细阅读网卡及驱动程序的说明书。有的网卡驱动程序可以用这些参数覆盖网卡本身EEPROM中存储的参数。有的则必须使用EEPROM中的参数。有的因为驱动程序不自动检测网卡使用的参数,所以还得把网卡使用的EEPROM中的参数传给驱动程序。

卸载驱动程序模块使用rmmod命令:

rmmoddrivermodule.o

2.把驱动程序编译入系统核心

除了以可装载模块的形式使用驱动程序,还可以把驱动程序编译进Linux核心,以获取更高的效率。这种方式需要驱动程序的源代码、Linux核心源代码及其编译工具。Linux核心的编译过程包括配置核心、重建依赖关系、生成核心代码等步骤。配置核心的过程是用系统提供的配置工具(makeconfig或makemenuconfig)重新生成用来编译核心的众多make文件的过程。为了让核心的配置工具了解你的网卡驱动程序,你需要修改一些核心的配置文件。

(1)修改配置文件:主要修改核心源代码目录下的四个文件,即drivers/net/CONFIG文件、drivers/net/Config.in文件、drivers/net/Makefile文件和drivers/net/Space.c文件。CONFIG和Config.in文件用于控制核心配置工具(makeconfig或makemenuconfig)的运行,主要是加入关于是否包括该网卡的支持提示。Makefile和Space.c文件用于编译核心代码并说明面向核心的接口。详细语句参见下面例子。

(2)运行核心配置工具:在核心源代码目录下执行makeconfig或makemenuconfig命令。makeconfig是面向命令行的,通过逐句回答提问来配置核心。由于其在配置过程中不可改变或撤消以前的回答,故多有不便。makemenuconfig则是通过窗口菜单方式,使用起来很方便。就本文而言,你只要在上一步中正确修改了配置文件,那么在config中会出现是否需要该网卡支持的提问,你选择‘y’。或者在menuconfig中的network菜单中出现表示该网卡的菜单项,把它选上即可。

(3)重建依赖关系:很简单,执行makedep和makeclean命令。

(4)生成核心代码:执行makezImage命令。这个命令开始真正编译核心代码,并把核心代码存放为arch/i386/boot目录下的zImage。

(5)为了使用新的核心代码,你需要用新的核心代码替换原有的。原有的核心代码一般存放在/boot目录下,文件名称类似于vmlinuz-v.s.r-m(v.s.r-m)表示核心的版本号)。如vmlinuz-2.0.34-1。执行下列命令:

cparch/i386/boot/zImage/boot/vmlinuz-v.s.r-m

为了安全起见,可以先把原有的核心代码做个备份,以便发生错

误时恢复。

至此,你可以重新引导系统以使用新的带有正确网卡驱动支持的Linux核心。唯一剩下未解决的是驱动程序的参数问题。有些网卡驱动程序如果不输入参数,那它工作就会不正常,甚至根本不工作。由于现在网卡的驱动程序是系统启动时由核心载入运行的,系统启动之后用户就很难改变这些参数了,所以你必须在系统启动时告诉Linux核心网卡驱动程序使用的参数。具体方法有两种:

(1)在系统引导程序LILO中输入。

在LILO开始引导系统时,用ether子命令设定以太网卡驱动程序的参数。ether命令的使用方式为:

LILO:linuxether=IRO.BASE_ADDR,NAME

这里带下划线的是要输入的部分,IRQ表示中断号,BASE_ADDR表示端口号,NAME表示网卡的设备名。例如:linuxether=15,0x320,eth0

(2)在LILO配置文件中设定。

每次在系统启动时再输入驱动程序参数似乎有点过于麻烦。幸好系统提供了LILO的配置文件可以用来永久性的设置Linux系统启动时的子命令。方法是在/etc/lilo.conf文件中的适当位置加入以下一行:

append=“ether=IRQ,BASE_ADDR,NAME”

这里带下划线部分的意义同上。加入这一行后,还需要用/sbin/lilo命令把这个配置写入引导程序。

第四步:网络配置及测试

安装完网卡就可以配置网络通信了。配置网络简单地就是使用ifconfig命令,

例如:

ifconfigeth01.2.3.4netmask255.0.0.0up

最后ping一下网上其它机器的ip地址,检查网络是否连通。

五、一个以太网卡安装实例

下面以Cirrus公司生产的CrystalCS8920以太网卡为例,详细说明上述安装配置过程。本例中,有些命令参数,如核心源代码目录等,是以我使用的系统环境为出发点。具体应用中还要加以本地化。为了更接近实际,例子中也包括了对安装中碰到的问题的描述。

1.此网卡是IBMPC机的内置式网卡,机器只提供了Windows95/98环境下的驱动程序。由于RedHat5.0发行版本尚未提供对此网卡的直接支持,所以从Cirrus的站点上找到并下载了该网卡驱动程序的Linux版本,是一个名为Linux102_tar.gz的压缩文件。

2.文件Linux102_tar.gz解压后包括五个文件。包括源代码,仅适用于Linux2.0版本的目标模块以及readme文件。

3.查阅readme文件后,了解到这个驱动程序只能使用网卡EEPROM中设定的端口号(I/O基地址)、中断号。为了知道网卡EEPROM的设置,又从Cirrus站点下载了该网卡DOS版本的设置程序setup.exe

4.在DOS中运行setup.exe,发现网卡的起始端口号为0x360,中断号为10,与别的设备有冲突。选择setup.exe程序的相应菜单,把中断号改成5。另外,此驱动程序不支持plugandPlay,故也在setup.exe中将网卡的PnP功能屏蔽掉。

5.我所使用的RedHat5.0的Linux核心版本为2.0.34,所以不能用现成的驱动程序目标模块,需要自己动手编译。如上文所述,有两种方式使用此驱动程序。

6.如果要编译成独立模块,执行下列命令:

gcc-D_KERNEL_-I/usr/src/linux/include-I/usr/src/linux/net/inet-Wall-Wstrictprototypes-02-fomit-frame-pointer-DMODULE-DCONFIG_MODVERSIONS-ccs89x0.c

编译结果是名为cs89x0.o的驱动程序目标模块。要装载此驱动程序,输入下列命令:insmodcs89x0.oio=0x360irq=10

要卸载此驱动程序,用rmmod命令:

rmmodcs89x0.o

7.如果要将驱动程序编进系统核心,

修改/usr/src/linux/drivers/net/CONFIG,加入:

CS89x0_OPTS=

修改/usr/src/linux/drivers/net/Config.in,加入:

tristate‘CS8920Support’CONFIG_CS8920

以上两行是为了让makeconfig在配置过程中询问是否增加CS8920网卡的支持。修改/usr/src/linux/drivers/net/Makefile加入:

ifeq((CONFIG_CS8920),y)

L_OBJS+=cs89x0.o

endif

修改/usr/src/linux/drivers/net/Space.c,加入:

externintcs89x0_probe(structdevice*dev);

……

#ifdefCONFIG_CS8920

&&cs89x0_probe(dev);

#endif

以上两段是为了编译并输出网卡驱动程序及其例程。

把驱动程序源代码拷到/usr/src/linux/drivers/net目录下。

在/usr/src/linux目录下执行makeconfig或makemenuconfig,选择核心CS8920网卡支持。

执行makedep、makeclean命令。最后用makezImage编译Linux核心。

如何设置核心驱动程序参数,上节已有说明,不再赘述。

六、结束语

网卡驱动程序范文第6篇

系统默认安装

同Windows 7系统一样,Windows 8系统内部集成了许多网卡芯片的驱动,将无线网卡插到电脑上后,系统会发现硬件并自动安装驱动,稍等片刻后,右键点击桌面上的“计算机”并选择“管理”。 点击设备管理器,即可看到网卡已经被正常识别(如图1)。

在Windows 8 Metro界面下,我们可以直接用鼠标左键点击桌面右下角的无线网络连接图标,即可打开无线信号列表。选择对应自己无线路由器的无线信号并点击连接按钮,输入无线信号的密码后点击下一步,稍等片刻,就可以通过无线方式上网了(如图2)。

手动安装驱动

而当遇到Windows 8系统不能直接识别无线网卡的时候(如图3),的确有部分网卡并未直接推出Windows 8系统驱动,这就需要用户手动为USB网卡安装驱动了。

遇到这样的情况可尝试手动安装该网卡,对应Windows 7系统的驱动看是否可以正常使用。登录USB网卡官方网站,下载Windows 7系统的驱动程序,解压缩后放在桌面备用。接下来在设备管理器的黄色标识的设备上点击右键,选择“更新驱动程序软件”。选择“浏览计算机以查找驱动程序软件”,再点击“浏览”,找到驱动程序所在的文件夹后,点击“确定” (如图4)。

在安装过程中,如果出现“Windows安全”提示窗口,点击选择“始终安装此驱动程序软件”即可。大多数USB无线网卡是可以在Windows 8系统下使用Windows 7系统驱动的,当然,对于TL-WN821N、TL-WN822N一类实在无法实现顺利安装驱动的USB网卡,就需要用户更换或者等待官方推出相应驱动程序了。

让你偷懒的驱动精灵

网卡驱动程序范文第7篇

>> 谁才是“总管”?四款资源管理器软件大比拼 四大“总管” 谁才是班级管理的主人 乱战!谁才是杀毒软件之王? 燃油总管、喷嘴密封试验器设计 行政管理:“大总管”生涯 谁更好用? 主流显卡监控超频软件大比拼 谁最称手?常用浏览器大比拼 Q-Dir让你用上四个资源管理器 基于Android的资源管理器设计 资源管理器不能随机启动 开启资源管理器的“大视野” 简单又实用,巧用资源管理器 Windows资源管理器下岗 资源管理器 这样用更高效 打开资源管理器提示错误等 DOS如何打败资源管理器的 资源管理器也要多标签 为资源管理器增加标签 A43“PK”资源管理器 常见问题解答 当前所在位置:I”下载一款制作好的Windows PE镜像。之后在windows XP中运行Ghost32 exe程序,依次选择“local”“disk”“fromimage”,在打开的弹出窗口中,选择之前下载到的windows PE GHO镜像文件。确定后在选择要恢复的分区时,选择将其恢复到SD卡上(如图10)。

步骤2 由于这个Windows PE专做下载之用,因此还要为它安装上本本的网卡驱动。对此可运行“智能光盘驱动2008”,单击“驱动备份”,按提示选择上网卡驱动,点击“下一步”将网卡驱动提取到“D:\本机驱动程序备份\WinXp”文件夹中(如图11)。完成后使用winRAR打开提取出的网卡驱动,将其中的NET目录解压到D盘下备用。

步骤3 现在运行“xcab.exe”系统封包程序,在打开窗口中,定位到“待压缩”栏,并输入要添加的网卡驱动所在文件夹,这里为“d:\net”。在“保存为”输入栏内,键入SD卡上Windows PE系统“外置程序”目录的位置,这里为“e:\外置程序\PE_OUTERPART\DRlVERS_NET01.CAB”(如图12)。完成后点击“压缩”按钮,即可将当前网卡驱动重新压缩为CAB文件,并放置在Windows PE的“外置程序”目录下。这样当进入Windows PE系统后。便可自动安装好本本的网卡驱动。

步骤4 现在重启Windows XP系统,进入本本BIOS设置窗口,将SD卡设置为第一启动设备。保存退出后,本本即可由SD卡启动到Windows PE系统,双击桌面上的“启动网络支持”图标。Windows PE便会自动加载网络服务和本本的网卡驱动。当成功加载后,可看到网络配置窗口(如图13)。

小提示

如果Windows PE提示无法安装网卡时,可手动为其安装网卡驱动。方法是右击点击“我的电脑’选择“管理”命令,在打开窗口中切换到“设备管理器”标签,单击菜单栏上的“查看””显示隐藏设备”,之后转到右侧窗格中,依次展开“others device”“以太网控制器”,在其上右击选择“更新驱动程序”,在弹出窗口中选择“在这些位置搜索最佳的驱动程序”,然后勾选上“在搜索时包含这个位置”,并在输入栏内键入“c:\windows\lnf”路径,这样即可自动搜索硬盘上Windows XP的网卡驱动,接着按提示指定驱动文件位置“c:\Wlndowsksystem32\drivers”,就可成功安装网卡。注意在安装完成后,系统提示是否需要重启时,一定要选择“否”。

步骤5 一切就绪,只要双击桌面上的“宽带连接”图标,按提示输入ADSL帐号密码就可以联机上网了。现在再来试试是否能够进行下载操作,点击“开始”“程序”“聊天下载工具”“迅雷5.0”(如图14),之后在网上找到要下载的电影和软件。点击下载链接后便可使用迅雷开始下载了。注意在选择下载文件保存路径时,要将其保存到SD卡上,这样才不会对硬盘进行读写操作。

步骤6 考虑到要整夜下载软件,所以尽管此时本本上的硬盘已不在有读写操作,但为更好保护本本硬盘,达到节能、降温、减噪的效果,此时不妨将硬盘关闭。对此,如果是采用SATA接口硬盘的本本,可在Windows PE系统托盘中,点击“安 全删除硬件”图标,在弹出的提示条中选择硬盘即可将其关闭。

小提示

如果本本采用的是lDE接口硬盘,那么可在Windows PE系统中,右键点击“我的电脑”,选择“管理”,在打开窗口中依次展开“存储”“磁盘管理”链接,之后在右侧窗格的各个硬盘盘符上,逐个点击右键选择“更改驱动器号和路径”,并在弹出窗口中单击“删除”按钮,将所有硬盘盘符删除。这样即可在windowsPE中进行下载操作时避免数据的读写,从而使硬盘处于“停用”状态。

第四次亲密接触SD卡全面加速系统

使用过Windows Vista的朋友,可能知道其带有一个“ReadyBoost”功能,它能够利用高速闪存存储设备来加速系统。而由于本本内存槽有限,加到2GB内存后基本就占满了,这时把手中的高速SD卡拿出来用作加速,可是个额外提升性能的不错选择。

SD卡为Windows XP加速

由于Windows XP系统没有内置ReadyBoost功能,因此要想获得同等的效果,就要借助“eBoostr”这款软件。除此之外,用来做加速的SD卡必须是SDHC高速产品,本本上的读卡器也要工作在USB 2.0接口上。

步骤1 安装并运行“eBoostr”,完成后系统将会重新启动并自动打开程序设置窗口,此时可在“选择装置”栏中的下拉列表内,选取本本上的SD卡,并设置“选择快取大小”为一个较合适的范围。比如这里采用4GB的高速SD卡,就可选择1GB空间用于系统加速(如图15)。

步骤2 设置完成后,单击“确定”按钮,程序便开始设置加速参数并切换到控制台窗口,在这里将显示当前硬盘负载等参数。现在同时运行多个大型程序,看看运行速度是不是有了明显提升呢(如图16)。

SD卡启动ReadyBoost

如果使用了Windows Vista系统。那么其已内置了“ReadyBoost”加速功能,只要将其开启并应用在SD卡上即可。对此,可在本本上插入SD卡后,打开“我的电脑”,右键点击SD卡盘符选择“属性”,然后在打开的属性窗口中切换到“ReadyBoost'’标签,选择“使用这个设备”单选框,接着在“用于加快系统速度调节的保留空间”选项中,拖动滑块选择适当的存储空间用作加速即可(如图17)。

小提示

要在Windows Vista中激活“ReadyBoost”功能,所使用的SD卡要支持在4K随机读取时不低于2.5MB/s或512K随机写入时不低于1.75MB/s的传输率,并保证带有64MB到8 GB的空闲空间。

因为开启“ReadyBoost”功能需要SD卡具备一定条件。所以当某些兼容性较差的SD卡插入本本后,在windows Vista系统下可能会自动屏蔽“ReadyBoost”功能。如果确认SD卡为高速产品,这时可手动开启该功能。

步骤1 插入SD卡,并切换到“ReadyBoost”设置窗口后,如果系统提示该设备无法用于加速,那么可取消系统默认勾选的“插入设备时不要再测试此设备”复选框,并单击“确定”退出(如图18)。

步骤2 在“运行”栏中执行“regedit”命令,打开注册表编辑器,接着在上方搜索列表选中regedit,右击选择“以系统管理员身份运行注册表编辑器”,之后依次展开“HKEY_LOCAL_MACHlNE\SOFTWARE\Mic rosoft\Wlndows NT\CurrentVersion\EMDMgmt”分支。双击右侧窗格中的“DveviceStatus”子键,在弹出窗口中将其键值修改为“2”。

步骤3 现在再次插入之前无法加速的SD卡,在弹出的自动播放窗口中,选择“加速我的系统”(如图19),之后打开“ReadyBoost”设置窗口,在其中就可以开启并设置该功能了。

网卡驱动程序范文第8篇

关键词:Ghost;多播;克隆;系统恢复

中图分类号:TP319文献标识码:A文章编号:1009-3044(2011)24-5928-03

A Shell Extension of Ghost Software for Network Multicast Clone

LUO Hai-feng

(School of Politics and Public Administration, Shaoguan University, Shaoguan, 512005, China)

Abstract: This paper analyzes the start process and command-line format in the Ghost software cloning process, makes a shell extension of the Ghost software by using the C programming language. Through the application of software at boot stage, The Ghost setup and operating procedure is automatically set to simplify the Ghost software, make it possible to restore large numbers of computer system rapidly in a LAN (Local Area network). The article also introduce the client universal boot disk production, and the implementation process of the network multicast cloning.

Key words: Ghost; multicast; clone; system restore

Ghost是著名的硬盘复制备份工具,具有硬盘克隆、硬盘分区备份、系统安装等功能。Ghost一对多的克隆方式,可通过TCP/IP网络协议可同时从一台电脑上克隆多台电脑的硬盘数据,使Ghost具有网络安装功能。通常称为Ghost的网络多播克隆技术。

使用Ghost,管理员可以在数分钟之内把一个操作系统镜像或者应用程序部署或者恢复到另一台PC机器上。利用多播技术远程克隆多个计算机,可实现快速、安全、批量地恢复操作系统。

1 简介

同一个计算机实验室内的机器,可能硬件配置不一致,但软件环境要求都是相同的。面对这种应用环境,为了实现多播克隆,有两个关键步骤:一是“样机”的准备。先做好一个通用的系统“样板”,再针对不同硬件配置的计算机分别安装不同的设备驱动程序,每种样机需要备份出一个.gho文件;二是如何引导计算机进入准备克隆状态。计算机启动到准备克隆状态,需要运行一系列命令。每台机器需要执行的启动命令都不一样,因为网卡不同的机器需要不同的网卡驱动程序,同一批次克隆的每台机器也需要分别赋以不同的IP地址。这一系列命令如果使用手工输入,将会非常繁琐,工作效率低。经过试验,采用C语言编程实现引导命令的自动生成,制作出通用的引导光盘,使客户端进入准备克隆状态的过程尽量减少手工键盘输入,系统维护工作变得易行、快速、高效。

2 实现方法

多播克隆进行系统恢复的步骤是,首先在服务器运行多播服务器程序,选择要广播的.gho文件,执行一个会话(Session),等待客户机的连接。需要恢复软件系统的计算机(称为客户机)使用网络引导盘启动,连接到多播服务器,处于准备克隆状态,等待接受数据。所有客户机都连接好后,在多播服务器程序窗口选择“发送”(Send),即可将操作系统样板多播发送到每个客户机。克隆过程完成后,客户机重新启动,修改机器名和IP地址,软件系统的恢复宣告完成。

下面对引导客户机启动进入到准备克隆过程的实现方法进行论述。

2.1 客户机的引导过程

客户机可采用光盘启动、U盘启动、软盘启动或硬盘启动等多种方式。引导过程分成启动进入Windows 98命令行界面、运行网卡驱动程序、运行ghost程序三步。

以光盘启动为例,光盘根目录下的内容有Windows 98引导程序文件、网卡驱动程序和ghost程序。下面是Win98启动盘自动批处理文件(autoexec.bat)的实例:

@echo off

prompt $p$g

0x60 rem 运行网卡驱动程序

set ghostip=wintcp.cfg rem 该句句用来指定该计算机使用的配置文件

ghost.exe rem 运行ghost程序连接多播服务器进行克隆

其中是8139网卡的封包驱动程序。封包驱动程序是介于TCP程序与网卡之间的桥梁,以软件中断呼叫的方式提供一个标准的界面服务。网卡不同的机器需要不同的网卡驱动程序,该程序可在网卡的驱动程序软盘上找到。

配置文件wintcp.cfg用于设置ghost.exe程序的运行参数(IP地址、子网掩码、网关),典型内容如下:

IP = 192.168.0.10

NETMASK = 255.255.255.0

GATEWAY = 192.168.0.1

同一批次克隆的每台机器也需要分别赋以不同的IP地址。若服务器安装有DHCP服务,有可自动给每台机器分配IP地址,则配置文件wintcp.cfg的第一行可以略去。也可以采取程序交互方式,由用户手工指定IP地址。多播服务器同时也作为网关,按默认设置将该机的IP地址修改为192.168.0.1。

ghost.exe是客户机进行网络克隆的执行程序。由于程序运行过程中需要对配置文件wintcp.cfg进行写操作,在制作启动盘时要求设置成将以上所有程序和文件装载到内存虚拟盘中存放和执行,这样还能保证程序执行速度非常快,在程序启动后、ghost程序运行前还能将光盘(或U盘、软盘)取出放到其他机器上运行,这样一张引导盘能够同时引导多台机器。

2.2 Ghost的命令行参数

为了使克隆过程自动进行,减少人工干预,可在执行ghost程序时使用命令行参数。多播克隆时涉及的命令行参数如下:

1) -rb本次 Ghost 操作结束退出时自动重启。

2)Csure对所有要求确认的提示或警告一律回答“Yes”。

3) 这是实现 Ghost 无人备份/恢复的核心参数。使用语法为:

-clone,mode=(operation),src=(source),dst=(destination),[SZE(size),SZE(size)...]

此参数行较为复杂,且各参数之间不能含有空格。其中 operation意为操作类型,值可取:copy:磁盘到磁盘;load:文件到磁盘;dump:磁盘到文件;pcopy:分区到分区;pload:文件到分区;pdump:分区到文件。Source 意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。Destination 意为目标位置,值可取:驱动器号,从 1开始;或者为文件名,需要写绝对路径。

例如输入以下命令:

ghost Cclone,mode LOAD,src=@MCa,dst=1 Csure -rb

表示从网络会话a克隆系统到本机第1个硬盘,不询问,完成后重启系统。

2.3 引导程序的设计

在本设计中引导程序取名为go.exe,存放在启动盘根目录。该程序的任务是引导客户机进入到准备克隆状态。

引导程序分成三部分:

1) 选择并运行网卡封包驱动程序。为了将引导程序做成一个通用的程序,能引导实验室所有装有不同的网卡的机器,需要事先在网卡的驱动程序软盘上提取相应的程序。例如8139网卡的封包驱动程序名称为“”。

为了便于扩充,将网卡名称和对应的驱动命令成对存放在文本文件“netcard.txt”中,当增加新的网卡时,只需将新的驱动程序添加进指定目录,并修改网卡信息文件“netcard.txt”即可。如果用户愿意,甚至可将网卡命名为自己习惯的名字。网卡信息文件示例如下:

//网卡描述与驱动程序指引文件。由程序读入。

//Script=:网卡描述。Driver=:DOS下网卡驱动命令,必须跟在上一行Script之后。

Script=Realtek RTL8139(A) PCI fast Ethernet Adapter

Driver=RTSPKT 0x60

Script=Realtek RTL8139 Family PCI fast Ethernet NIC

Driver=RTSPKT2 0x60

Script=Macronix MX987x5 Family Fast Ethernet Adapter

Driver=MX32PD 0x60

Script=Accton En1207D Series PCI fast Ethernet Adapter

Driver=ACCPKT 0x60

Script=D-Link DFE-530TX fast Ethernet Adapter

Driver=DLKFET 0x60

2) 生成配置文件wintcp.cfg。如果局域网有DHCP服务器,则可以采用固定格式的配置文件,文件内容只有两行,“NETMASK = 255.255.255.0”和“GATEWAY = 192.168.0.1”,无需用户干预。对于手工设置IP地址的情形,只需键入一个1~255之间的数,生成形如“IP = 192.168.0.*”的字符串添加进配置文件wintcp.cfg中,作为IP地址的配置。其中“*”号代表输入的数字(通常是机器编号)。

3) 运行带命令行参数的Ghost程序命令。命令实例见上一小节。

引导程序采用TC 2.0进行了编程实现,代码并不复杂,主要用到了读写文本文件函数和调用外部命令函数system()。

2.4 客户端通用引导盘的制作

首先按常规方法制作出DOS启动盘,在自动批处理文件autoexec.bat的最后面添加一行“go”,调用上一小节编制出的go.exe程序。

再将引导程序go.exe,网卡信息文件netcard.txt,客户端克隆程序ghost.exe,各种网卡的封包驱动程序包括、、等复制到启动盘根目录。

通过以上两步,引导盘制作完毕,已经可以使用了。

实现过程中使用WinImage、WinISO、NERO等软件配合,将以上所列内容制作成引导光盘。需要注意的是,引导程序go.exe运行时会写配置文件wintcp.cfg,而光盘是只读的。解决办法是光盘启动初始阶段在计算机内存中建立一个虚拟盘。

由于提取了本实验室现有各种网卡的封包驱动程序,该引导盘能引导所有计算机通过网络连接到多播服务器,进入准备克隆状态。因此称之为“客户端通用引导盘”。

3 网络多播克隆的实施

准备好了克隆服务器、样板计算机的.gho映像文件,以及客户端引导盘,接下来就可以实施网络多播克隆了。

事先将服务器IP地址设置为“192.168.0.1”,然后启动多播克隆服务器程序GhostCast Server,在服务器程序界面的会话名“Session Name”框中,输入会话名称“a”(与引导程序中ghost的命令行参数相一致)。选中加载到客户的单选框“Load To Clients”。在映像文件“Image File”框中,给出映像文件所在的路径,如输入“d:\system\P 4 2.4G\win2k.gho”。选中“Disk”单选框。单击接受客户“Accept Clients”按钮,等待客户机的连接。

克隆服务器启动后,客户机就可以开始连接服务器了。用按第2节实现方法制作的启动光盘启动计算机,出现下面的交互式界面(图1)。

键入“1”选择第1种网卡,出现以下提示行(图2)。

键入客户机编号(比如“10”)并按下回车键,就会自动连接上克隆服务器,此时在服务器端的窗口中可看见客户机10的地址,表示客户机10已经登录,等待服务器开始克隆。再用引导盘启动其他客户机,操作方法同上。当所有的客户机都连结上服务器后,就可以在服务器端按发送“Send”按钮,开始网络多播克隆(如图3)。

4 应用效果

由于界面易于使用,技术门槛降低,即使是非技术人员也能协助进行系统维护工作。每台客户机在引导过程只需要输入1到2个数字即可进入到克隆预备状态,在进行大面积系统恢复时更体现出高效率。以一个配备百兆以太网络的计算机房为例,每批同时克隆30~40台机,一个小时内可将这些机器的软件系统全部恢复完毕。本文所述方案在高校实验室成功应用两年多,减轻了实验室工作人员的工作压力,加快了计算机系统快速恢复的过程,也提高了工作效率,取得了很好的应用效果,对学校计算机实验室建设和管理工作有着积极的促进作用。

参考文献:

[1] 李欣.机房管理中Ghost软件的应用[J].实验室研究与探索,2004(6):14-16.

[2] 瞿波,陈伟.如何用GHOST进行网络多播克隆[J].计算机应用与软件,2004(9):115-117.

[3] 苏航,王勇军,于淼.基于Ghost软件的快速数据恢复方法的研究[J].科技资讯,2008(28):20.

[4] 王月,郑浩,宫豪,等.用Ghost软件快速备份和恢复操作系统[J].吉林师范大学学报:自然科学版,2009(3):154-156.

[5] 杨海瑞.浅谈机房使用GHOST恢复系统的方法[J].河套大学学报,2009(4):69-71,82.

[6] 王红珍,刘兴平.Ghost技术在机房系统维护中的应用[J].实验科学与技术,2011(2):61-62.

[7] 朱一茹.浅谈Ghost网络克隆技术在计算机机房维护中的应用[J].信息与电脑:理论版,2011(5):116-118.

网卡驱动程序范文第9篇

关键词: 时钟同步;IEEE1588;DP83640

中图分类号:TP39 文献标识码:A 文章编号:1006-4311(2012)23-0307-03

0 引言

IEEE1588协议以以太网为通信介质,通过主、从设备在网络上交互同步报文使得从设备能够不断计算出网络线路延迟和主从时钟时间偏差,并利用该时间偏差调整本地时钟,使本地时钟始终与主时钟保持一致以实现时间同步。

IEEE1588协议同步的精度取决于时间戳的精度。采用软件的方式在网络协议上层标记的时间戳会由于操作系统和网络协议栈的延迟带来较大误差。要实现高精度的时间同步就必须采用硬件辅助的方式在网络协议栈的最底层即物理层(PHY)为同步报文标记时间戳。

DP83640芯片是美国国家半导体公司推出的具备IEEE1588协议硬件支持功能的以太网物理层芯片,它内置一个精度为8ns的IEEE1588数字时钟,能够在报文发送和接收时精确标记时间戳。本文使用DP83640芯片在S3C2440A型ARM处理器和WinCE5.0操作系统构成的嵌入式系统环境下实现了IEEE1588协议,对两个节点进行同步测试,达到不低于50ns的同步精度。

1 硬件设计

DP83640是PHY芯片,不能直接与S3C2440A处理器通信,需要在二者之间加入MAC芯片。在本文中使用的MAC芯片是DM9000芯片,DM9000向上通过16位数据\地址复用总线与S3C2440A处理器连接,如图1所示;向下通过介质无关接口(MII)与DP83640芯片连接,如图2所示。

DM9000的IO基址IO base=(strap pin value of TXD [2:0]) *10H+300H。本文方案中TXD [2:0]均未设置上拉电阻,所以其IO base=0x300。DM9000的地址使能引脚AEN连接S-3C2440A的片选引脚NGSC4,所以DM9000处于S3C2440A的BANK4地址空间,而BANK4的起始地址为0x2000_0000,故DM9000在S3C2440A中的IO基址为0x2000_0300。

DM9000只通过两个IO端口与处理器通信,一个是地址端口,一个是数据端口。当CMD引脚为低电平时,处理器访问的是DM9000的地址端口,当CMD引脚为高电平时,处理器访问的是DM9000的数据端口。本文方案中DM9000的CMD引脚连接S3C2440A的ADDR2地址引脚,所以在S3C2440A内存空间中,DM9000的地址端口为0x2000_0300,数据端口为0x2000_0304。

DM9000内部已经集成一块PHY芯片,其PHY地址为00000B。在本文中,需要使用的PHY芯片是外接的DP83640芯片,因此通过为DP83640的RXD3引脚设置上拉电阻,为COL引脚设置下拉电阻,将DP83640的PHY地址配置为00010B。在需要访问PHY芯片时,使用PHY地址00010B即实现访问DP83640芯片,而不是访问DM9000内部的PHY芯片。

2 软件设计

软件设计分为两部分,一是由DM9000和DP83640构成的网络接口卡(NIC)的驱动程序设计,二是IEEE1588协议的软件实现。

2.1 网卡驱动程序设计 WinCE5.0操作系统下的网卡驱动程序应符合windows网络驱动接口规范(NDIS)。NDIS规范下的网卡驱动程序被称为微端口驱动程序,NDIS规定微端口驱动程序的入口函数为DriverEntry,操作系统通过调用该入口函数来装载驱动程序,在该函数中首先调用NDIS库函数NdisMInitializeWrapper通知NDIS L-ibrary要注册一个Miniport Driver,接着是创建并初始化一个NDIS_MINIPORT_CHARACTERISTICS结构体,最后调用NDIS库函数NdisMRegisterMiniport注册Miniport驱动和NDIS_MINIPORT_CHARACTERISTICS结构体。

在初始化NDIS_MINIPORT_CHARACTERISTICS结构体变量时,指定了8个供上层协议使用的回调函数:MiniportInitialize、MiniportReset、MiniportCheckForHang、MiniportInterruptHandler、MiniportISR-Handler、MiniportSend、MiniportQueryInformation和MiniportSetInformation。当DriverEntry函数返回时,NDIS立即调用MiniportInitialize函数来初始化网卡设备。MiniportReset函数用于复位操作。Miniport-CheckForHang用于报告网卡的状态和监控硬件的响应。MiniportInterruptHandler和MiniportISRHandler是中断服务例程和中断服务线程,用于中断处理。MiniportSend函数用于发送数据。MiniportQueryInformation

和MiniportSetInformation用于查询和设置网络配置

网卡驱动程序范文第10篇

关键词:无线局域网 Mobile WEP WPA

中图分类号:TN929.5 文献标识码:A 文章编号:1007-9416(2014)02-0151-02

1 引言

在移动互联网逐渐拓展的过程中,WLAN作为4G网络覆盖的最好补充,显示出价格低和带宽高的竞争优势,这是因为在4G部署初期,技术的限制决定其提供接入的速率有限,在这种情况下,已经较为成熟、成本低廉的WLAN就可作为快速实现移动宽带的一种比较现实、比较经济可行的途径,极大的完善用户体验,成为中国3G/4G发展的重要补充。在WLAN网络建设方面,各大运营商都已开始大力推进和实施。WLAN网络在电信运营层面的发展,会带动WLAN协议分析系统的市场发展。

2 Windows Mobile的系统架构

Windows Mobile 6.x是基于Windows CE 5.X的内核,所以此处重点介绍Windows CE 5.x的架构。架构图如图1:

如上图1所示,Windows CE的架构自下而上以此为:

硬件层:cpu,time,总线,ram,usb,串口,sdio,pccard等硬件控制器接口。OAL,驱动层:实现Windows CE对硬件的抽象。OAL是操作系统与硬件交互的核心层,在操作系统的启动,初始化和启动后开始管理进程等多个阶段都会用到,它主要是对cpu,cache,mmu,sdram,flash,串口,网络等操作系统启动和调试必须的设备进行初始化和管理。WinCE对各种I/O设备的管理是通过调用各种驱动程序来实现的,它一般讲驱动程序的架构设计为2个层次,上面的与硬件无关的逻辑层由微软来设计,下层与硬件相关的部分由OEM来实现,这样的话,微软设计的部分对所有具有共性的设备是通用的,而OEM的工作也简化了,只需要做和硬件原理和时序相关的部分。

操作系统核心功能:包括了进程,线程管理;虚拟,物理内存管理;文件系统;窗口系统;设备管理系统等操作系统的核心组件。

CoreDll:该层是用户应用程序与WinCE操作系统核心进行交互的调用接口。应用程序调用Win32的API,API函数再通过CoreDll提供的接口调用操作系统的功能,对于某些内核态的功能,此处会进行用户态到核心态的切换。

应用层:该层包括了大量的应用程序,包括WinCE自带的应用,OEM,第三方软件厂商的应用软件,最终用户也可以为自己的手机编写应用程序。

Windows Mobile操作系统是微软在此核心架构上,对应用层的相关组件,界面进行确定之后形成的PDA,智能手机专用操作系统。对于驱动程序开发者而言,Windows CE 5.x和Windows Mobile 6.x并没有什么大的区别。对于应用软件开发者而言,windows mobile上的界面具有智能手机的特点,所以只需在界面设计时注意与Windows CE的差别,但核心功能层则可通用。

3 WLAN协议分析系统的功能列表

(1)WLAN网络扫描功能:扫描空中的WLAN网络,并将网络的各个属性通过图形和列表的形式显示到界面上。(2)WLAN客户端的功能,可进行OPEN,WPA,WPA2等各种安全模式的接入。(3)接入过程中的WLAN安全协议的分析,在以某种安全模式进行接入时,可以按照协议的时序将所有安全协议包进行分析,并将解析的结果通过树,列表,二进制等形式呈现给用户。(4)WLAN接入过程信息显示,可将整个接入过程中的所有相关接入信息以列表和报表的形式呈现给用户。(5)WLAN接入故障分析,当接入AP失败时,系统可分析出失败的原因,并以列表和报表的形式呈现给用户。(6)分析报表管理,对加入过程报表,协议解析报表,接入过程报表,故障分析报表进行管理,方便用户分析WLAN网络。(7)空中接口协议分析,通过设置网卡为监听模式,抓取空中的WLAN协议和数据包,并以树列表等界面形式反馈给用户,方便分析当前WLAN网络的状况。

4 架构设计

图2为windows Mobile下的WLAN协议分析系统总体架构,自下而上分为如下几个模块:

(1)WLAN网卡:专用于智能手机和PDA的,能够同时设置接入和监听两种模式的WLAN网卡,一般为:Atheros,Marvell,Broadcom等几家公司的产品。(2)WLAN网卡驱动:需支持接入和监听两种工作模式,网卡驱动内部已支持了wep,wpa,wpa2等安全协议和加密算法,其设计是基于WinCE标准的NDIS架构。(3)网卡驱动实现了:网卡的配置,网络OID命令的实现,网络数据包的发送接收管理,mac层相关的实现,wlan安全协议和算法的支持等功能。(4)NDIS适配层,WinCE操作系统内部的组件,整个网络体系结构都是以NDIS为核心展开的。(5)NDIS WLAN协议驱动:该部分可基于WinCE提供的标准的NdisUio协议驱动进行修改,实现协议分析系统需求的功能:传递上层发送的OID命令和由网卡驱动返回的响应信息;协议包的过滤和收发;将网卡驱动向上传递的消息传递给上层模块;当网卡驱动处于监听模式时,将从空中抓到的协议包和数据包传递给上层的空中协议和数据分析模块。(6)WLAN空中协议和数据分析模块:该模块将网卡设置为监听模式,然后开始接收从空中抓到的实时协议和数据包,并分析这些包的格式,解析出各个字段,在GUI上通过树型结构,列表和二进制文本等形式将包的字段信息呈现给用户,协助其分析当前网络状况。(7)WLAN安全协议实现:该模块实现WEP,802.1X,WPA-PSK,WPA-ENTERPRISE,WPA2-PSK,WPA2-ENTERPRISE等安全协议。其中包括如下一些子模块:向上提供的控制接口;向上的消息传递模块,中间层消息循环和管理,驱动接口层,协议状态机管理,各个安全协议的具体实现,EAP,openssl等多个模块。(8)WLAN网络扫描模块:管理当前从周围扫描到的所有的AP的信息,并通过列表的形式显示出每个AP的网络名称,安全类型,信号强度,BSSID,信道,连接状态等属性。(9)WLAN网络接入模块:网络接入管理,控制和管理各种安全模式的网络接入。(10)接入过程协议分析:在接入网络的过程中,将收发的协议包进行解析,将用户关心的字段信息以树,列表和二进制等UI形式进行显示。(11)接入过程信息显示:通过与协议模块进行交互,将整个接入过程的所有接入信息进行管理并以报表的形式显示和存储。(12)接入故障分析:通过与协议模块,协议驱动,网卡驱动等模块的交互,等到有用的信息,之后进行分析和判断,得到故障的原因,并形成报表。(13)报表生成和打印模块:接收来自其它模块的分析数据,形式各种形式的报表,进行显示,存储,打印等管理。

5 结语

WLAN目前正处于蓬勃发展时期,已广泛应用于各个行业中。但是,随之而来的检测需求也越来越急迫。本论文主要研究了基于WINDOWS MOBILE的WLAN协议分析系统,对其进行了总体设计及软硬件实现,通过低成本检测系统的设计和推广,进一步推动WLAN的未来发展。

参考文献

[1]YD/T1484-2006.移动台空间射频辐射功率和接收机性能测量方法.

[2]YD/T1539-2006.移动通信手持机可靠性技术要求和测试方法.

[3]ISO/IEC 8802-11:2005 Information technology -- Telecommunications and information exchange between systems--Local and metropolitan area networks -- Specific requirements --Part 11:Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications.

[4]IEEE 802.11i,Standards for Local and Metropolitan Area Networks-Specific requirements-Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications:Medium Access Method (MAC) Security Enhancements.

上一篇:vb程序范文 下一篇:竣工验收程序范文