历史上的今天
返回首页

历史上的今天

今天是:2025年07月02日(星期三)

正在发生

2021年07月02日 | ARM设计的无线网卡设备驱动技术

2021-07-02 来源:eefocus

随着移动通信和便携通信的发展,无线局域网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读取描述符,经过解析后保存这些资源的属性,为传输数据做准备。

2.2.2 USB网络设备驱动程序设计
USB无线网卡驱动程序首先向USB子系统注册自己,然后通过vendor id和device id来判断硬件设备是否已经插入总线,摄像头驱动程序需要创建一个



当无线网卡插入USB总线时,USB core就会调用Probe方法来检测被传递进来的信息,以确定无线网卡设备是不是与驱动程序匹配,同时填充struct net_device完成对该网络设备的初始化。当无线网卡被拔出时,USB core就会调用Disconnect方法来完成清除工作。驱动程序通过显示模块的初始化和消除函数注册与注销模块调用module_init来初始化一个模块,并在卸载时调用moduel_exit函数。


其中,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无线网卡的设备驱动,以此为基础既可以构建嵌入式无线局域网,又可以用于有线网络无法延伸或难以安装,以及有可灵活移动和临时性使用等要求的、诸如外加摄像头和图像处理芯片的场合,还可以用于工业现场中的远程无线视频监控。

推荐阅读

史海拾趣

Everspin公司的发展小趣事

尽管Everspin在初期经历了亏损,但随着时间的推移,其财务状况逐渐改善。特别是在XXXX年和XXXX年,Everspin的总收入和净利润均实现了显著增长。这一财务表现证明了Everspin在MRAM领域的领先地位和持续盈利能力。

High Voltage Power Solutions Inc公司的发展小趣事

随着技术的不断进步,Everspin不断推出新的MRAM产品,并逐渐将市场扩展到工业自动化、游戏、能源管理、通讯、运输和航空电子等多个领域。特别是其MRAM和STT-MRAM产品在数据中心、云存储、能源、工业、汽车和运输市场中的广泛应用,为全球MRAM用户奠定了最强大、增长最快的基础。

中科芯(CKS)公司的发展小趣事

近年来,面对全球芯片市场的激烈竞争和内外部环境的挑战,中科芯坚持创新驱动发展战略,加大市场开拓和科技攻关力度。通过优化产品结构、提升产品质量和降低成本等措施,公司实现了营业收入和净利润的稳步增长。一季度,中科芯的营业收入较正常年度增长24%,净利润增长83%,新签合同增长50%以上。这一成绩的取得充分展示了公司的市场竞争力和发展潜力。

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

中科芯自成立以来,一直致力于集成电路技术的研发与创新。在早期的发展阶段,公司成功研制了我国首块超大规模集成电路,这一里程碑式的突破标志着中国集成电路技术达到了国际先进水平。这一成果不仅填补了国内在该领域的空白,也为中科芯赢得了广泛的国际声誉,为后续的技术突破奠定了坚实基础。

Burr-Brown公司的发展小趣事

2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。

这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。

Alpha (Taiwan)公司的发展小趣事

随着全球电子市场的不断扩大,Alpha (Taiwan)公司积极寻求国际合作,拓宽市场渠道。公司与多家国际知名电子企业建立了战略合作关系,共同研发新产品,开拓新市场。此外,公司还积极参加国际电子展会,展示公司的最新技术和产品,吸引更多的潜在客户。这些国际合作的开展,不仅提升了公司的国际影响力,也为公司的长远发展注入了新的动力。

问答坊 | AI 解惑

在台式数字电子秤的课程设计中 可以用哪些类型的信号放大器?

对于数字电子秤的设计可以用哪些类型的放大器  哪一种的放大器效果更好??请高人指点!  …

查看全部问答>

在mobile下截消息的问题???

我想用hook把键盘的系统消息截住,显示出键值,然后还能够继续执行它的系统任务,不知道可不可以实现阿?简单一点,就是一个消息被钩子函数截过后还可以继续往下传到系统去执行任务吗?…

查看全部问答>

DSP和CPU的处理能力有没有可比性?(100分送上)

一个100MHz和一个2.6G的双核CPU来做数据压缩运算, 哪个能力比较强些?怎么体现?…

查看全部问答>

0

攒分赚人品谢谢清洁工和大兔子…

查看全部问答>

[DIY]再造二十四小时的感动【古典版II】 自制QS18-12辉光电子钟 附百图

        前几天刚刚完成QS30-1管的辉光钟,有不少朋友在向我讨教如何制作。说实话,就个人而言,我更喜欢QS18-12辉光管。         QS30-1的辉光管制作贴在这里:https://bb ...…

查看全部问答>

求助 cpld

  大家帮忙看下呗  这个为什么这样  选择的是 EPM7128SLC84-10的芯片  当选择EPM7160SLC84-10就没错  我想知道为什么…

查看全部问答>

【光耦技术资料汇总】

声明:展现在你眼前的所有文档都非本人的智慧所编写,而只是转发,但所有文档也都非具有相同层次的专业人士所作,你需要的是学习与思考,融合与创新。你的灵感,将来自於你的头脑,你的知识,确来自于其他人的智慧。包容糟粕,取其精华,你必能智於 ...…

查看全部问答>

电池供电单片机如何提高程序的可靠运行?

系统是一个手持设备,用电池供电,电量低时,通过外部充电器充电。 平时不使用时,进入休眠状态,通过按键(有三个不同功能的按键)唤醒(IO口电平变化中断)结束休眠。 如何才能保证系统能可靠的运行? 就是每次在休眠中,按键按下都能够唤醒, ...…

查看全部问答>

编写字符设备驱动框架的步骤(简要)

        作者:武汉华嵌嵌入式培训  长沙中心        讲师: 周龙         Step 1:  申请设备号(主要是申请主设备号)         ...…

查看全部问答>