2023年6月26日发(作者:)
科举论坛I■r嵌入式Linux下无线网卡驱动程序设计齐飞马硕肖珂(北方工业大学信息工程学院北京l00144)[摘要]本文采用了搭载A肌11处理器的开发平台,无线网络芯片采用Marvell88w8686芯片,内核采用1inux2.6.28内核,介绍了wLAN和无线网卡硬件组成,详细分析了无线网卡在嵌入式Linux下的驱动程序的各个模块功能,在此基础上测试无线网络的性能。[关键词】无线网络A舢llLi叫x驱动程序DesignofwireJessne七workcarddeVicedriver9BasedInfomtionQiFei,MaShuo,XiaoKeofOnEmbededLinU×(college^bstract:In1inux2.6.28thisofEngineering’NorthChiIlauniversityTechnology,Beijing1001“)kenlel,paper髓usethedeVelop鹏ntplatformequipped-ithA蹦11processor,wirelessnetworkingchip№rvell88W8686chipandintroducetheWLANandwirelessLANhardware,锄alyzetheembeddedLinuxwirelessLANdriverandtestthe可irelessdrivernetworkperformance.Key们rds:wirelessnet-orkA跚11Li加x中图分类号:TN915.6文献标识码:A文章编号:1009-914)((2011)03—0080-021引■802.1l协议是由IEEE在1997年发布的,这也是在无线局域网领域内的第一个国际上被认可的协议。802.1l协议主要工作在IsO协议的最低两层上。并在物理层上进行了一些改动,加入了高速数字产出的特性和连接的稳定性。无线网络是未来网络设备重要的发展方向,将来无线网络一定是用户访问网络的首选,所以无线网卡驱动在无线嘲络中扮演着非常重要的作用,驱动程序的好坏对网络访问及数据包发送接收的速度有直接影响。因此,继续开发和研究本课题不但_具有很大的科学价值,f面且还有巨大的社会商业价值。2系统相关硬件设计本系统ARM处理器采用性能非常强劲的s3c6410处理器,无线网卡芯片采用的是Marvell88w8686,ARM芯片通过sDl0接口对无线嗍卡进行控制。2.1_arveI|88w8686芯片介绍Marv(&if—sdio—driver)来注册模块所需的任何设施。实际的工作在driver—register(&drv一>drv)中完成。设备初始化模块驱动程序流程图如图2所示。3.2驱动程序数据处理模块驱动程序数据处理模块分为三个部分:命令、数据、事件的处理。分别用if—sdi0_handle—cmd、if_sdi0-handle—data、if-sdio_handle-event这三个函数实现相应的功能。if.sdi0一handle—cⅢd()函数的功能,本系统采用的Marvell88w8686芯片用的是sDIO接门操作模式,sDIO接口的操作方式就是通过命令的方式进行网卡芯片的控制,此函数完成了对芯片命令的发送和响应命令回复的功能,在响应命令回复前要判断是否超时,函数流程图如F:(1)检测当前寄存器中命令中止状态位,此状态为1说明开发板没有发送命令,返凹继续检测:此状态位为0时说明成功。(2)检测命令信号线是否忙,如果忙碌继续检测命令终止状态位’若为不忙进行相关寄存器(ArgumentReg和co∞andReg)的设置。(3)完成超时控制与相关寄存器的设置后,进行命令回复的响应。流程图如下:图5.3(4)等待命令完成中断,如果中断发生则清除中断状态位。(5)读回复寄存器的值,这个寄存器存着命令回复的数据。通过发送命令获取数据,并判断命令是否发送完成,等待命令完成。(6)当命令完成中断发生后,清中断状态位,并校验回复的数据是否正确。(7)校验正确回复正确,校验错误回复错误。if_sdio.handle—data()函数:E要完成rrsk_buff数据结构的分配和初始化、sK_buff数据的调整,内存数据的拷贝、数据包发送的操作,函数流程图如下图5.4所示。(1)通过设置块大小寄存器设置一个数据块的字节数,通过设置块计数寄e11是嵌入式消费性wLAN市场的龙头厂商,市占率超过70%。Marvell推出的嵌入式wLAN解决方案可应用于游戏,单模与双模行动手机,PDA,数字相机,肝3播放机与打印平台。基于成功的纪录,Marvell88w8686代表第三代先进的wLAN产品,在芯片与嵌入式软件开发的显著投资。Marvell88w8686由于采用低耗电的90纳米制程,可强化电池寿命至少100%并植基于该公司领先的系统软件,以及针对消费性产品而设的创新功能。例如,在双模手机中,待机时问可超过250小时,通话时间超过10小时,相形之下目前的解决方案分别是平均70小时与4小时。此外。该组件还持续支持先进的3/4封包处理层(TcP/IP)以及强化uMA和IMs的3G服务。Marvell88w8686整合一个A删兼容cPu,高速串行主控接【|包括SDl0和sPI,确保与各种主系统的互通性,以及与手机并存的先进802.11a/b/gRF收发器。以消费性装置为目标,包括3G+与宽带手机,Marvell88w8686与先进通讯标准包括L3,TcP/IP,uMA与IMs皆相容。2.2_arveI|8删8686与主机连接方式№rvell88w8686芯片同时支持通用的SPI(的G—SPr)和sDl0主机接口,可以用QFN封装。本系统采用sDl0接口与s3c6410处理器相连。系统连接图如图2.1所示。3无线同卡驱动程序设计3.1设备初始化模块驱动程序根据Linux2.6.28内核的要求,先通过调用moduleinit(iLsdio_init-邛Ddule)来注册一个初始化函数ifjdi0-init—∞dule“oid),然后再通过if_sdio-init-module(void)函数中的sdio_register—drivera由∞o鹋"M■v蝴船-硒硒器片\厂]/图1无线网卡与主机连接图80l拜技博苋图2初始化流程万方数据科学论坛N●I加压过滤机卸料原理及常见电气故障分析王建斌(神华准格尔能源有限公司选煤厂)中图分类号:TD928.2文献标识码:A文章编号:1009曲14】((2011)03—0081-011一料原理加压过滤机是通过排料闸板进行卸料的。排料闸板包括2个闸板,一个上料仓,一个下料仓闸板由液压油缸推动。起始位置时,上闸板关闭,下闸板打开,在上料舱内聚集煤饼。延时5s下闸板Ls205关闭。限位开关S12返回下闸板关闭信号后,下密封圈进行充气,密封圈充气,此时充气完毕。排气阀PcV2ll关闭。到位后0V212打开对中间仓进行充气。中间仓气体压力与上料仓气体压力相等后,等待料位计LIs^20l达到设定料位值或设定时间。如果料位值或设定时间满足条件则上密封圈排气,上密封圈排气压力pic214为零后,上闸板Ls204打开,上闸板限位开关s11返回打开信号。此时上料仓内的物料落入中间仓。延时5s后上闸板关闭。当上闸板限位开关s12返回上闸板关闭到位信号后,上密封圈进行充气。密封圈充气压力pic214达到6.0,迸气阀OV212关闭,到位后PcV211打开对中间仓进行排气。中间仓气体压力等于大气压力,即与下料仓气体压力相等后,下密封圈排气。当pic215压力为零时,下闸板Ls205打开,下闸板限位开关s11返回打开信号。此时中间仓内的物料落入下料仓,卸料完成。此后上下闸板将进行新的循环。2常见电气故■分析l、限位开关故障:当限位开关故障时,将显示Ls204故障。注:当下闸板打开限位开关s儿虚接时,即信号时有时无则上下闸板同时打开,故障停机.2、Pc、r211故障:现象为压力罐内压力低,可能是211阀定位计损坏或定位位置不对,或是阀体损坏。现象为2儿阀排气速度慢(程序中设定2ll排气时,中间仓压力要在10s内降到02.bar以下),则可能是排气管堵,211定位计损坏或定位位置不对,或是0v212阀损坏使进气压力与排气压力达到一个平衡。3、上下密封圈故障:现象为ov204、Ov205故障。则可能是密封圈漏气或是上下闸板堵。现象为无故障停机,则可能是密封圈漏气(不严重)或是密封圈压力调的过低。4、ov208、OV209故障:现象为密封圈不排气,或不充气.可能是OV208、ov209阀坏,或线圈损坏或虚接。5、LISA20I故障:现象为料位不准,可能是料位计电容杆上挂有煤泥,料位计内进水,整定值需要调整。存器设置数据块计数器,同时设置Argument、发送模式和命令寄存器的值.(2)等待命令完成中断,清中断状态位,然后获取数据。(3)如果想写数据。等中断,清中断状态位,设置块数据,若果是多块,继续此过程。(4)如果想读数据。等中断。清中断状态位,获取块数据,若为多块,继续此过程。(5)最后判断发送方式,若为单/多块发送,等待发送完成中断,然后清中断状态位,继续后续功能:若为无线块发送,中止交互,继续后续功能。if_sdi0-handle—event()函数主要完成无线网卡睡眠到唤醒状态操作、数据放入FIF0队列操作。3.3嵌入式Linux下驱动程序配I8内核下需要选择c0NFIG一育IRELESs—EXT、sDl0配置,其中cONFIG_LIBERTAs是对Marvell88w8686的支持,cONFIG-LIBERTAS—sDl0是对Marvell88w8686sDl0的支持。除此之外再增加对-pa—supplicant的支持。将8686的固件文件sd8686helper.bin和sd8686.bin拷贝到根文件系统的/lib/firⅢ%re/nux道(通道号即要选择的无线网的通道号):i-config选择无线网络:ping192.168.1.1:ping路由器.缩语ethle8sidnc仉一lIan:本文研究了基于A蹦的无线网卡驱动程序的设计,A删芯片采用性能非常强劲的s3c6410处理器,无线网卡与ARM处理器采用sDIO接口,从程序的移植调试情况来看,此驱动ir提供给网号底层的程序支持,为上层软件程序提供了访问的接口,使软件更方便的对网卡进行操作,完成无线网络数据的发送与接收。参考文献[1]高扬,石秀民.基于嵌入式平台的wLAN实现[J].吉林大学学报,2006,(24)(1):103一107.[2]w.J.Kim.S3c6410XRISCMicroprocessorUSER’SM^N【I^L[M].20∞[3]周敬琼,周风星.基于A蹦的Linux网络设备驱动程序开发[J].计算机工程与设计,2009,30(22).【4JTechnicalCo呲itteeSDcardAssociation.SDIOSi叩1ifiedSI孢cificationVersion2.00.2007.Li2.6.2CONFIGLIBERTAS、CONFIGLIBERTAS目录下将驱动模块libert懿一sdio.ko拷贝到根文件系统的/opt/sd8686/目录下。安装好i_、rz、sz和wpasupplicant工具到相应目录.添加启动-ireless的脚本文件到根目录下,方便每次驱动添加和无线的基本配置.3.4驱动程序测试本文的结果测试主要采用了Ping命令去验证,在实际的无线网络环境下,用相关命令实现驱动的测试,下面是~些命令的说明:i_configethlup:启动无线网卡设备:i耽onfigethl:显示无线网卡相关信息:i_1istethlscall:搜索当前无线网络:ifconfigethl192.168.1.1lO:配置IP地址:i_configethl∞deI|anager:配置无线网卡模式:i-c∞figethlch咖el3:配置通并技博苋l81万方数据
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687755146a39794.html
评论列表(0条)