当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]ARM设计的无线网卡设备驱动方案

随着嵌入式系统中

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来判断硬件设备是否已经插入总线,摄像头驱动程序需要创建一个


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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2022年10月19日 /美通社/ -- 随着云计算、大数据的普及发展,过去的"云"是服务于大企业的计算模型,而十多年过去了,越来越多的应用及业务走上"云端",对计算核心数需求...

关键字: ARM 大数据 云游戏 CPU

无线连接已成为许多产品的必备功能,但往往会增加系统设计的成本和复杂性,因为它通常必须作为更大应用的附加功能。Microchip Technology Inc.(美国微芯科技公司)今日推出首款基于Arm Cortex®-M...

关键字: Microchip ARM PIC

物联网正在扩大规模并加速发展,进而驱动着全新的经济。而Arm生态系统正是这一巨大机遇背后的推动力。

关键字: ARM 物联网

ARM公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。

关键字: ARM

2018年10月26日,深圳星河丽思卡尔顿酒店,ARM中国CEO吴雄昂在ARM年度技术论坛上对记者如是说,彼时的吴坚定,温雅,意气风发。时隔两年,ARM中国CEO吴雄昂再次回到媒体视线,这一次,ARM中国与来自投资方和剑...

关键字: ARM 芯片 集成电路

喜欢折腾主机的小伙伴一定都知道X86和ARM架构的区别,前者在PC领域已经统治了几十年;后者则主要应用于移动领域,尤其是近几年,ARM的产品在终端应用特别是手持终端应用飞速发展。

关键字: 国产 ARM 主机

科技公司们认为,收购将使英伟达控制一个重要的供应商,该供应商向苹果、英特尔、三星电子、亚马逊和华为等公司授权基本的芯片技术,同时也向不计其数的中小技术企业提供授权。总部位于英国的ARM公司将芯片设计和相关软件代码授权给所...

关键字: 英伟达 ARM 半导体公司

在去年九月,英伟达宣布以400亿美金收购ARM时,就注定这场收购不会太顺利。因为一旦ARM成功被英伟达收购,这将使ARM改变在全球半导体市场中的中立立场,因为ARM的很多客户,都是英伟达的直接或者间接的对手。除此之外,还...

关键字: 英伟达 ARM 半导体

以下内容中,小编将对工控主板的相关内容进行着重介绍和阐述,希望本文能帮您增进对工控主板的了解,和小编一起来看看吧。

关键字: ARM 工控主板 主板

在这篇文章中,小编将为大家带来工控主板的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: ARM 工控主板 主板

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭