AndroidWIFI移植分析—曹颖学习教案_第1页
AndroidWIFI移植分析—曹颖学习教案_第2页
AndroidWIFI移植分析—曹颖学习教案_第3页
AndroidWIFI移植分析—曹颖学习教案_第4页
AndroidWIFI移植分析—曹颖学习教案_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1AndroidWIFI移植移植(yzh)分析分析曹颖曹颖第一页,共51页。2第2页/共51页第1页/共51页第二页,共51页。3第3页/共51页第2页/共51页第三页,共51页。4Android SDIO WIFI移植移植(yzh):第4页/共51页第3页/共51页第四页,共51页。5第5页/共51页第4页/共51页第五页,共51页。6更高一级的网络管理位于(wiy)frameworks/base/core/java/android/net。WIFI在在Android中如何中如何(rh)工作工作第6页/共51页第5页/共51页第六页,共51页。7* Network device sup

2、port - Wireless LAN - Marvell 8xxx Libertas WLAN driver support Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards 配置内核配置内核(ni h)支持支持SDIO WIF第7页/共51页第6页/共51页第七页,共51页。8第8页/共51页第7页/共51页第八页,共51页。9第9页/共51页第8页/共51页第九页,共51页。10第10页/共51页第9页/共51页第十页,共51页。11第11页/共51页第10页/共51页第十一页,共51页。12n oneshotn #end add。第

3、12页/共51页第11页/共51页第十二页,共51页。13第13页/共51页第12页/共51页第十三页,共51页。14第14页/共51页第13页/共51页第十四页,共51页。15第15页/共51页第14页/共51页第十五页,共51页。16第16页/共51页第15页/共51页第十六页,共51页。17第17页/共51页第16页/共51页第十七页,共51页。18第18页/共51页第17页/共51页第十八页,共51页。19第19页/共51页第18页/共51页第十九页,共51页。WIFI toolnexternal/wpa_supplicantnWIFI Kernelnsystem/lib/module

4、s/libertas_sdio.ko第20页/共51页第19页/共51页第二十页,共51页。21第21页/共51页第20页/共51页第二十一页,共51页。22 第22页/共51页第21页/共51页第二十二页,共51页。23第23页/共51页第22页/共51页第二十三页,共51页。24第24页/共51页第23页/共51页第二十四页,共51页。25第25页/共51页第24页/共51页第二十五页,共51页。26第26页/共51页第25页/共51页第二十六页,共51页。27第27页/共51页第26页/共51页第二十七页,共51页。28n n void handleEvent(int event, St

5、ring remainder) switch (event) case SCAN_RESULTS: mWifiStateTracker.notifyScanResultsAvailable();-sendEmptyMessage(EVENT_SCAN_RESULTS_AVAILABLE); break;第28页/共51页第27页/共51页第二十八页,共51页。29第29页/共51页第28页/共51页第二十九页,共51页。30第30页/共51页第29页/共51页第三十页,共51页。31第31页/共51页第30页/共51页第三十一页,共51页。32 void handleEvent(int eve

6、nt, String remainder) switch (event) case CONNECTED: handleNetworkStateChange(); - mWifiStateTracker.notifyStateChange(newState, BSSID, networkId);-msg.sendToTarget(); break;第32页/共51页第31页/共51页第三十二页,共51页。33第33页/共51页第32页/共51页第三十三页,共51页。34右上图中除右上图中除SDIOSDIO卡时卡时所用到的信号线以外所用到的信号线以外增加了增加了nCDnCD、WPWP引脚,引脚,n

7、CDnCD用来支持卡热拔插用来支持卡热拔插当卡热拔插时会触发当卡热拔插时会触发中断它连接到中断它连接到S5PC100S5PC100的的GPG2_6GPG2_6见右下图,见右下图,WPWP为硬件写保护为硬件写保护(boh)(boh)引脚引脚,1,1表示卡表示卡写保护写保护(boh)(boh)。s5pc100 SD/WIFI接口接口(ji ku)图图 第34页/共51页第33页/共51页第三十四页,共51页。35具体的SDIO卡驱动Core核心层Host主机驱动程序第35页/共51页第34页/共51页第三十五页,共51页。36网络协议接口层网络设备层设备驱动功能层网络设备与媒介层struct ne

8、t_device_ops ndo_openndo_stopndo_start_xmitndo_set_mac_addressndo_tx_timeout;net_device第36页/共51页第35页/共51页第三十六页,共51页。37static struct platform_driver s3cmci_driver = .driver= .name= s3c-sdi,.owner= THIS_MODULE,.pm= s3cmci_pm_ops,.id_table= s3cmci_driver_ids,.probe= s3cmci_probe,.remove= _devexit_p(s3c

9、mci_remove),.shutdown= s3cmci_shutdown,;在入口(r ku)函数module_init(s3cmci_init);-return platform_driver_register(&s3cmci_driver);注册平台驱动最终会调用驱动中的probe函数。即s3cmci_probe函数。第37页/共51页第36页/共51页第三十七页,共51页。38IRQF_TRIGGER_RISING |nIRQF_TRIGGER_FALLING,nDRIVER_NAME, host)n/注册卡检测中断,双边沿触发,当热注册卡检测中断,双边沿触发,当热拔插时执行

10、中断处理函数拔插时执行中断处理函数s3cmci_ird_cd.nret = mmc_add_host(mmc);/添加添加mmc设备设备n第38页/共51页第37页/共51页第三十八页,共51页。39第39页/共51页第38页/共51页第三十九页,共51页。40第40页/共51页第39页/共51页第四十页,共51页。41第41页/共51页第40页/共51页第四十一页,共51页。42第42页/共51页第41页/共51页第四十二页,共51页。43/* * SDIO function device driver */struct sdio_driver char *name;/驱动名称(mngchn

11、g)const struct sdio_device_id *id_table;/驱动设备IDint (*probe)(struct sdio_func *, const struct sdio_device_id *); /探测函数接口void (*remove)(struct sdio_func *);struct device_driver drv;第43页/共51页第42页/共51页第四十三页,共51页。44static struct sdio_driver if_sdio_driver = .name = libertas_sdio,.id_table = if_sdio_ids,

12、/用于设备和驱动(q dn)的匹配.probe = if_sdio_probe,.remove = if_sdio_remove,;第44页/共51页第43页/共51页第四十四页,共51页。45static int sdio_bus_match(struct device *dev, struct device_driver *drv)struct sdio_func *func = dev_to_sdio_func(dev);struct sdio_driver *sdrv = to_sdio_driver(drv);if (sdio_match_device(func, sdrv)retu

13、rn 1;return 0;第45页/共51页第44页/共51页第四十五页,共51页。46static int if_sdio_probe(struct sdio_func *func,const struct sdio_device_id *id)card-workqueue = create_workqueue(libertas_sdio);INIT_WORK(&card-packet_worker, if_sdio_host_to_card_worker);/初始化工作队列sdio_claim_host(func);/请求(qngqi)一个hostret = sdio_claim

14、_irq(func, if_sdio_interrupt);/注册中断处理函数if_sdio_interrupt用来接收数据priv = lbs_add_card(card, &func-dev);/*会分配一个net_device结构,并启动一个内核线程lbs_thread,用于发送packet、cmd以及上报event。和初始化一些工作队列,并初始化一些底层操作函数static const struct net_device_ops lbs_netdev_ops = .ndo_start_xmit = lbs_hard_start_xmit,/发送函数 */priv-hw_host

15、_to_card = if_sdio_host_to_card;/发送数据ret = lbs_start_card(priv);/会注册网络设备第46页/共51页第45页/共51页第四十六页,共51页。47static const struct net_device_ops lbs_netdev_ops = .ndo_open = lbs_dev_open,.ndo_stop= lbs_eth_stop,.ndo_start_xmit= lbs_hard_start_xmit,.ndo_set_mac_address= lbs_set_mac_address,.ndo_tx_timeout =

16、 lbs_tx_timeout,.ndo_set_multicast_list = lbs_set_multicast_list,.ndo_change_mtu= eth_change_mtu,.ndo_validate_addr= eth_validate_addr,;第47页/共51页第46页/共51页第四十七页,共51页。48第48页/共51页第47页/共51页第四十八页,共51页。49if (mci_dsta & S3C2410_SDIDSTA_SDIOIRQDETECT) /检测到SDIO中断if (mci_imsk & S3C2410_SDIIMSK_SDIOIRQ) /判断(pndun)SDIO中断是否使能mci

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论