全志H3_wifi模組移植說明文件V-SDK軟體資料
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/
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全志SDK資料,全志H3_dma介面使用說明書
- 全志A40I sys_config.fex使用配置說明,全志A40I軟體開發
- SRS文件 軟體需求說明書
- 全志R11 SDK版本說明書
- 資料移植文件
- 全志R16 tina SDK下載說明,全志R16編譯環境編譯
- Profinet遠端IO模組:模擬量模組_軟體組態說明
- 全志R16 android4平臺移植wifi資料下載AndroidWiFi
- 軟體使用說明書
- 汪子熙趣味成語接龍的遊戲軟體使用文件說明遊戲
- Beta版軟體說明書
- 軟體需求說明書 (轉)
- Java常用中介軟體之 NGINX實現限流功能的官方文件說明JavaNginx
- 軟體需求規格說明書
- 全志R11_tinav2.5_tplayer播放器介面說明書(SDK)播放器
- 全志晶片資料-A10 User Manual晶片
- H3 DragonBox使用說明書,全志H3 SDK開發包Go
- Hyperion模組分類說明
- 軟體需求說明的前世和今生
- 用Excel做資料說明――抽樣說明工具Excel
- 軟體需求規格說明文件(終)
- 軟體需求規格說明文件(初)
- 資料分頁說明
- Oracle 官方文件 結構說明Oracle
- Oracle官方文件結構說明Oracle
- 全網開發都可搭建技術資料庫篇2_如何呼叫沒有文件說明的 Web API資料庫WebAPI
- 全網開發都可搭建技術資料庫篇2_如何呼叫沒有文件說明搭建 Web API資料庫WebAPI
- 軟體開發專案文件系列之五如何撰寫需求規格說明書
- Apache Kafka各Api模組說明ApacheKafkaAPI
- Ocer_軟體功能說明_簡體中文版
- 如何製作Java文件說明書Java
- Gungho專案管理軟體手工安裝說明專案管理
- oracle資料塊轉儲說明Oracle
- Standby資料庫常用操作說明資料庫
- 全志H6方案原理圖資料
- [譯] React-Redux 官方 Hooks 文件說明ReactReduxHook
- knife4j api文件使用說明API
- CH9434-MCU程式碼移植,晶片使用詳細說明(附Linux開發資料連結)晶片Linux