ARM设计的无线网卡设备驱动技术
其中,open函数主要完成对描述网卡硬件数据结构pAd的初始化,包括urb包接收函数、接口配置函数、初始化发送接收数据结构和MAC地址拷贝函数,以及最后开始的net_dev数据发送接收函数。RTMPSend-Packets函数负责发送包装好的网络数据包。无线网卡驱动与USB core的通信则通过中断/批量的方式来传送。
3 编译与测试
3.1 无线网卡驱动编译
该系统的Linux内核版本为2.6.15,在宿主机上进行内核配置,通过“make menuconfig"将内核中不必要的功能去掉,增加对WLAN的支持。依次点击De-Vice Driver→Network device suppor→Wireless LAN(non-hamradio)→选中Wireless Lan driners(non-hamradio)&Wireless Extensions;然后进入通用USB-WLAN驱动程序源码,修改makefile,将内核文件夹选项重新定位在刚才编译好的Linux内核下,通过“make"在该文件夹下编译生成rt73.ko驱动模块。
在ARM嵌入式Linux开发中文件的传输方式有多种,比如TFTP服务和NFS文件系统。在此采用将rt73.ko驱动模块下载至开发板,由于Linux支持模块的动态加载,所以可以很方便地将该模块用“insmod”加载至内核,通过“lstood”查看加载的模块,之后rt73模块已经被成功加载。
在开发板文件系统中添加无线管理应用程序,和iwconfig,iwapy,iwlist等,用于配置频率、网络、ID、ES-SID、接受灵敏度、接人模式、无线网络标准、加密开关。
最后编写无线网络启动和自配置程序,实现自动配置IP地址和无线网卡。至此整个无线网卡驱动程序全部编译完成。
3.2 测试结果及分析
启动无线网络,编写测试带宽程序。该测试程序采用C/S设计模式,客户端运行在ARM开发板上,服务器运行在局域网内一台Linux PC上。改测试程序的工作流程主要如下,客户端分别发送不同大小的字节流,经服务器处理计算出对应的带宽,可以得到一条宽带曲线,进而得到网络实际能够达到的最大带宽。经反复测试,该无线网卡能够稳定工作,在距离AP 50 m的半径内下带宽为6 Mb/s,距离理论值54 Mb/s还有一定距离,具体原因正在分析中。测试结果如图3所示。
4 结 语
Linux作为当今市场上嵌入式系统使用比例最高的操作系统,其驱动模式支持模块堆叠技术,内核开发者已提供了一些通用模块。现从工程应用出发,研究并移植了Linux下USB无线网卡的设备驱动,以此为基础既可以构建嵌入式无线局域网,又可以用于有线网络无法延伸或难以安装,以及有可灵活移动和临时性使用等要求的、诸如外加摄像头和图像处理芯片的场合,还可以用于工业现场中的远程无线视频监控。
模拟电路 模拟芯片 德州仪器 放大器 ADI 模拟电子 相关文章:
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 利用GM6801实现智能快速充电器设计(11-20)