ITPub博客

首页 > IT职业 > IT生活 > 全志H3_wifi模块移植说明文档V-SDK软件资料

全志H3_wifi模块移植说明文档V-SDK软件资料

IT生活 作者:SZX511 时间:2019-06-18 11:42:34 0 删除 编辑

2. 模块介绍

目前H3 android4.4.2平台上已支持wifi模组有6款,本文档将以H3盒子原型机为例说明如何配置每款wifi模组。

wifi 模组可分 USB 接口和 SDIO 接口两种类型,部分模组带蓝牙功能,wifi 的全功能包括 station、softap和 wifi direct,其中 station 是 wifi 的最基本功能,每款 wifi 模组均支持。


注意:

1、 到 linux-3.4 目录下,输入 make ARCH=arm menuconfig,然后选择 Device Drivers --->Network device 

suppor--->Wireless LAN,即可看到参与编译的 wifi 驱动。

2、内核默认是编译蓝牙,如果实际平台没有蓝牙功能可蓝牙去除编译,减少生成的内核大小,修改方法如下。

去到 linux-3.4 目录下,输入 make ARCH=arm menuconfig

然后选择[*] Networking support ---> 

< > Bluetooth subsystem support --->

.......

< > RF switch subsystem support --->


3. ap6181

功能:wifi station、softap、wifi direct

接口类型:SDIO

编译模式:编译成内核模块,修改路径如下

去到 linux-3.4 目录下,输入 make ARCH=arm menuconfig


然后选择 Device Drivers --->

Network device support --->

Wireless LAN --->

<M> Broadcom 4329/30 wireless cards support

 [*] Use Customized firmware path

 [*] Use Customized NVRAM path

 [*] Use Customized config path

 Interrupt type (Out-of-Band Interrupt) --->


进入 Interrupt type (Out-of-Band Interrupt)--->,选择

(X) Out-of-Band Interrupt


3.1. wifi function

3.1.1. BoardConfig.mk

BoardConfig.mk 文件决定 android 加载哪一款 wifi 模组,要配置成使用 ap6181 模组需要把 BoardConfig.mk

文件的相关代码修改成如下。


# wifi and bt configuration

# 1. Wifi Configuration

#BOARD_WIFI_VENDOR := realtek

BOARD_WIFI_VENDOR := broadcom

# 1.1 broadcom wifi support

ifeq ($(BOARD_WIFI_VENDOR), broadcom)

 BOARD_WPA_SUPPLICANT_DRIVER := NL80211

 WPA_SUPPLICANT_VERSION := VER_0_8_X

 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd

 BOARD_HOSTAPD_DRIVER := NL80211

 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd

 BOARD_WLAN_DEVICE := bcmdhd

 WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path"

 SW_BOARD_USR_WIFI := AP6181

 include hardware/broadcom/wlan/bcmdhd/firmware/firmware-bcm.mk

endif


说明:

1、“#”符号起注释作用;

2、“#BOARD_WIFI_VENDOR := realtek”指明不使用 realtek 系统 wifi 模组;

3、“BOARD_WIFI_VENDOR := broadcom”指明使用 broadcom 系统 wifi 模组;

4、“SW_BOARD_USR_WIFI := AP6181”指明使用 AP6181 模块;


3.1.2. init.rc

init.rc 是资源和服务配置相关的文件,使用 ap6181 wifi 模组需要作如下修改(部分代码)。

添加以下内容加载 wifi 驱动:

#insmod boardcom wifi driver

insmod /system/vendor/modules/bcmdhd.ko


添加以下内容,启动 wpa_supplicant:

# broadcom wifi service

# 1 broadcom wifi station and softap

service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \

 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

 -I/system/etc/wifi/wpa_supplicant_overlay.conf \

 -O/data/misc/wifi/sockets \

 -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0

 class main

 socket wpa_wlan0 dgram 660 wifi wifi

 disabled

 oneshot

# 2 braodcom wifi sta p2p concurrent service

service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \

 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

 -I/system/etc/wifi/wpa_supplicant_overlay.conf \

 -O/data/misc/wifi/sockets -N \

 -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \

 -I/system/etc/wifi/p2p_supplicant_overlay.conf \

 -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \

 -g@android:wpa_wlan0

 class main

 socket wpa_wlan0 dgram 660 wifi wifi

 disabled

 oneshot


3.1.3. eagle_fvd_p1.mk

添加以下内容,使得在设置界面显示 wifi 和 wifi 直连功能:

PRODUCT_COPY_FILES += \

 frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \

 

frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml


3.1.4. config.xml

在 frameworks\base\core\res\res\values\config.xml 文件里添加以下内容,使得在设置界面显示“网络共享与

便携式热点”功能:

<string-array translatable="false" name="config_tether_wifi_regexs">

 <item>"wlan0"</item>

 </string-array>


3.1.5. sys_config.fex

要配置成使用 ap6181 模组需要把 sys_config.fex 文件修改成如下(部分代码)。

[mmc1_para]

sdc_used = 1

sdc_detmode = 4

sdc_buswidth = 4

sdc_clk = port:PG00<2><1><2><default>

sdc_cmd = port:PG01<2><1><2><default>

sdc_d0 = port:PG02<2><1><2><default>

sdc_d1 = port:PG03<2><1><2><default>

sdc_d2 = port:PG04<2><1><2><default>

sdc_d3 = port:PG05<2><1><2><default>

sdc_det =

sdc_use_wp = 0

sdc_wp =

sdc_isio = 1

sdc_regulator = "none"

;--------------------------------------------------------------------------------

;wifi/bt/fm/gps/nfc modules configuration

;module_num:

; 0- none

; 1- rtl8188eu(wifi)

; 2- rtl8723bs(wifi+bt)

; 3- ap6181(wifi)

; 4- ap6210(wifi+bt)

; 5- ap6330(wifi+bt)

; 6- ap6335(wifi)

;module_power0: axp used by module, "axp22_dldo1" - use dldo1, not use keep it empty

;module_power0_vol: power0 voltage, mv;

;chip_en: enable chip io

;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80

;--------------------------------------------------------------------------------

[module_para]


module_num = 3

module_power0 = "axp22_dldo1"

module_power0_vol = 3300000

module_power1 = "axp15_cldo3"

module_power1_vol = 3000000

module_power2 = "axp22_ldoio0"

module_power2_vol = 3000000

module_power3 =

module_power3_vol =

chip_en =

lpo_use_apclk = "ac10032k2"

;--------------------------------------------------------------------------------

;wifi configuration

;wifi_used: 0-not use, 1- use

;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3

;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2

;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0)

;wl_reg_on: wifi function enable io

;wl_host_wake: wifi device wake-up host

;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module

; 0: not used, 1: used

;--------------------------------------------------------------------------------

[wifi_para]

wifi_used = 1

wifi_sdc_id = 1

wifi_usbc_id = 1

wifi_usbc_type = 1

wl_reg_on = port:PL02<1><default><default><0>

wl_host_wake = port:PL03<0><default><default><0>

wl_host_wake_invert = 0


说明:

1、“;”符号起注释作用;

2、“wifi_used”宏赋值为 1 表示使用 wifi,为 0 表示不使用;

3、“wifi_sdc_id”宏表示使用哪个 SD 接口连接 SDIO wifi;

4、“wifi_num”宏表示选用哪一款 wifi 模组;

5、“module_power0”宏表示 wifi 供电电源;

6、“module_power0_vol”宏表示 wifi 供电电源的电压值;

7、“module_power1”宏作用与 module_power0 宏一样;

8、“module_power1_vol”宏作用与 module_power0_vol 宏一样;

9、“module_power2”宏表示 wifi IO 口上拉电阻所接的电压源;

10、“module_power2_vol”宏表示 wifi IO 口上拉电阻所接的电压值;

11、“lpo_use_apclk”宏表示所选择的 32K 时钟源;


注意: 

1、模组供电电源和使用哪些 pin 做为 ap6181 的控制需要根据具体平台而定


3.2. wifi wake host

ap6181 支持 wifi 唤醒休眠主控功能,只需要在 sys_config.fex 的[wakeup_src_para]主键中做添加即可,具体修改如下。

[wakeup_src_para]

cpu_en = 0

cpu_freq = 48

; (cpu:apb:ahb)

pll_ratio = 0x111

dram_selfresh_en = 1

dram_freq = 36

wakeup_src0 =

wakeup_src_wl = port:PL03<4><default><default><0>

bb_wake_ap = port:PM01<4><default><default><0>


说明: 

1、“wakeup_src_wl”子键是为 wifi 唤醒休眠主控而添加的


注: 

1、模组使用哪些 pin 做为 ap6181 的控制需要根据具体平台而定


3.3. ap6181 模组移植相关文件

以下文件是与 ap6181 模组移植相关的,无需再对这些文件作修改,只需了解即可。

一、ap6181 驱动代码

\linux-3.4\drivers\net\wireless\bcmdhd 


二、电源及 GPIO 控制

lichee\linux-3.4\drivers\misc\rf_pm\wifi_pm.c 

lichee\linux-3.4\drivers\misc\rf_pm\module_pm.c 

lichee\linux-3.4\drivers\misc\rf_pmbt_pm.c 

wifi_pm.c 是 ap6181 模组电源和 GPIO 控制的实现文件。

bt_pm.c 是蓝牙电源管理的实现文件。


注: 

1、broadcom 的 ap6xxx 系列模组均是使用相同的 bcmdhd 驱动;


4. ap6210

功能:wifi station、softap、wifi direct、bluetooth

接口类型:SDIO、UART

参考方案:eagle_fvd_p1

编译模式:编译成内核模块,修改路径如下

去到 linux-3.4 目录下,输入 make ARCH=arm menuconfig


然后选择 Device Drivers --->

Network device support --->

Wireless LAN --->

<M> Broadcom 4329/30 wireless cards support

 [*] Use Customized firmware path

 [*] Use Customized NVRAM path

 [*] Use Customized config path

 Interrupt type (Out-of-Band Interrupt) --->


进入 Interrupt type (Out-of-Band Interrupt)--->,选择

(X) Out-of-Band Interrupt


4.1. wifi function

4.1.1. BoardConfig.mk

BoardConfig.mk 文件决定 android 加载哪一款 wifi 模组,要配置成使用 ap6210 模组需要把 BoardConfig.mk

文件的相关代码修改成如下。


# wifi and bt configuration

# 1. Wifi Configuration

#BOARD_WIFI_VENDOR := realtek

BOARD_WIFI_VENDOR := broadcom

# 1.1 broadcom wifi support

ifeq ($(BOARD_WIFI_VENDOR), broadcom)

 BOARD_WPA_SUPPLICANT_DRIVER := NL80211

 WPA_SUPPLICANT_VERSION := VER_0_8_X

 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd

 BOARD_HOSTAPD_DRIVER := NL80211

 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd

 BOARD_WLAN_DEVICE := bcmdhd

 WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path"

 SW_BOARD_USR_WIFI := AP6210

 include hardware/broadcom/wlan/bcmdhd/firmware/firmware-bcm.mk

endif


说明:

1、“#”符号起注释作用;

2、“#BOARD_WIFI_VENDOR := realtek”指明不使用 realtek 系统 wifi 模组;

3、“BOARD_WIFI_VENDOR := broadcom”指明使用 broadcom 系统 wifi 模组;

4、“SW_BOARD_USR_WIFI := AP6210”指明使用 AP6210 模块


4.1.2. init.rc

init.rc 是资源和服务配置相关的文件,使用 ap6210 wifi 模组需要作如下修改(部分代码)。

添加以下内容加载 wifi 驱动:

#insmod boardcom wifi driver

insmod /system/vendor/modules/bcmdhd.ko


4.1.2. init.rc

init.rc 是资源和服务配置相关的文件,使用 ap6210 wifi 模组需要作如下修改(部分代码)。

添加以下内容加载 wifi 驱动:

#insmod boardcom wifi driver

insmod /system/vendor/modules/bcmdhd.ko


4.1.3. eagle_fvd_p1.mk

添加以下内容,使得在设置界面显示 wifi 和 wifi 直连功能:

PRODUCT_COPY_FILES += \

 frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \

frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct

.xml


4.1.4. config.xml

在 frameworks\base\core\res\res\values\config.xml 文件里添加以下内容,使得在设置界面显示“网络共享与便

携式热点”功能:

<string-array translatable="false" name="config_tether_wifi_regexs">

 <item>"wlan0"</item>

 </string-array>


4.1.5. sys_config.fex

要配置成使用 ap6210 模组需要把 sys_config.fex 文件修改成如下(部分代码)。

[mmc1_para]

sdc_used = 1

sdc_detmode = 4

sdc_buswidth = 4

sdc_clk = port:PG00<2><1><2><default>

sdc_cmd = port:PG01<2><1><2><default>

sdc_d0 = port:PG02<2><1><2><default>

sdc_d1 = port:PG03<2><1><2><default>

sdc_d2 = port:PG04<2><1><2><default>

sdc_d3 = port:PG05<2><1><2><default>

sdc_det =

sdc_use_wp = 0

sdc_wp =

sdc_isio = 1

sdc_regulator = "none"

sdc_power_supply = "vcc-wifi-io"

;--------------------------------------------------------------------------------

;wifi/bt/fm/gps/nfc modules configuration

;module_num:

; 0- none

; 1- rtl8188eu(wifi)

; 2- rtl8723bs(wifi+bt)

; 3- ap6181(wifi)

; 4- ap6210(wifi+bt)

; 5- ap6330(wifi+bt)

; 6- ap6335(wifi)

;module_power0: axp used by module, "axp22_dldo1" - use dldo1, not use keep it empty

;module_power0_vol: power0 voltage, mv;

;chip_en: enable chip io

;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80

;--------------------------------------------------------------------------------

[module_para]

module_num = 4

module_power0 = "axp81x_dcdc1"

module_power0_vol = 3300000

module_power1 =

module_power1_vol =

module_power2 =

module_power2_vol =

module_power3 =

module_power3_vol =

chip_en =

lpo_use_apclk = "ac10032k2"

;--------------------------------------------------------------------------------

;wifi configuration

;wifi_used: 0-not use, 1- use

;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3

;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2

;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0)

;wl_reg_on: wifi function enable io

;wl_host_wake: wifi device wake-up host

;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module

; 0: not used, 1: used

;--------------------------------------------------------------------------------

[wifi_para]

wifi_used = 1

wifi_sdc_id = 1

wifi_usbc_id = 1

wifi_usbc_type = 1

wl_reg_on = port:PL02<1><default><default><0>

wl_host_wake = port:PL03<0><default><default><0>

wl_host_wake_invert = 0


说明:

1、“;”符号起注释作用;

2、“wifi_used”宏赋值为 1 表示使用 wifi,为 0 表示不使用;

3、“wifi_sdc_id”宏表示使用哪个 SD 接口连接 SDIO wifi;

4、“wifi_num”宏表示选用哪一款 wifi 模组;

5、“module_power0”宏表示 wifi 供电电源;

6、“module_power0_vol”宏表示 wifi 供电电源的电压值;

7、“module_power1”宏作用与 module_power0 宏一样;

8、“module_power1_vol”宏作用与 module_power0_vol 宏一样;

9、“module_power2”宏表示 wifi IO 口上拉电阻所接的电压源;

10、“module_power2_vol”宏表示 wifi IO 口上拉电阻所接的电压值;

11、“lpo_use_apclk”宏表示所选择的 32K 时钟源


注意:

1、模组供电电源和使用哪些 pin 做为 ap6210 的控制需要根据具体平台而定


4.2. bluetooth function

修改内核配置,把蓝牙休眠功能给选择上。去到 linux-3.4 目录下,输入 make ARCH=arm menuconfig

,把内核中把支持蓝牙休眠功能选择上。

选择 [*] Networking support --->

 <*> Bluetooth subsystem support---> 

 Bluetooth device drivers--->

 <M> Broadcom Bluetooth Low Power Manager Support


注意: 

这里将它编译成模块


4.2.1. BoardConfig.mk

修改 BoardConfig.mk 文件,让其支持 ap6210 的蓝牙功能,修改如下。

# 2. Bluetooth Configuration

# make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor

BOARD_HAVE_BLUETOOTH := true

BOARD_HAVE_BLUETOOTH_BCM := true

#BOARD_HAVE_BLUETOOTH_RTK := true

#BLUETOOTH_HCI_USE_RTK_H5 := true

SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210

BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := 

device/softwinner/eagle-tvd-perf3/bluetooth/

http://bbs.16rd.com/thread-476890-1-1.html

4.2.2. init.rc

修改 init.rc 文件,设置蓝牙属性信息,修改如下。

on boot 

 insmod /system/vendor/modules/bcm_btlpm.ko

# bcm bluetooth

 # uart device

 chmod 660 /dev/ttyS1

 chown bluetooth net_bt_stack /dev/ttyS1

 mkdir /data/misc/bluedroid 770 bluetooth net_bt_stack

 # power up/down interface

 chmod 0660 /sys/class/rfkill/rfkill0/state

 chmod 0660 /sys/class/rfkill/rfkill0/type

 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state

 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type

 #write /sys/class/rfkill/rfkill0/state 0

# bluetooth MAC address programming

 chown bluetooth net_bt_stack ro.bt.bdaddr_path

 chown bluetooth net_bt_stack /system/etc/bluetooth

 chown bluetooth net_bt_stack /data/misc/bluetooth

 setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr"

 # bluetooth LPM

 chmod 0220 /proc/bluetooth/sleep/lpm

 chmod 0220 /proc/bluetooth/sleep/btwrite

 chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm

 chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529038/viewspace-2647973/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一牛网论坛囊括了MTK、高通、射频、PCB、嵌入式、全志、海思等技术,欢迎大家前来学习、讨论

注册时间:2018-03-29

  • 博文量
    234
  • 访问量
    220206