WIFI驱动分析


Revision History

Date

Issue

Description

Author

<25/02/2009>

<0.5>

First draft

Wangfei

目录

1.    Abstract.. 3

2.    Introduction.. 3

3.    用户使用流程.... 3

4.    WIFI驱动的初始化.... 5

5.    数据的发送.... 7

6.    ioctl的调用逻辑.... 11

7.    电源管理相关的调用逻辑.... 14

8.    剩下的问题.... 15


1.               Abstract

.这里主要讲的是我对WIFI驱动的理解。

2.               Introduction

因为将要负责WIFI驱动,所以就开始了WIFI驱动的学习,主要分析了WIFI驱动的初始化,数据的发送流程以及和电源管理相关的部分。

3.               用户使用流程

通常用户的做法就是打开一个socket,调用一个ioctl,等待消息返回,收到消息后继续做下面的事情,然后又等待内核消息的返回,如此循环。

比如我们的系统的流程就是这样的:

4.               WIFI驱动的初始化

图4.1 wifi模块初始化

这里主要的工作就是注册mmc driver,注册回调函数,包括电源管理的,包括设备添加的,当然还有一些硬件初始化;

这里最重要的是wlan_add_card这个函数做了很多事情,我把我没有分析的代码都略过了:

图4.2wlan_add_card的逻辑

这里创建了两个线程,一个用来处理基本的输入输出,那就是wlan_service_main_thread,一个用来负责重新连接AP(当自动断开的时候),那就是wlan_reassociation_thread

还做了一些firmware的初始化;然后就是注册mmc设备,取得端口号;接着就是注册一个网络设备,用来供上层访问,这时候就可以通过ifconfig来看到输出了,比如是eth0;最后是一些用来使蓝牙和wifi能够共存的代码;

5.               数据的发送

图5.1发送数据的触发

数据的发送请求从tcp/ip层传到了这里,于是通过唤醒WIFI的主线程的处理函数来发送具体的数据请求;

下面看主线程里面的数据发送:

可见最后数据是通过mmc总线发送到了wifi模组了,而且开始调度下一次的数据发送,至此,数据的发送过程已经分析完了,下面是ioctl的调用逻辑

6.               ioctl的调用逻辑

之所以要分析这个,是因为上层和WIFI驱动打交道的方式,多半是通过ioctl的方式进行的,所以…

看看它的调用逻辑:

可以看到WIFI模块对ioctl的处理非常复杂,主要是要处理许多标准的调用,也要处理一些私有的调用;后面还要通过rtnl_notify给上层用户发送消息,这里也是一套机制,我也就不细说了。

7.               电源管理相关的调用逻辑

图7.1pm相关的逻辑

在系统要求睡眠的时候会调用到sbi_suspend_card,由此开始给WIFI模块发送相关信息,并且detatch网络设备,停止收发队列的处理,停止mmc总线等等,唤醒过程没有分析;

8.               剩下的问题

1,逻辑似乎不复杂,但是细节实现不清楚,这个可能需要具体问题具体分析了;

2,只分析了发收过程,接收过程类似,但是没有去分析;

3,数据到ip层后没有去分析。

4,不同加密方式的AP的连接,没有分析,将来或许会用到;

 

marvel wifi 驱动分析相关推荐

  1. wifi驱动分析文档

    WLAN驱动分析文档 目 录 1引言 3 1.1目的 3 1.2项目背景 3 1.3参考资料 3 2预备知识 3 2.1WLAN技术 3 2.2802.11协议简述 3 2.2.1概述 3 2.2.2 ...

  2. broadcm_40181 wifi 驱动分析

    1.先注册 dhd_mudule_init                dhd_linux.c   dhd_bus_register               dhd_sdio.c         ...

  3. linux wifi驱动分析,REL8192EU wifi linux驱动安装详解

    从网上买了个TPLINK的usb无线网卡,具体型号我就不说了以免做广告的嫌疑,反正很小巧.插在win10 系统上可以直接使用,但是我在win10 的虚拟机里却不能使用.去了官方网站下载Linux驱动, ...

  4. RK3399教程:wifi驱动调试技巧

    公众号 欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会.欢迎大家一起来玩呀. 疑问点? Android hal层需要配置那些东西? rk3399的wifi模 ...

  5. I.MX6 AW-NB177NF WIFI 驱动移植问题

    /********************************************************************************* I.MX6 AW-NB177NF ...

  6. wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析

    一.什么是wifi 模块百度百科上这样定义: Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE8 ...

  7. RK WiFi驱动层初始化分析

    RK3368 默认支持的WiFi芯片为AP6XXX系列,此芯片还默认支持BT. 可以先看看原理图里面的的情况,方便我们理解其在代码里面的配置情况 WiFi 设备配置: ./rockchip/rk336 ...

  8. RLT USB WiFi驱动源码分析(Type A)

    USB WiFi驱动属于USB设备驱动,底层是USB主机控制器驱动.USB主机控制器驱动根据USB协议向USB设备驱动提供读写接口.USB WiFi驱动根据USB主机控制器驱动提供的读写接口对USB ...

  9. cmd52命令发送 mmc_Linux SD/MMC/SDIO驱动分析(新)

    一.SD/MMC/SDIO概念区分 SD(SecureDigital)与 MMC(MultimediaCard) SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆 ...

最新文章

  1. asp.net mysql 读写分离_MySQL读写分离
  2. ajax传向前台的html代码里又有事件的时候,绑定事件失败解决方法
  3. 秒杀 mysql 事务_秒杀怎么样才可以防止超卖?基于mysql的事务和锁实现
  4. 使用cmake重写live555工程-附源码和视频教程
  5. 怎么汇报一周开发工作情况_如何在没有经验的情况下获得第一份开发人员工作
  6. python list存储对象_《python解释器源码剖析》第4章--python中的list对象
  7. Opencv级联分类器实现人脸识别
  8. spring源码分析第五天------springAOP核心原理及源码分析
  9. SybaseASE系统表的应用
  10. NoSQL数据库全方位比较
  11. 每日一题(开开森森学前端之Object系列)
  12. Mysql里有2000w数据,redis中只存20w数据,如何保证redis中的数据都是热点数据
  13. win7安装JDK并配置
  14. SAP ABAP ALV 的一些总结:Custom container 和 Splitter container
  15. Python-懒人必备-语音小助手
  16. 背景与字体的搭配经验
  17. #pragma用法详解
  18. 项目:机器学习+FLD分类+python图像处理mnist数据集
  19. APP - APP监控软件,美团 24 小时不间断定位上热搜
  20. 微信小程序nodejs+vue课程推荐报名学习分享平台uniapp

热门文章

  1. 2021电赛A题:信号失真度测量装置
  2. 通过PyTorch用DCGAN生成动漫头像
  3. 基于HTTP浏览器缓存机制全面解析看Table表格的css样式代码详解
  4. CentOS6.x升级到7
  5. multinorm r语言_MLAPP机器学习的概率知识总结_MLAPP pdf_MLAPP下载
  6. 使应用中的字体不受系统设置影响的两种方法
  7. 神经网络基础01-从神经元到深度学习
  8. 【QT】添加图片资源并使用QImage加载图片显示
  9. 全面分析竞争对手网站的步骤
  10. java stdin 和stdout_stdin,stdout,stderr