了解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系统,手动操作网口。