关于USB无线网卡的实现

本文主要介绍了USB无线网卡的实现方案,涉及基于微软NDIS框架下的网卡驱动开发,802.11无线协议开发,USB协议开发部分。NDIS框架式微软专门针对网络设备设计的接口。由于是USB接口,所以需要一个WDM的底层作为NDIS miniport驱动的物理访问接口。作为无线网卡,对802.11协议的实现是本文很重要的一个内容。

关键词:NDIS WDM USB 802.11

1,  项目介绍

本项目是USB无线网卡项目。内容涉及到硬件开发,驱动框架开发,802.11协议开发几个部分。

首先简单介绍硬件结构,硬件的实现方案如下图1-1网卡工作在半双工状态。USB接口依USB 2.0,采用ICSIIC9211芯片。物理层芯片使用Intersil公司芯片。MAC层控制引擎需要使用微码编程或嵌入CPU Core

 

 

作为一个新的项目,首先要列出开发的工作量,制定出合理的开发计划,将整个项目细分为几个小的项目,一步一步推进。下面介绍一下工作内容。

这些内容中,首先要解决的是USB通信问题,由于硬件接口为USB总线接口,所以必须要打通USB通道。微软windows系统中有专门的编程接口,我们只要将需要的功能封装成URBUSB Request Block)请求包,通过调用USBD class driver接口,将URB包发到下一层。最总由总线驱动与设备交互。

其次是开发NDIS miniport驱动框架。NDIS是微软的网络设备的开发库,提供了许多和网络设备相关的接口函数供调用。根据设计,本驱动为一个miniport类型的驱动,所以需要开发标准的miniport接口供系统调用。和传统的驱动一样,也是封装一系列的回调函数给系统,这些调用接口形式微软的NDIS规范已经定义好了。

       接下来就是对这些接口的完善。加入802.11协议内容,作为驱动的实体。由于intersil的芯片没有集成802.11协议功能,所以我们需要在软件中开发协议中的MAC层规定的内容。这部分也是我们驱动的主要内容。

802.11协议有三个主要状态。根据协议规范只有在关联的状态下,才可以进行数据通信。认证,加密是安全相关的,理论上与协议没有必然关系,802.11无线协议为了安全,将加密和认证也作为协议的一部分,从而使得其具有等同有线网络的安全级别。同时,802.11协议定义很多命令,如Probe request/responseBeaconAuthenticationDeauthenticationAssociationDeassociation等,程序的主体是一个状态机,只要发送相应的命令就可以进行状态切换,完成相应的功能。

       协议中涉及到AP列表的搜索,认证过程,关联过程,信道的切换等需要分别实现,分别是一个更细节的状态机。关于802.11协议详细内容请参考相关的文档。这里不多说了。下图1-2802.11协议的状态图。

 

 

       按照功能划分:可分为管理、控制和数据3种不同类型帧。Class 1Class 2&3 Frame的定义请参考802.11-1999

 

 

1,  Usb总线介绍

USBIntel公司开发的通用串行总线架构,以简单的设计,易用性,热插拔特性受到了广泛的欢迎,很多设备都开始支持USB规范。

    一个USB系统主要被定义为三个部分:USB的互连;USB的设备;USB的主机。

在任何USB系统中,只有一个主机。USB和主机系统的接口称作主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。

21 总线的拓扑结构


2-1显示了USB总线的拓扑结构。

 

 

标准USB规范有四根线,分别是电压正负极,两根数据线。外观为扁平的方形接口。USB传送信号和电源是通过一种四线的电缆,图2-2中的两根线是用于发送信号。电缆中包括VBUS、GND二条线,向设备提供电源 。VBUS使用+5V电源。

 

 

USB总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。在USB设备安装后,主机通过设备控制通道激活该端口并以预设的地址值给USB设备。主机对每个设备指定唯一的USB地址。

USB定义了一些请求命令,所有的USB设备在设备的缺省控制通道(Default Control Pipe)处对主机的请求发出响应。这些请求是通过使用控制传输来达到的,请求及请求的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。每个Setup包有8个字节。见表2-1

 

 

 

bmRequestType

    这个域表明此请求的特性。特别地,这个域表明了第二阶段控制传输方向。如果wLength域被设作0的话,表明没有数据传送阶段,那Direction位就会被忽略。

    USB说明定义了一系列所有设备必须支持的标准请求。这些请求被例举在表8-3中。另外,一个设备类可定义更多的请求。设备厂商也可定义设备支持的请求。

    请求可被导引到设备,设备接口,或某一个设备端结点(endpoint)上。这个请求域也指定了接收者。当指定的是接口或端结点(endpoint)时,wIndex域指出那个接口或端节点。

bRequest

    这个域标识特别的请求。bmRequestType域的Type啦可修改此域的含义。本说明仅定义Type 字位为0即标准设备请求时bRequest域值的含义。

wValue

    此域用来传送当前请求的参数,随请求不同而变。

wIndex

wIndex域用来表明是哪一个接口或端结点,图2-3表明wIndex的格式(当标识端结点时)Direction位在设为0时表示出结点,设为1时表示是入结点,Endpoint Number是结点号。图2-4表明wIndex用于标识接口时的格式。

 

 

 

wLength

    这个域表明第二阶段的数据传输长度。传输方向由bmRequstType域的

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值