当前位置:文档之家› 基于ARM的嵌入式Linux无线网卡设备驱动设计

基于ARM的嵌入式Linux无线网卡设备驱动设计

 万方数据

无线网卡驱动与USBco糟的通信是通过批量方式来传送的,其中通过URB(usbrequestblock)。调用重要的传输函数为intusb_submit_.urb(urb_t*urb)来实现数据间交换,其逻辑流程如图3所示:

图3URB数据传输逻辑流程

3.1.2无线网络接口实现

无线网卡驱动程序作为网络驱动程序,同样遵循通用的接口,通过net_device数据结构,实现无线网络数据的收发。对netdevice关键域的初始化如下:

netdev->open=usb_rtusb_open',//设定open函数

netdev->hanl_start_xmit=RTMPSendPackets',/!设定发送函数

netdev->stop2usb_rtusb

close'J!设定close函数

netdev->priv=pad;//设定私有数据为RTMP_ADAPI'ER

netdev->getstats=rt73_get_ether_stats'J/设定状态统计函数

对予无线网卡芯片的初始化、配置、设置参数与关闭,其实现方法是通过相应函数对寄存器赋值,比如对MAC寄存器的写操作由函数RTUSBWriteMACRegister实现。以下是两个主要方法的实现过程。

一220一图4驱动模块打开操作流程图

(1)open方法的实现

open方法由函数staticintusb_rtusb_.open(B劬ctnet_device

*net_dev)实现,首先鉴别probe函数返回值以确定设备是否存

在,然后初始化相关数据结构,注册所有的系统资源。流程图如

图4所示。

(2)hm'd_stm'txmit方法、rt73_get_ether_stats方法的实现

hard_start_xmit方法由删PSendPackets函数实现,记录发

送缓冲区状态。将帧结构放人发送队列,然后发送网络数据包。

rt73_get_ether..stats方法主要实现RTMP.ADAPTER中的stats方

法,统计数据发送和接收情况。

4.编译与测试

4.1开发环境搭建

嵌入式系统开发一般采用宿主机/目标机开发模式。即利

用宿主机(Pc)上丰富的软硬件资源以及良好的开发环境和调

试工具来开发目标板上的软件,然后通过交叉编译环境生成目

标代码和可执行文件,通过串口/USB/以太网等方式下载到目

标板上,利用交叉调试器监控程序运行,实时分析,最后将程序

下载固化到目标机上,完成整个开发过程。本设计的开发环境

如下:宿主机为装有RedHat9.0的LinuxPC,内核版本2.4.20。

目标板为Atmel9261开发板,在该目标板上移植了Linux2.6.15

内核,宿主机和目标机之间采用串口和以太网连接,便于调试

应用程序,USB无线网卡驱动的开发和设计基予以上的开发环

境。

4,2无线网卡驱动编译

Linux设备驱动属于内核的一部分。可以以两种方式编译

和加载进Linux内核。一种是直接编译进内核,随同Linux启动

时加载。另外一种是将设备驱动程序编译为一个可以动态加载

和删除的模块,使用insmod加载,rmmod删除,这种方式控制了

内核的大小,而模块一旦被插入内核,它就和内核其他部分一

样了。本设计的USB无线网卡驱动编译就采用第二种方式。

首先在宿主机上对内核进行配置,将内核中不必要的功能

去掉,在设备驱动选项里,增加对WLAN的支持,然后进入通用

USB-WLAN驱动程序源码,修改Makefile,将内核文件夹选项重

新定位在剐才编译好的Linux2.6.15内核下,最后在该文件夹下

编译生成rt73.ko无线网卡驱动模块。将rt73.ko驱动模块下载

至开发板,由于Lint=支持模块的动态加载,所以可以很方便的

将此模块用‘insmod’加载至内核,通过‘lsmod’查看加载的模

块,可以得知rt73模块已经被成功加载。

在开发板文件系统中添加无线管理应用程序。首先下载无

线管理程序源码,在宿主机上交叉编译,然后将生成的二进制

应用程序iwconfig,iwapy,iwlist等添加至根文件系统,这样就可

以在开发板上配置频率、网络、ID、ESSID、接受灵敏度、接入模

式、无线网络标准、加密开关等一系列操作。

最后编写无线网络启动和自配置程序,配置IP地址和无线

网关。至此整个无线网卡驱动程序全部编译完成。

4.3测试结果及分析

图5无线测试网络带宽(下转第223页)

 万方数据

 万方数据

相关主题
文本预览
相关文档 最新文档