Android Wi-Fi子系统学习笔记

来源:互联网 发布:移动数据开关已关闭 编辑:程序博客网 时间:2024/05/22 10:47

一、学习目的

    了解Android  Wi-Fi模组的移植及调试

 

二、基础知识

1.wifi的两个标志:

 (1)无线

 (2)基于IEEE802.11协议

 

2.Android wifi模块的三个作用

(1)连接网络

(2)共享自己,如:屏幕分享

(3)共享自己连接的网络,即开热点给其它终端上网

 

 

3.Android系统中三种wifi的工作模式:Station、Wi-Fi direct及SoftAP。分别对应wifi模块的三个作用。

(注:AP就是传统有线网络中的HUB) 

 

 

 

 


 

 4.wifi工作的两个频段:2.4G和5G

 

5. 802.11a/ac协议 工作在 5GHz

  802.11 b/g/n协议 工作在2.4GHz

 

 

6.WPS

   WPS,即Wi-FiProtected Setup  Wi-Fi,密码保护设置。支持WPS的设备要连接支持WPS(带按钮)的AP,无需输入密码,在设备端使用WPS功能,然后按AP的WPS键,即可以自动连接上AP,无需手动输入密码。WPS的初衷是为了快速连接,避免用户输入繁琐的wpa密码,但是pin码又过于简单了。

 

7.Wi-Fi建立数据连接的流程:

   Wi-Fi应用初始化------->打开Wi-Fi-----> 开始扫描AP-------> 显示AP------>配置AP ----->连接AP ----->获取IP地址

 

8.各功能模块分析

(1)wifi setting

    响应用户请求,对wifi进行相关设置。如:打开/关闭wifi、显示AP列表、选择AP进行配置等。

    相关代码目录:

   packages/apps/Settings/src/com/android/settings/wifi/

(2)wifi/p2p server

   Wifi API封装。响应settings 的命令,管理wifi状态机,监听supplicant消息。

    相关代码目录:

   frameworks/base/wifi/java/android/net/wifi/

   frameworks/base/services/java/com/android/server/

(3)wifi jni

   Java与C程序交互。

    相关代码目录:

   frameworks/base/core/jni/android_net_wifi_WifiNative.cpp

(4)hal

    加载wifi驱动,转发上层命令给supplicant及接收supplicant执行结果。

    相关代码目录:

   hardware/libhardware_legary/wifi/

(5)wpa_supplicant 、wifi Protected Access

    上层与驱动的中转站,通过socket与上层、驱动交互。另外包括加密认证功能,支持WEP,WPA/WPA2和WAPI无线协议和加密认证。

    相关代码目录:

   external/wpa_supplicant_8/

(6)Wi-Fi 驱动、WiFi接口驱动

    相关代码目录:

   \linux-3.4\drivers\net\wireless\

   \linux-3.4\drivers\mmc\

   \linux-3.4\drviers\usb\

 

三、Others

1.如果对init.rc文件进行了修改,在编译Android之前,需要执行make installclean命令。如果对Boardconfig.mk文件进行了修改,需要在编译Android之前执行make clean命令。否则,在文件中做的修改不会作用于新的方案。

 

2.busybox lsusb

    查看挂载到当前系统的usb设备。主要用来查看usb接口的wifi是否被系统正常识别。

 

3.cat insert

    查看sdio 接口wifi是否被系统正常识别,手动扫描sdio接口Wi-Fi。

 

4.netcfg

   Linux网络配置命令,用来查看wifi相关的wlan0和p2p0网口是否注册成功,是否分配到IP地址。

 

5.ifconfig wlan0 up/down

    网络端口使能和关闭,主要用于android或linux系统,手动操作网口。


 

0 0
原创粉丝点击