首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于ARM的无线网卡设备驱动设计
来源:本站整理  作者:佚名  2009-07-09 09:44:52



0 引 言
   
随着移动通信和便携通信的发展,无线局域网WLAN日渐普及。嵌入式系统中无线局域网的接入,既可以实现对嵌人式系统的无线控制和数据传输,又可以满足一些特殊应用的场合。这里通过对USB无线网卡的Linux设备驱动的深入理解和分析,成功地移植在Atmel 9261 ARM处理器上。实现了嵌入式系统的无线局域网接入。利用该平台,可以进一步设计完善医用伽马相机和小型SPECT设备的手持数据采集系统,使得控制人员能够远离数据采集现场,而通过远程终端来控制现场数据和各种控制信号,较好地解决了安全性问题。

1 硬件系统构成
1.1 USB无线网卡介绍

    无线网卡是无线局域网(WLAN)的重要组成部分,WLAN的物理层及MAC层是用无线网卡的硬件及其软件完成的,而LLC层以上各层均由计算机软件来实现。WLAN包括进行通信的网络接口卡(简称无线网卡)和接人点/桥接器(AP/网桥)。其中,无线网卡提供了最终用户设备(手持设备)与接人点/桥接器之间的接口。目前,无线网卡主要以PCMCIA,CompactFlash(CF)卡的形式广泛应用。大多数可用的无线网卡都是基于Intersil Prism或Lucent Hermes芯片组的,其中USB设备的无线网卡则由Ateml芯片组支持。该系统采用D-Link的WLG-122无线网卡,芯片组为Prism2,它通过USB host port接入。
1.2 系统构成
   
主控制器采用Atmel 9261,工作频率180 MHz,具有16 KB数据cache和16 KB指令cache,外接64 MBNAND FLASH和64 MB SDRAM,外围接口由10/100 Mb/s自适应以太网卡,3个USB 2.0接口,2个通用异步收发器(UART),LCD接口以及串行外围接口(SPI)等组成,可以方便地外接工作设备。操作系统采用Linux 2.6.15;Bootloader采用U-boot;根文件系统采用ramdisk。系统启动后挂载yaffs文件系统,该系统采用Ateml公司的Atmel 9261开发板,外围接口包括2个USB host接口,其中一个外接USB无线网卡。无线路由器采用Cisco-Linksys的WRTl60N,支持802.11g标准、TCP协议和TFTP协议,如图1所示。

2 USB无线网卡驱动
2.1 Linux USB驱动模块结构

    对于接入系统中的USB无线网卡,从CPU的角度首先看到的是USB总线,然后才是网卡芯片,所以USB驱动要先于网卡驱动实现。USB设备接口有主机端与设备端区别,因而USB驱动程序也有USB主机端驱动程序与USB设备端驱动程序之分。在主控机方面,主要有UHCI和OHCI两种规范。
    上层的应用软件对系统的USB设备进行访问是通过文件系统的形式进行的。每个连接到系统总线上的USB设备可以同时对应一个或多个驱动程序,即每个USB设备可以在Linux系统上设置一个或多个节点供应用程序使用。
    由于USB接口为主从方式和多设备连接的树状网络结构,所以USB主机必须具备对所有连接在总线上不同类型的USB设备进行配置管理的功能。LinuxUSB主机驱动程序可以同时支持多路USB总线功能,每路USB总线独立工作。USB主机驱动由USB主机控制器驱动(HCD),USB驱动(USBD)和不同的USB设备类型驱动三部分组成。图2描述了Linux USB驱动程序的结构。Linux定义了通用请求块(UniversalReqlaest Block,URB),用来在USB设备类驱动程序与USBD,USBD与HCD间进行数据传输。
2.2 LinUX网络驱动程序结构
    所有的Linux网络驱动程序都遵循通用的接口。设计时采用面向对象的方法,即一个设备就是一个对象(net device结构),它内部有自己的数据和方法。一个网络设备最基本的方法有初始化、发送和接收。Linux网络驱动程序的结构可以划分为网络协议接口、网络设备接口、设备驱动功能和网络媒介四层。网络驱动程序中最主要的工作就是完成设备驱动层功能,使其满足所需要的功能。
2.2.1 USB无线网卡驱动设备的访问和控制
    与PCI,ISA等设备不同,USB,1394等新一代总线没有IO/MEM映射、中断和DMA硬件资源,取而代之的是抽象出来的硬件资源概念。对USB设备来说,资源主要包括配置(configuration)、接口(interface)和端点(endpoint)。这些资源中,端点对于USB设备有着最重要的意义,实际的数据传输就是通过端点的读写实现的。驱动程序通过描述符来获取这些资源。在初始化时,USB驱动程序从设备端点0读取描述符,经过解析后保存这些资源的属性,为传输数据做准备。

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:280,496.10000 毫秒