WiFi学习总结

来源:互联网 发布:lol端口号 编辑:程序博客网 时间:2024/06/09 14:53

WiFi学习总结


        经过第二阶段的学习,对WiFi的从HAL层(wifi.c)到wpa_supplicant再到驱动(bcm4330 driver)的流程有了整体的把握。

        WiFi的HAL层(wifi.c)的主要功能是加载卸载WiFi驱动和打开关闭并连接wpa_supplicant,它与wpa_supplicant的控制命令和数据传递的通讯方式是使用socket(包括两种socket类型和管道)。在HAL层与wpa_supplicant的连接过程中,创建了两个套接字:监听套接字和控制套接字;其中HAL层的控制命令通过控制套接字发送给wpa_supplicant,并通过监听套接字监听wpa_supplicant上传驱动发来的数据和消息。

        Wpa_supplicant是用来支持WEP,WPA/WPA2和WAPI等加密认证方式和无线协议的,还作为WiFi HAL层和WiFi驱动的桥梁而存在。它与HAL和驱动的交互方式都是使用socket来实现,可以支持多种加密协议,管理一个控制接口列表,并通过socket将HAL层命令转接到WiFi驱动,还将从驱动发来的数据传递给HAL层最终到达应用层。Wpa_cli是对WiFi设备的使用的命令行调试工具,对wpa_cli访问wpa_supplicant的方式,可以参照WiFi.c,会发现他们与wpa_supplicant的交互方式是一样的,wpa_cli只是作为一个独立客户端对wpa_supplicant发起调试命令并带回调试结果。

        WiFi驱动是驱动WiFi设备正常运转的核心软件,WiFi作为SDIO(还有SPI,SD)设备通过总线连接到主机控制器,WiFi设备的数据传输就是与主机控制器进行的交互。对于Wifi的驱动的了解主要通过以下方式:通过分析dhd_module_init()初始化函数,了解WiFi驱动的加载过程,继而了解SDIO设备驱动的加载流程;在BCM4330的驱动中,也对net device的分配初始化和注册和网络IOCTRL流程做了分析;对WiFi芯片的上电流程,通过分析HOST驱动,从SDIO设备的扫描和初始化的整个流程做了一定的分析了把握,并分析SD设备的热插拔实现过程;要使用BCM4330驱动,当然还要学会对它源码的编译,它的编译方式有两种“内核编译和模块编译”,这两种编译方式还会改变对wpa_supplicant和Hal层的相关配置。

补充:有找到mahimahi相关源码,并做了相应分析,补充完成了上一阶段遗留的任务。