Linux 下wifi 驱动开发—— SDIO接口WiFi驱动浅析.docx
《Linux 下wifi 驱动开发—— SDIO接口WiFi驱动浅析.docx》由会员分享,可在线阅读,更多相关《Linux 下wifi 驱动开发—— SDIO接口WiFi驱动浅析.docx(16页珍藏版)》请在三一办公上搜索。
1、1.inux下wifi驱动开发(三)SDIO接口WiFi驱动浅析SDlO-Wifi极块是格I-SDIO接口的符合Wifi无废网络标准的微入式粒块,内JR无线网络协议IEEE802.11由议栈以及TCRlP办议栈.健济实现用户主平台数据通过SDKD:I到无线网络之间的整辄SDlCH!有恰轮救据快,兼存SD.MMC接I】琼特.点,对于SDlo接口的Wtn,首先,它是一个SdiO的卡的设符.然后典备了WiG的功健,所以,注册的时候还是先以sdi。的卡的设番去注册的.然后检测到卡之后就要蓼动他的VVifi功能了.iV.feHISdio的协议,通过发吩咐和致据束限制的.F面丸谕沾回Bi卜SDlO的相关学
2、同r一、S3。相关若破学向IW1、SDIOSDIo故名思义,就是SD的I/O技口(interface)的一照,不过这样说明可能还丁点抽像,更具体的说明.SDKl它是记忆卡的标准,但是现在也可以把SD家来插上-S外IB授口运用,这样的技术使aSDio.所以SDK)4号是朴相当用纯的技术,透过SO的l,O按却;fc连接外罂外Hb并只透过SD上的I,。数据接位与这些外IK传输数据.而I1.SD用会金倒也推出很完祭的SDIOstack浜动程序,使得SDIO外IH(我们称为SDIO卡的开发与应用变祖相当热门。现在已经有特别多的手机或是持装五都支拈SOlO的功能(SD杯准贩本就是针对mobiledevic
3、e而制定),而H很多SDIO外图也都放开发出来,让手机外接外阴更加荷洁,并且开发上更有弹性(不须要内建外围).目前常见的SDIO外IHSDK)卡)IfiWi-Ficard(无线网将卡-CMOSsensorcard(照相模块)GPScard GSM.lGPRSmodemcard BluetthcardSDK)的应用将是格来嵌入式系统4iR要的接【】技术之一,井Il也会取代HOTGPIO式的SPI接2、SDIOAikSDiO总线和USB总统类似.SDQ也有两端.其中一端是HOST端.W端足device端,全H的信部是由HOSTMI发送蛤咐HB先的,DeviceIt可以相互JaftC1.K信+H0$
4、T给OEVlCE的时神辅号,每个时钟周期传珀个吩附,CMD信明C向的俏叽C干传送CH和反应.DAT0-DAT3俏:四条用于传送的吹伽线.VDD俏号:电海伯号.VSS1.VSS2:电源地伯号.3、SDIOIMMUItS方法:K个定时检查或按中断检,使件:Ikuigpgio(日NTl8)用于SDk检测GPGlO为高电平G没行挂入SDKGPGlo为低电平固插入/SDK4,SDlO*附SDK)总我上都是HOST端发起为求,然后DEVICE瑞网底M求.Sdk)功由由6个字节织成.a-COmmand:用起先传输的吩的,是由HOST端发i?DEVICE端的.其中吩咐是通过CMD伯号线传送的.b-Respon
5、se:I-IDEVICE返回的HOST的吩怀作为CommandWll,也是通过CMD线传送的.C-Data:敬粼型双向的传送的.可以设列为1线校式.也可以设设为4找模式.数据是通过DATOQAT3倒当找传箱的.SDtO的毋次煤作蚓6由HOST在CMD及上发起一个CMD.对于有的CMD.DEVICE须要返回ReSPOnSe.仃的则不缴:要.对F读吩呐.首先HOSTADEVICE发送助时,紧接莉DEVICE会一回个援.号,此时.当HOST收到何府的烈r.;.会杉敬粼放在4位的数掂找上.在传送攻榭的同时会跟前茄CRC校验码.当链个读传送完毕后,HOST会野次发送个吩咐.通知DEVICE操作完毕.DE
6、VlCE同时会返网个啊应.对于写盼学计先HoST会向DEVICE发送物机J着DEVICE会i铀手倡号,此时.“1HOST收到M位的粗F信号后.会将IkM放在4(4的Kt掘我上.在传送数屈的同时会跟同芹CRC投S码.当隹个与传送完毕后.HoST会再次发送个吩咐.通知DEVICE操作完中.DEVlCE同时会这回个科应.二、SDI。接口现动前面讲到.SDlO接口的wi.首先.它是个sdi。的卡的设省.备了Wifi的功能,所以SDIOIirI的WiFi明动就是在所芈动外面套上了个SDlO郭动的外壳.SDIO期动仍I口符合七备罢动的分Ji与分JN星也役备出动层(wifi-各)I核心层(向上向下供应接口)
7、II:机郭动层(实现SDKD架动)卜面先分析SDlO按I1!Jh功的实现,R几个,Il变的数据拮构用了核心层。生机用动星的数据交换处现).1,lnclude1u11mc.host.hSIrUClmmCJTOSl用朱筠述卡JHiWittstructmmc_card用来描法卡structmmcdriver用来描述mmcf*jstructSdioJunc用来描述功能i2%Structmmc.host,ops用来描述F1制!S携作接【】出数功傕,用从把机以制器层向COrC层注册操作也致,从而将COrC层与具体的主机限制/隔肉.也就是说core要搽作主机限制毋,就用这个OPS当中给的函数指仔探作,不能留
8、/用具体上限制搭的沿11.HOST层杂动分析在前面的东列文章中1.inUXSOI:曲动开发(:)SO1:*:力分析HOSTRff具体阑逑,下面只淌洁回顾一下一些戒要函数处理1、MWHostXCtt这里.修整的是S3C24XX的HOSTlR功程序,1driversmmcosVs3cmci.cStaticStructPmfOrf1.drhfers3rTHlSJlaMXF,.prs$3cfici_p_ops,.ldtabic53oici_drlvcr_ids.p11eMSk_吟K,.一2务。,以门南合.renove_devexlt_p(s3crl-rerove),10.shutdo*11-s3ici
9、_shutdoMnt;1213. s3evkepdev)W.(XS./.16. structWKJXistr;17. me-w*c-alloc-hst(sizeof(structs3cnci-bost),4pdev-dev);,寸Tmh8t体18.19. /26. )21.22. 注仪中断杜卬汨软GaIcIrq%处教出也发AW引起的汴抑中的,23. r4qutjrq(host-1rq,(3cncl.lrq,DftIVERJUvirq-cdjHCrKi_irq_cd,IRQFJRlGGE氏RlSlNGIIRQFTKlGGERA1.Ilh6,WIVtRNAME.host)27.2Sfwcadd_h
10、ost(oc);/initialisehosthardware卜州coreii,host29. -dcvlco_ddd(&host-class_dcv);.(pm11nc-,dctcct-chngc(host,);34.35. SchedulcdelayedworkintheWCworkqueu国度H”工作队列/36. rfic_schcdulc_dclayed_iK)rk(ahostdctcct-delay);搜寻host-detected得到以下值息:drfvrsmm0,re,host.c)1. NIT-D1.AY1.0.M0RK(ah5t-detect,mc-rescan;2.3. mc
11、_bu$_put(hO5t);/drd从busM故它为,。找内川5.6. mWWmehn联濯岂古被占用,力加ECRUX黑段如被占用,爨么hocUlr-1;告用为。7. *殁如为1,那么幺在Glk(I)M环中调用schedule切拉出自上,与用r或器的蝶性先成之后,依freJrTNSQhxU)的叼蚁,含点落登记到净存认列&hsJM中的N他和MmMC点以黑衿的此阴根8. /9. nrc_clain_hst(hO5t);10. EJreS5_tryEhos1.r0xf.nin)t11.12. staticintrrrescan_try_freq(structmehosthot,IInSiKnedfr
12、eq)13(14. 315. OrdersmPortgK:proe$010,then$0,thenft*C/16. if(wc-attach-5dio(host)17. returne;18. if(!iwc_attach_$d(hott)19. return6;2.if(!wc_attach_mc(ho5t)21. return;22. 23)24.25. wc_attach_sdlo(structmsdiot:lI-26. -rwc_attdch_bu5(hott,&rfK_$dlo_op$);27.28. cdJ总筑卜的制动匹死,双柳始化rd”29. mrc_5dlo_lnit_card
13、(bost,hostocr,NU1.1.,);30. -ordEJaIIOC_crd(ho$t,NUll)jHt*cardrM,r,31. wc-5et.bus-node(host,WC_BU5OOt_PUSW1.1.);/i2TmebusIfJEC32.33. struct5dlo_func5dio-ur(SDI0-MAX-FUWCS);/SDXOfunctions(devices)34.35. u11card,11);36. funcsdio-alloc-unc(card);/tstructsdio-llounc(fn-IJ-fun.39.4.nmc_add_card(host-card)
14、;tf,dor?i!.Mc_bus_typcs,41.sdlo-ddunc(ho$t-card-dlo_fuc1J);杉WioH:0不:“fIWio_tHl1.tyKS总汴这里泵列斯数调用在Iim的SD驱动蚊怅中已的州述过r.不再具体阐述2、SDIO设冬的m当场拔SDlO设备,分触发中断通知到CPlh然后执行卡检/I中断处理函数在这个中断服务函数中,mmc_detect_change-mmc_schedute_delayed_work(&ho5t-detect,(Tyncescan)会谓收mmcescan用数延时调度作队列.这样也会触发SDIo设备的初始化菰理,松测到仃效的SDlOiQ备后,会
15、将它注册到系统中去.1. staticlrqreturn-ts3cfK13Nd(i11tf11bvoidadev.W)2. 3. structs3cnci-b5thost-(structs3c11ci-host)dcv-id;EJdetejmc,msc$_to_j1ff1es(5W);returnXRQ_HAKD1.ED;三、Wifi抬动分解析MH生动的通用的软件架构1,分为两部分,上面为1:机用*动.卜面是我们之就所说的HrmWarC2 .其中冏件1分的土要工作是:内为天&接殳和发送W米的拇是802.”他的博,而主机接受和传送出来的数据部必需是802,3WXl,所以必需由firmware来负
16、员802.3的偏和80211糊之间的传换3 .当天税收到数刖,并俄Mmwar。处理好后会放在一个buer*R,并产生一个中新,主机在收到中断后就2:读这个butter.SDO设备的版由SdioMriVer结构体定义,Sdio_tInVer其实是UHer的时装.通过sdio_register_driver,j4SDlO议备第,5加我迸内核K实就是挂收到SdIoJ)us_type总&卜&1、慢备网动的注与DaEDfiversl11etwelessllibertas.lif-sdio.c1. SDIOfunctiondevicedriver*/2.3. structsdlo-drivcr.hatb1
17、1a11e;二林幺5. conststructsdio-device.idid-table;各*虱ID6. Int(probc)(structsdio_unc.conststruct5dlo_dcvicc_id);1.Tm37. void(re;8. Strvctevle.drirobo,14. .rerov9-IJWegVQ,15. .drv9.pr-iif-sdio-pn-ops,0)U-);设台注册请数(cpp)”00t*n1.2. sdio-rcgi5tcr-drivcrregisterafunctiondriver3drv:SDIOfudrv.11artedrv-nare;9. dr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 下wifi 驱动开发 SDIO接口WiFi驱动浅析 wifi 驱动 开发 SDIO 接口 浅析
链接地址:https://www.31ppt.com/p-7182097.html