wifi详解(五)

本文详细介绍了Android平台上BCM43xx芯片的WiFi模块移植步骤,包括WiFi结构、模块环境、编译过程及在Android中的使用。主要内容涵盖用户接口层、Android WiFi Service、WPA_Supplicant、DHD驱动、固件和硬件芯片的修改,以及编译过程中Android.mk文件的修改、驱动源码添加、编译和配置文件的调整。
摘要由CSDN通过智能技术生成

1        Android平台的Wifi模块移植要点

1.1      Wifi结构

user interface

Android WiFiService

WPA_Supplicant

DHD Driver

Dongle Binary

BCM43xxHardware


蓝色:需要修改

黑色:不需要修改

蓝色部分是为了在android环境下,支持bcm43xx芯片需要修改的部分,各个部分的功能如下:

1. User interface(用户接口层):控制和设置wifi的用户接口层

2. Android wifi service:它是android系统中的wifi服务部分,主要用来启动和停止wpa_supplicant,并作为用户接口层和wpa_supplicant交互的桥梁存在

3. Wpa_supplicant:支持wpa和wapi的外部库

4. Dhd driver:wifi模块的驱动

5. Dongle binary:BCM43xx的固件

6. BCM43xx:wifi的硬件芯片(是一个组合集成芯片)

1.2      Wifi模块环境

Wifi模块环境包括以下部分:

1.      bcm43xx驱动源码

2.      wpa_supplicant和支持WAPI的wapilib库

3.      nvram.txt(BCM43xx芯片配置文件)

4.      wpa_supplicant.conf和wifi固件

一般来说,第三和第四条件的文件在BCM43xx源码中都有包含。

1.3      Wifi模块的编译

1.3.1       Wifi驱动源码

这里不以某个类型的BCM43xx芯片和android版本作为特例来讲解wifi模块的编译过程,只是对编译的通用部分做简要的说明。

一般来说,wifi模块的编译可采用两种红方式:一是内部编译,二是模块编译。通常使用的是模块编译,这里也以模块编译wifi模块为例来说明wifi模块的编译过程。

在wifi模块驱动源码中,主要包含以下几个目录:

Firmware:里面会提供对应BCM43xx芯片的固件

Config:提供wpa_supplicant.conf和nvram.txt以及dhcpcd.conf,还有android.mk文件。如果没有上面的配置文件,需要找到放入该目录。

Android.mk:这是一个文件,也是编译android平台编译wifi模块的入口

Src:wifi驱动的源码目录

其实,你看到的broadcom提供的驱动源码可能的组织方式跟上面是有差别的,但大致的内容差不多,上面只是针对模块源码中目录和文件的不同用途来说明的。

1.3.2       在android平台添加BCM43xx驱动

要在android平台编译wifi模块,首先要将wifi模块的源码添加到android平台下的目录中。至于添加到什么地方也不是固定的,一般会添加到vendor目录下的某个目录下,下面我们把BCM43xx模块源码放在vendor/xxxx/wlan/bcm43xx下(XXXXX代表产品名称)。要知道,在添加源码之前,这个bcm43xx目录是不存在的,需要手动创建,并在该目录下创建android和src两个目录:

PC$ cd<ANDROID_ROOT>

PC$ mkdir ‐p vendor/xxxx/wlan/bcm4325/

PC$ cdvendor/xxxx/wlan/bcm4325/

PC$ mkdirandroid src

PC$ ls

android src

       在创建好上面的目录后,就可以在目录下添加BCM43xx的相关源码了,src存放的是驱动源码,android目录下主要存放固件(即二级制镜像),编译文件(Android.mk),配置文件(nvram.txt和wpa_supplicant.conf)等。

       添加好相关源码后,还需要做一定的修改工作(主要对编译文件的修改),不然模块无法被正常编译的,Android.mk的内容修改操作如下。

PC$ cp<WORK>/bcm4325_source/open‐src/src/dhd/android/config/Android.mk

<ANDROID_ROOT>/vendor/xxxx/wlan/bcm4325/android

PC$ cd<ANDROID_ROOT>/vendor/xxxx/wlan/bcm4325/android

PC$ viAndroid.mk     //到这里,找到Android.mk文件,文件内容如下

……

#

# Install WLAN Driver, firmware, and configurationfiles.

#

local_target_dir :=$(TARGET_OUT_ETC)/firmware    //这里定义local_target_dir

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值