Android WiFi模块启动与移植详解

需积分: 35 2 下载量 63 浏览量 更新于2024-07-10 收藏 815KB PPT 举报
"本文主要探讨了Android系统中Wifi模块的启动流程,以及在进行Android WiFi移植时的关键步骤。文中提到了WirelessSettings类在初始化时如何配置WifiEnabler来处理Wifi按钮,以及用户操作Wifi按钮后的一系列调用过程。此外,文章还简单介绍了嵌入式Linux的特点和在嵌入式系统中的应用,特别是在Android设备上的优化和适应性改造。" 在Android系统中,Wifi模块的启动是一个涉及多层交互的过程。当用户在设置界面中点击Wifi按钮时,`WirelessSettings`类的`initToggles()`方法会被调用,这里创建了一个`WifiEnabler`实例,用于处理Wifi的开关状态。`WifiEnabler`通过`WifiManager`接口与底层服务进行通信,这个接口是通过AIDL(Android Interface Definition Language)实现的。当用户改变Wifi状态时,`WifiEnabler`的`onPreferenceChange()`方法被触发,进而调用`WifiManager`的`setWifiEnabled()`方法。 通过AIDL,`setWifiEnabled()`函数实际上会调用到系统服务`WifiService`的相应函数。`WifiService`接收到请求后,会发送一个`MESSAGE_ENABLE_WIFI`的消息给自己。在处理这个消息的代码中,关键的启动步骤包括加载WIFI内核模块(通常位于"/system/lib/modules/wlan.ko")以及启动`wpa_supplicant`进程,其配置文件默认为"/data/misc/wifi/wpa_supplicant.conf"。`wpa_supplicant`是负责Wi-Fi连接管理和身份验证的重要组件。随后,`WifiStateTracker`启动`WifiMonitor`的监控线程,以监听网络状态变化并作出相应的响应。 嵌入式Linux在Android设备中的应用,得益于其低成本、跨硬件平台支持、高性能和强大的网络功能。为了适应嵌入式环境,嵌入式Linux对标准Linux进行了小型化处理,比如采用了微内核结构,仅保留核心操作系统功能,而将其他如设备驱动、文件系统和网络协议等功能作为可选模块,以便根据设备需求进行裁剪,降低内核体积,提高系统效率,同时简化了维护和移植工作。 在进行Android WiFi移植时,开发者需要考虑这些底层机制,理解如何启动和控制Wifi服务,以及如何适配不同的硬件平台和设备。此外,还需要熟悉如何定制和优化内核,以满足特定嵌入式设备的资源限制和性能要求。这个过程可能涉及到修改配置文件、编译内核模块以及调整系统服务等多方面的工作。