当前位置:文档之家› A33 wifi移植说明书

A33 wifi移植说明书

A33 wifi移植说明书
A33 wifi移植说明书

A33

WiFi移植说明书/V1.0号C o n

f i d e

n t i a

l

文档履历

版本号日期制/修订人制/修订记录

V1.02014-06-06Android4.4 wifi porting initial version

C o n f i d e

n t i a

l

目 录

A33 ............................................................................................................................................................. - 1 - WiFi 移植说明书/V1.0号 ........................................................................................................................ - 1 -

1.1. 编写目的 ................................................................................................................................... - 5 - 1.

2. 适用范围 ................................................................................................................................... - 5 - 1.

3. 相关人员 ................................................................................................................................... - 5 - 2. 模块概述 ............................................................................................................................................... - 6 - 3. 模组移植 ............................................................................................................................................... - 7 -

3.1. ap6181 ........................................................................................................................................ - 7 -

1.1.1. 3.1.1. BoardConfig.mk ............................................................................................ - 7 - 1.1.

2.

3.1.2. init.sun8i.rc .................................................................................................... - 8 - 1.1.3. 3.1.3. astar_evb.mk .................................................................................................. - 9 - 1.1.

4. 3.1.4. config.xml .................................................................................................... - 10 - 1.1.

5. 3.1.5. sys_config.fex .............................................................................................. - 10 - 1.1.

6. 3.1.6. wifi wake host ............................................................................................. - 12 - 1.1.

7. 3.1.7. ap6181 模组移植相关文件 ....................................................................... - 12 - 3.2. ap6210 ...................................................................................................................................... - 13 -

1.1.8. 3.

2.1. BoardConfig.mk .......................................................................................... - 13 - 1.1.9.

3.3.2. init.sun8i.rc .................................................................................................. - 14 - 1.1.10. 3.2.3. astar_evb.mk ................................................................................................ - 15 - 1.1.11. 3.2.

4. config.xml .................................................................................................... - 16 - 1.1.12. 3.2.

5. sys_config.fex .............................................................................................. - 16 - 1.1.13. 3.2.

6. Bluetooth ..................................................................................................... - 18 - 1.1.14. 3.2.

7. wifi&bt wake host ....................................................................................... - 21 - 1.1.15. 3.2.

8. ap6210 模组移植相关文件 ....................................................................... - 22 - 3.3. rtl8188eu .................................................................................................................................. - 22 -

1.1.16. 3.3.1. BoardConfig.mk .......................................................................................... - 23 - 1.1.17. 3.3.

2. init.sun8i.rc .................................................................................................. - 23 - 1.1.18.

3.3.3. polaris-evb.mk ............................................................................................. - 24 - 1.1.19. 3.3.

4. config.xml .................................................................................................... - 25 - 1.1.20. 3.3.

5. sys_config.fex .............................................................................................. - 25 - 1.1.21. 3.3.

6. wifi wake host ............................................................................................. - 26 - 1.1.22. 3.3.

7. rtl8188eu 模组移植相关文件 .................................................................... - 27 - 3.4. rtl8723au .................................................................................................................................. - 27 - 3.5. rtl8723bs ................................................................................................................................... - 27 -

1.1.23. 3.5.1. BoardConfig.mk .......................................................................................... - 27 - 1.1.24. 3.5.

2. init.sun8i.rc .................................................................................................. - 28 - 1.1.25.

3.5.3. polaris-evb.mk ............................................................................................. - 29 - 1.1.26. 3.5.

4. config.xml .................................................................................................... - 29 - 1.1.27. 3.

5.5. sys_config.fex .............................................................................................. - 30 - 1.1.28. 3.5.

6. Bluetooth ..................................................................................................... - 32 - 1.1.29. 3.5.

7. wifi&bt wake host ....................................................................................... - 34 - 1.1.30. 3.5.

8. rtl8723bs 模组移植相关文件 .................................................................... - 35 -

C

o n

f i

d e n

t i

a l

3.6. esp8089 .................................................................................................................................... - 36 -

1.1.31. 3.6.1. BoardConfig.mk .......................................................................................... - 36 -

1.1.3

2.

3.6.2. init.sun8i.rc .................................................................................................. - 37 -

1.1.33. 3.6.3. astar_evb.mk ................................................................................................ - 38 -

1.1.34. 3.6.4. config.xml .................................................................................................... - 38 -

1.1.35. 3.6.5. sys_config.fex .............................................................................................. - 39 -

1.1.36. 3.6.6. wifi wake host ............................................................................................. - 40 -

1.1.37. 3.6.7. esp8089 模组移植相关文件...................................................................... - 40 -4. F&Q...................................................................................................................................................... - 42 -

4.1 如何编译.................................................................................................................................. - 42 -

4.2 常见问题解决.......................................................................................................................... - 42 -

C o n f i d e

n t i a

l

1. 引言

1.1. 编写目的

本文档编写目的是让相关人员按照文档说明使用所支持的wifi ,要使用其中一款只需要修改相关配置即可。同时可以作为移植其它wifi模组参考。

1.2. 适用范围

本文档适用于A33 android4.4 平台移植wifi 使用。

1.3. 相关人员

本文档适合方案开发人员、系统集成人员及wifi模块移植和维护人员。

C o n f i d e

n t i a

l

2. 模块概述

目前a33 android4.4 平台上已支持wifi 模组有5款,本文档将以A33 EVB 板平台为例说明如何配置每款wifi 模组。Rtl8723au 暂不支持

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

本文档会不断更新,文档和代码对应可能会稍有差别。

表1 android4.4 平台wifi 模组列表

注意:

1、内核默认编译所有的realtek wifi 驱动,在确定使用哪一款wifi 的情况下可把其余的去掉,不参与编译,这样可减少最终生成的固件大小,减少烧写时间。

(进入linux-3.4 目录,输入make ARCH=arm menuconfig ,然后选择Device Drivers --->Network device support ,即可看到参与编译的wifi 驱动)

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

到linux-3.4 目录下,输入make ARCH=arm menuconfig 然后选择[*] Networking support ---> < > Bluetooth subsystem support ---> .......

< > RF switch subsystem support --->

模组

功能(协议)

接口

wifi 功能

BT Station Softap

wifi

direct

ap6181 802.11b/g/n

SDIO

√ √ ap6210

802.11b/g/n

Bluetooth 4.0

SDIO/UART/PCM √

√ √ √ rtl8188eu 802.11b/g/n USB

√ √ √ rtl8723au 802.11b/g/n

Bluetooth 4.0

USB/PCM

√ √ √ rtl8723bs 802.11b/g/n

Bluetooth 4.0 SDIO/UART/PCM √

√ √ √ esp8089

802.11b/g/n

SDIO

C

o n

f i

d e n

t i

a l

3. 模组移植

3.1. ap6181

功能:wifi station 、softap 、wifi direct 接口类型:SDIO

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

进入linux-3.4目录,输入make ARCH=arm menuconfig 然后选择Device Drivers --->

Network device support ---> Wireless LAN --->

Broadcom 4329/30 wireless cards support

(/system/vendor/modules/fw_bcmxxxx.bin) Firmware path (/system/vendor/modules/nvram_apxxxx.txt) NVRAM path Interrupt type (Out-of-Band Interrupt) --->

1.1.1. 3.1.1. BoardConfig.mk

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

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

# wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support #BOARD_WIFI_VENDOR := realtek

ifeq ($(BOARD_WIFI_VENDOR), realtek) ...... ...... endif

# 1.2 broadcom wifi support BOARD_WIFI_VENDOR := broadcom

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 :=

C

o n

f i

d e n

t i

a l

"/sys/module/bcmdhd/parameters/firmware_path"

SW_BOARD_USR_WIFI := AP6181 #SW_BOARD_USR_WIFI := AP6210

WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" endif

说明:

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

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

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

4、“WIFI_DRIVER_FW_PATH_STA ”、“WIFI_DRIVER_FW_PATH_P2P ”、“WIFI_DRIVER _FW_PATH_AP ”宏指固件路径;

5、对于broadcom 系列模组,“SW_BOARD_USR_WIFI ”宏只起标识用,无实际用处;

1.1.

2.

3.1.2. init.sun8i.rc

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

insmod /system/vendor/modules/bcmdhd.ko ......

# 2. broadcom wifi service

# 2.1 broadcom wifi station and softap

service wpa_supplicant /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

# we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi

# group wifi inet keystore class main

socket wpa_wlan0 dgram 660 wifi wifi disabled

oneshot

# 2.2 braodcom wifi sta p2p concurrent service

service p2p_supplicant /system/bin/wpa_supplicant \

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

C

o n

f i

d e n

t i

a l

-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

# we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi

# group wifi inet keystore class main

socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot

注意:

1、init.sun8i.rc 文件加载bcm wifi 驱动bcmdhd.ko ,指定开启wpa_supplicant 和p2p_supplicant 两个服务;

2、需要确定realtek 对应的wpa_supplicant 和p2p_supplicant 两个服务被注释掉;

1.1.3. 3.1.3. astar_evb.mk

astar_evb.mk 文件会在编译时拷贝指定文件到特定目录下,使用ap6181 需要做如下修

改。

# wifi & bt config file 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/perm issions/android.hardware.wifi.direct.xml \

# ap6181/6210/6330 sdio wifi fw and nvram $(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk)

注意:

1、以上是把wifi direct 配置文件android.hardware.wifi.direct.xml 拷贝到指定目录;

2、android.hardware.wifi.direct.xml 是在setting 中显示wifi direct 选项;

3、ap6181 的device-bcm.mk 中是拷贝ap6181的fw 和nvram 到指定目录;

C

o n

f i

d e n

t i

a l

1.1.4. 3.1.4. config.xml

config.xml 文件路径:

\android4.4\device\softwinner\polaris-evb\overlay\frameworks\base\core\res\res\values\config.xml

ap6181 驱动代码支持softap 功能,需要作配置才能在setting 中显示softap 功能,具体的配置在config.xml 中实现,修改的部分代码如下。

"wlan0"

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

;wifi configuration

;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) ;wifi_mod_sel --- 0- none, 1- ap6181, 2- ap6210(wifi+bt), ; 3 - rtl8188eu, 4- rtl8723au(wifi+bt)

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

[wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 1 wifi_power = ""

wifi_power_ext1 = "" wifi_power_ext2 = ""

wifi_power_switch = port:power0<1><0><0>

; 1 - ap6181 sdio wifi gpio config

ap6xxx_wl_regon = port:PLXX<1><0> ap6xxx_wl_host_wake = port:PLXX<0><0>

; 2 - ap6210 sdio wifi gpio config

;ap6xxx_wl_regon = port:PLXX<1><0> ;ap6xxx_wl_host_wake = port:PLXX<0><0>

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

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

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

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

5、“wifi_power ”、“wifi_power_ext1”及“wifi_power_ext2”宏表示给模组供电的pin 脚,最大多支持3路;ap6181采用电池供电,故为空字符串。wifi_power_swtich 表示wifi 供电电源开关gpio ,如果硬件上没有应该置为空。

6、“ap6xxx_wl_regon ”、“ap6xxx_wl_host_wake ”是ap6181 的控制引脚;

注意:

1、ap6181模组的供电pin “wifi_power ”、“wifi_power_ext1”及“wifi_power_ext2”需要根据具体硬件电路而设定;

2、模组使用哪些pin 作为控制引脚需要根据具体平台而定;

3、“ap6xxx_wl_host_wake ”必须使用可以产生GPIO 中断的pin ,且在系统休眠能正常

C

o n

f i

d e n

t i

a l

工作;

1.1.6. 3.1.6. 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 = port:PL5<2><1> wakeup_src_wl = port:PLXX<4><0> ;wakeup_src_bt = port:PLXX<4><0>

说明:

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

2、“wakeup_src_wl ”所指定的pin 必须与[wifi_para]主键下ap6181 中的“ap6xxx_wl_host_wake ”指定的pin 保持一致; 注:

1、模组使用哪些pin 作为控制引脚需要根据具体平台而定;

2、由于ap6181不支持bt 功能,如果平台未使用蓝牙,“wakeup_src_bt ”需要注释掉

1.1.7. 3.1.7. ap6181 模组移植相关文件

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

1. ap6181驱动代码

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

2. 电源及 GPIO 控制

\lichee\linux-3.4\arch\arm\mach-sunxi\rf\wifi_pm.c

\lichee\linux-3.4\arch\arm\mach-sunxi\rf\wifi_pm_ap6xxx.c wifi_pm_ap6xxx.c 是ap6181 模组电源和GPIO 控制的实现文件,需要把ap6181 GPIO 控制实现函数

接口添加到wifi_pm.c 。 注:

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

2、broadcom 的ap6xxx 系列模组均是使用相同的wifi_pm_ap6xxx.c 电源管理文件;

C

o n

f i

d e n

t i

a l

3.2. ap6210

功能:wifi station 、softap 、wifi direct 、bluetooth 接口类型:SDIO/UART/PCM

编译模式:必须编成模块加载,修改路径如下

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

Network device support ---> Wireless LAN --->

Broadcom 4329/30 wireless cards support

(/system/vendor/modules/fw_bcmxxxx.bin) Firmware path (/system/vendor/modules/nvram_apxxxx.txt) NVRAM path Interrupt type (Out-of-Band Interrupt) --->

[ ] Low level trigger for OOB interrupt

注意:“ [ ] Low level trigger for OOB interrupt ” 选项是否打开要看实际的原理图, 模组的WL-WAKE-HOST 脚与主控相连中间是否有接反向器,若有接则把该选项选择上。

WL-WAKE-HOST 与主控端有接反向器:

< *> Low level trigger for OOB interrupt WL-WAKE-HOST 与主控端没接反向器:

< > Low level trigger for OOB interrupt

1.1.8. 3.

2.1. BoardConfig.mk

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

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

# wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support #BOARD_WIFI_VENDOR := realtek

ifeq ($(BOARD_WIFI_VENDOR), realtek) ...... ...... endif

# 1.2 broadcom wifi support BOARD_WIFI_VENDOR := broadcom

ifeq ($(BOARD_WIFI_VENDOR), broadcom)

C

o n

f i

d e n

t i

a l

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 SW_BOARD_USR_WIFI := AP6210

WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" endif

说明:

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

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

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

4、“WIFI_DRIVER_FW_PATH_STA ”、“WIFI_DRIVER_FW_PATH_P2P ”、“WIFI_DRIVER _FW_PATH_AP ”宏指固件路径; 6、对于broadcom 系列模组,“SW_BOARD_USR_WIFI ”宏只起标识用,无实际用处;

1.1.9. 3.3.

2. init.sun8i.rc

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

insmod /system/vendor/modules/bcmdhd.ko ........

# 2. broadcom wifi service

# 2.1 broadcom wifi station and softap

service wpa_supplicant /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

# we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi

# group wifi inet keystore class main

C

o n

f i

d e n

t i

a l

socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot

# 2.2 braodcom wifi sta p2p concurrent service

service p2p_supplicant /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

# we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi

# group wifi inet keystore class main

socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot

注意:

1、init.sun8i.rc 文件加载bcm wifi 驱动bcmdhd.ko ,指定开启wpa_supplicant 和p2p_supplicant 两个服务;

2、需要确定realtek 对应的wpa_supplicant 和p2p_supplicant 两个服务被注释掉;

1.1.10. 3.

2.

3. astar_evb.mk

astar_evb.mk 文件会在编译时拷贝指定文件到特定目录下,使用ap6210 需要做如下修改。

# wifi & bt config file 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/perm issions/android.hardware.wifi.direct.xml \

# ap6181/6210/6330 sdio wifi fw and nvram #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) $(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) #$(call inherit-product-if-exists,

C

o n

f i

d e n

t i

a l

hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk)

注意:

1、以上是把wifi direct 配置文件android.hardware.wifi.direct.xml 拷贝到指定目录;

2、android.hardware.wifi.direct.xml 是在setting 中显示wifi direct 选项;

3、ap6210 的device-bcm.mk 中是拷贝ap6210的fw 和nvram 到指定目录;

1.1.11. 3.

2.4. config.xml

config.xml 文件路径:

\android4.4\device\softwinner\polaris-evb\overlay\frameworks\base\core\res\res\values\config.xml

ap6210 驱动代码支持softap 功能,需要作配置才能在设置界面显示softap 功能,具体的配置是在config.xml 中实现,修改的部份代码如下。

"wlan0"

sdc_d2 = port:PG04<2><1><2> sdc_d3 = port:PG05<2><1><2> sdc_det = sdc_use_wp = 0 sdc_wp = sdc_isio = 1

sdc_regulator = "none"

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

;wifi configuration

;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) ;wifi_mod_sel --- 0- none, 1- ap6181, 2- ap6210(wifi+bt), ; 3 - rtl8188eu, 4- rtl8723au(wifi+bt)

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

[wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 2 wifi_power = ""

wifi_power_ext1 = "" wifi_power_ext2 = ""

wifi_power_switch = port:power0<1><0><0>

; 1 - ap6181 sdio wifi gpio config

;ap6xxx_wl_regon = port:PLXX<1><0> ;ap6xxx_wl_host_wake = port:PLXX<4><0>

; 2 - ap6210 sdio wifi gpio config

ap6xxx_wl_regon = port:PLXX<1><0> ap6xxx_wl_host_wake = port:PLXX<4><0> ap6xxx_bt_regon = port:PLXX<1><0> ap6xxx_bt_wake = port:PLXX<1><0> ap6xxx_bt_host_wake = port:PLXX<4><0> ap6xxx_lpo_use_apclk = 1

说明: 1、“;”符号起注释作用; 2、“wifi_used ”宏赋值为1 表示使用wifi ,为0 表示不使用;

C

o n

f i

d e n

t i

a l

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

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

5、“wifi_power ”、“wifi_power_ext1”及“wifi_power_ext2”宏表示给模组供电的pin 脚,最大多支持3路;ap6210采用电池供电,故为空字符串。wifi_power_swtich 表示wifi 供电电源开关gpio ,如果硬件上没有应该置为空。

6、“ap6xxx_wl_regon ”、“ap6xxx_wl_host_wake ”、“ap6xxx_bt_regon ”、“ap6xxx_bt_wake ”、“ap6xxx_bt_host_wake ”是ap6210 的控制引脚;

7、

“ap6xxx_lpo_use_apclk ”表示ap6210是否采用主控的32k 作为时钟输入,0表示不采用,1表示采用。

注意:

1、ap6210模组的供电pin “wifi_power ”、“wifi_power_ext1”及“wifi_power_ext2”需要根据具体硬件电路而设定;

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

3、“ap6xxx_wl_host_wake ”、“ap6xxx_bt_host_wake ”必须连接到可以产生GPIO 中断的pin 脚,且在系统休眠时带电;

1.1.13. 3.

2.6. Bluetooth

要使用ap6210 蓝牙功能需要做7个修改,分别如下: (1) 内核中把支持蓝牙休眠功能选择上,具体修改如下。 进入linux-3.4 目录下,输入make ARCH=arm menuconfig 选择-> Networking support (NET [=y])

-> Bluetooth subsystem support (BT [=y]) -> Bluetooth device drivers

-> <*> Bluetooth Low Power Manager Support

< > An inverter between bt hostwake pin and cpu

注意:“< > An inverter between bt hostwake pin and cpu ”选项是否打开要看实际的原理图,模组的BT-WAKE-HOST 脚与主控相连中间是否有接反向器,若有接则把该选项选择上。

BT-WAKE-HOST 与主控端有接反向器:

< *> An inverter between bt hostwake pin and cpu BT-WAKE-HOST 与主控端没接反向器:

< > An inverter between bt hostwake pin and cpu

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

# bt default config

BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/polaris-evb/bluetooth

# 2. Bluetooth Configuration

C

o n

f i

d e n

t i

a l

# make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_BCM := true

SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210 #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330

(3) 修改init.sun8i.rc 文件,设置蓝牙的属性信息,修改如下。

# bluetooth

# UART device

chmod 0660 /dev/ttyS1

chown bluetooth net_bt_stack /dev/ttyS1

# 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

# 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

(4) 修改astar_evb.mk 文件,添加bluetooth.xml 文件,使界面显示蓝牙开关;ap6210支持bt le 功能,需要加入bluetooth_le.xml 系统才能支持;加入ap6210蓝牙功能使用的firmware ;打包编译Bluetooth.apk

# wifi & bt config file 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/perm issions/android.hardware.wifi.direct.xml \

frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permis sions/android.hardware.bluetooth.xml \

frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/per missions/android.hardware.bluetooth_le.xml ....................

# ap6181/6210/6330 sdio wifi fw and nvram #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) $(call inherit-product-if-exists,

C

o n

f i

d e n

t i

a l

hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk) .............

PRODUCT_PACKAGES += Bluetooth

(5) ap6210支持蓝牙共享网络功能,需要在config.xml 配置才能支持。 config 文件路径:

\android4.4\device\softwinner\polaris-evb\overlay\frameworks\base\core\res\res\values\config.xml

"bt-pan"

(6) 修改sys_config.fex 文件,把使用蓝牙项打开并且打开uart1 [uart1]

uart_used = 1 uart_port = 1 uart_type = 4

uart_tx = port:PG06<2><1> uart_rx = port:PG07<2><1> uart_rts = port:PG08<2><1> uart_cts = port:PG09<2><1>

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

;blue tooth

;bt_used ---- blue tooth used (0- no used, 1- used) ;bt_uard_id ---- uart index

;-------------------------------------------------------------------------------- [bt_para] bt_used = 1 bt_uart_id = 1

(7) 拷贝ap6210 bt 配置文件到方案bluetooth 目录

拷贝android/device/softwinner/polaris-p2/bluetooth/bdroid_buildcfg.h 配置文件到/device/softwinner/xxxxx/bluetooth/目录,同时修改BTM_DEF_LOCAL_NAME 选项,

C

o n

f i

d e n

t i

a l

单片机wifi方案

WIFI设备配置 一、模块性能: 工作模式:基础网络和Ad-Hoc网络 网络类型:802.11b/g 加密方式:64/128位wep加密 发射功率:20dbm 功耗:150mA@3.3V 距离:可视50m Tcp/ip协议栈:Lwip 操作系统:无 速率:UDP的速度180-200KB/s 二、w ifi初始化默认配置及使用 模块默认配置: ?网络类型:adhoc ?创建网络名称:marvel ?加密方式:无加密 ?ip地址:192.168.10.10 ?子网掩码:255.255.255.0 ?默认网关:192.168.10.1 ?DNS服务器:202.96.134.133 ?UDP连接:udp对任意IP和端口号应答 ?TCP客户端192.168.10.10:8080 TCP服务器:192.168.10.100:8080 ?模块内置有web配置页,修改相应配置登陆http://192.168.10.10 Demo使用 模块上电以后会自动创建一个“计算机到计算机”的adhoc网络,名称为“marvel”。PC端只需打开无线网络管理软件,并搜索网络即可找到“marvel”。直接连接到“marvel”,并将无线网卡的IP修改为192.168.10.0/24网段,如下图所示:

图1 PC端IP地址配置 经由以上配置及连接,接下来可以测试模块工作性能,模块内建有192.168.10.10:8080端口至任意IP地址和端口的UDP回显连接,以及192.168.10.10:8080-192.168.10.100:8080的tcp连接,模块作TCP客户端使用。 1)测试网络是否连通,使用ping命令执行ping 192.168.10.10,得到结果如下: 图2 ping命令测试结果 2)Udp回显测试 图3 UDP测试结果

WIFI安装说明书

wifi使用说明 wifi上网认证有三种:web+dhcp页面认证和天翼宽带客户端软件方式,pppoe拨号登录上网方式。wifi认证登录方式具体操作如以下说明: a: 使用pc连接中国电信chinanet热点 1. 使用web+dhcp页面认证方式 如果没有密码可以点击获取密码,会有短信发送到您手机上,告知一个5小时时限的临时密码。如需要固定密码可以到营业厅申请。 账号密码认证成功后如下图 注意:不要关掉该网页,在wifi上网过程中,请将该网页要保持打开并最小化。 2. 使用天翼宽带客户端软件上网方式 先在设置项对wifi账号进行设置如图 然后进行wifi连接,如图 wifi连接成功后就可以正常上网了。 3. pppoe拨号认证登录上网方式,和家庭宽带拨号方式一样,把手机账号和密码输入就可 以上网,需要注意的是:①先要连接chinanet信号,才能进行下图拨号认证。②密码可以到营业厅进行绑定固定密码,这样就不需要每次获取新密码。web+dhcp页面认证方式由于port服务器问题,经常出现页面弹不出来情况,pppoe拨号方式可以正常认证上网。按照下面步骤设置pppoe拨号:首先如下图打开网络连接,创建一个新的拨号连接。 点击下一步: 选手动设置我的连接篇二:wifi路由器安装配置说明 v1 商圈网wifi路由器安装配置说明 v1 1-1、安装路由器天线,确认安装牢固。 1-2、连接路由器电源插口,确认电源指示灯亮。 2、商圈网路由器的wan 口连接商家路由器的lan 口。(商圈网路由器的wan 口是靠近电源的那个接口) 3、设置设备连接无线热点wifiportal-xxxxxx 4-1、进入首页,往下翻确认“网络”-“ipv4 wan 状态”是否已经获取到ip 4-2、修改ssid,点击“网络”-“无线”,选择“修改按”钮进入。 4-3、热点id 统一修改为“ixinjiekou@商户名”注意区分大小写。 4-4、然后选择“保存&应用”配置的按钮 4-5、设备重新连接到修改后的热点id “ixinjiekou@test” 4-6、然后打开浏览器,进入选择“系统”菜单-点击“重启”,选择“执行重启”。 5、待设备重启完毕,重新连接热点确认portal 页面可以弹出,并亲自认证确认可以上网。 6、告知用户使用方式,并确定其会使用。篇三:随身wifi驱动安装@简要操作说明 .cn zk-n2721(智开随身wifi) 驱动安装步骤 v1.0 2014-01-16 .cn 一、简介说明 驱动程序(device driver)全称为“设备驱动程序”,是一种可以使计算机中央处理器——cpu控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬

WIFI移植全过程

基于S3C S3C242424440的SDIO 卡WIFI 移植移植 1112/1112/yangjun yangjun yangjun 环境:Ubuntu10.10 LINUX2.26.38 交叉编译工具链:arm-linux-gcc 一、SDIO 设备驱动移植 1、 修改SD 卡驱动使内核支持SD 卡 修改文件:arch/arm/mach-s3c2440/mach-smdk2440.c 添加所需头文件: #include #include #include //增加平台设备对sd 卡的支持 static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &s3c_device_sdi, }; //添加平台数据dev->platform_data static struct s3c24xx_mci_pdata smdk2440_mmc_cfg __initdata={ .gpio_detect = S3C2410_GPG(8),//此处保留为使用中断号8,看芯片手册 .set_power = NULL, .ocr_avail = MMC_VDD_32_33, }; 2、 在smdk2440_machine_init 中添加 s3c24xx_mci_set_platdata(&smdk2440_mmc_cfg); 二、配置内核以支持Marvel 无线WIFI 选择38内核中的wlan marwell sdio 模块

android wifi详细

Contents 1. Wifi扫盲 (2) 2. Android Wifi框架的结构图 (3) 3. wpa_supplient (3) 4. Netd (5) 5. FrameWork层架构 (5) 6. 情景分析 (5) 6.1. 情景1 (5) 6.2. 情景2 (8) 6.3. 情景3 (8) 7.Ad hoc的支持 (10) 8.wifi direct (12) 9.Soft ap支持 (12) 10.Wifi Tethering支持 (15) https://www.doczj.com/doc/21635144.html,b Tethering支持 (15) 12.Reverse usb Tethering (16) 13.Ethernet Tethering (17) 14.需要改动的地方 (17) 15.测试 (17) 16.调试中遇到的问题 (18)

1. Wifi扫盲 Access point:也叫hotspot(热点),家里的无线路由就是ap。 SoftAp:软ap,用无线网卡模拟ap的功能。 Wifi网络有两种模式: ?Infrastructure mode, in which wireless clients are connected to an access point. This is generally the default mode for 802.11b cards. ?Ad hoc mode, in which clients are connected to one another without any access point. 请参考https://www.doczj.com/doc/21635144.html,/contents/wifi/wifimodes.php3 我们既可以通过Ad hoc也可以通过SoftAp方式来实现共享网络(例如手机可以通过笔记本访问internet),但是原理不同。 这里只是简单的概括,详细的解释请google或百度。

WiFi的基本操作

1载入文件 1.1载入驱动文件 编译后驱动会生成在wifi_project/out/kmod目录下,拷贝所需的驱动到单板中。各个WiFi的驱动文件如下: mt7601u cfg80211.ko、mtprealloc.ko、mt7601Usta.ko rtl8188ftv cfg80211.ko、8188fu.ko rtl8188eus cfg80211.ko、8188eu.ko rtl8189ftv cfg80211.ko、8189fs.ko ap6181/ap6212/ap6212a/ap6214a/ap6255 cfg80211.ko、bcmdhd.ko cfg80211.ko文件请在kernel的net/wireless目录下拷贝。 驱动在单板上的目录不重要,比如可以放在/kmod目录。 1.2载入firmware文件 如果要使用Broadcom的ap6181芯片,请执行如下操作:

在单板上建立目录/etc/firmware,将wifi_project/firmware/sdio_ap6181文件夹下的 固件文件fw_bcm40181a2.bin、fw_bcm40181a2_apsta.bin和nvram.txt下载到单板 此目录下。ap6212/ap6212a/ap6214a/ap6255请拷贝wifi_project/firmware 对应目录 的firmware和nvram文件。 如果要使用MediaTek的mt7601u,请执行如下操作: 在单板上建立目录/etc/Wireless/RT2870STA,将 wifi_project/firmware/usb_mt7601u 文件夹下的固件MT7601USTA.dat下载到单板此目录下。 RealTek的芯片rtl8188ftv、rtl8188eus和rtl8189ftv不需要额外加载固件。 1.3载入工具 将wifi_project/out/lib目录下的libnl-genl.so.2.0.0、libnl.so.2.0.0拷贝到单板的/lib 目录。进入单板/lib目录,创建这两个文件的软链接: ln–s libnl-genl.so.2.0.0libnl-genl.so.2 ln–s libnl.so.2.0.0libnl.so.2 拷贝wifi_project/out/tools目录下的iwconfig、iwlist、iwpriv、iperf拷贝到单板的 /sbin目录下。这几个是调试工具,实际使用时可以不用拷贝这几个文件。

随身wifi驱动安装@简要操作说明

ZK-N2721(智开随身wifi)驱动安装步骤 V1.0 2014-01-16

一、简介说明 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机中央处理器——CPU控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬件设备的工作。所有的硬件都要安装驱动程序,没有驱动程序的硬件是运行不了的,就像一辆有轮胎但是没有传动轴的汽车一样跑不起来。 智开随身wifi的驱动拥有两个模式:无线网卡模式,softAP模式(随身wifi模式)。产品会附带有驱动光盘,也可直接到智开官网https://www.doczj.com/doc/21635144.html,下载。 二、驱动安装 1.1驱动光盘包含两个文件 前者为安装驱动包,后者为安装简要说明 1.2安装步骤 以下以中文系统为例子,其驱动安装语言根据PC系统语言而定。 1.2.1点击驱动安装,选择安装驱动和无线设定程序

建议选第一个,选择第二个无随身wifi功能。 1.2.2选择无线设定程序 Ralink 或者微软的 也建议选是第一个。 1.2.3驱动安装完成 安装完成后右下角任务栏出现图标 此时默认是无线网卡的模式 插入网卡,右击右下角本地连接 选择禁用电脑原来的有线网卡。

1.3Ralink无线设定程序的使用1.3.1打开界面 双击图标出现网卡程序设置界面 1.3.2无线搜索 点第一个图标搜索无线信号

1.3.3无线连接 双击能用的无线信号,如果无线信号没密码就直接上网,有密码是这个情况: 点击下一步输入密码 这时候就连上网了 三、随身WIFI(无线AP模式) 此模式下需要电脑已经连上网线,可以上网。 1、在控制面板-网络连接处双击启动刚刚被禁用的网卡。 如果没有禁用则跳过这步骤。

小米随身wifI接受无线网教程

Win7用小米随身wifi接收wifi方法 台式机使用小米随身wifi,开启接收功能(无线网卡功能) 为了效果更明显,有插上网线的网友,可以先将有线网卡禁用掉(或者拔掉网线)。平时使用可以有线网卡和小米随身wifi同时使用,实现双网卡和一个wifi热点的共享。 第一步: 去https://www.doczj.com/doc/21635144.html,下载随身WIFI的驱动,得到安装文件: 插上小米随身wifi,然后才双击安装文件,进行小米驱动安装,进行到安装完成后,按ctrl+alt+del调出任务管理器,关闭安装程序的进程(图示第二个进程便是安装程序的进程)此图直接借用网友的(此为win7图,win8、win8.1类似的) 到此小米随身WIFI的无线网卡驱动安装完成(记住千万不要点开始使用喔, 否则就是随身WIFI模式了!如想永远当网卡使用,也不要运行桌面的快捷方式(可以把桌面的快捷方式删除掉,避免以后误用)和程序组里

的小米随身WIFI程序,切记!切记!) 如果不小心变成了wifi模式,就卸载掉wifi驱动,到开始——小米随身wifi——卸载小米随身wifi,卸载之后,再重复上面的安装过程即可。 此时,系统会自动再装一个驱动,等这个驱动装完,就可以使用正常的无线网卡接收功能(有时这个过程有,有时没有)。

第二步:共享无线网 1.从开始菜单找到“命令提示符”,或直接键入cmd快速搜索,右键单击它,选择“以管理员身份运行”,在弹出的用户控制窗口中单击“是”。 2.运行以下命令启用虚拟无线网卡:netsh wlan set hostednetwork mode=allow ssid=(这里写无线网名字) key=(这里是密码) 3. 启用“Internet连接共享(ICS)”打开“网络连接”窗口,右键单击已连接到Internet的网络连接,选择“属性”,切换到“共享”选项卡,选中其中的复选框,并选择允许其共享Internet的网络连接在这里即我们的虚拟Wifi网卡。 4. 开启无线网络,继续在命令提示符中运行以下命令:netsh wlan start hostednetwork,即可开启我们之前设置好的无线网络(相当于打开路由器的无线功能。同理,将start改为stop即可关闭该无线网)。 PS 当我们电脑重启之后无线网络会自动关闭了,再次开机的时候需要重新开启无线网络,是不是感觉很麻烦?不用怕~~我们新建一个文本文档输入“netsh wlan start hostednetwork”,然后保存为BAT格式,改名为开启wifi,放到桌面上就OK了!当然,如果你想让他开机自启的话也简单,把这个文件复制到开始菜单中的启动文件夹里面就行了! 参考: https://www.doczj.com/doc/21635144.html,/forum.php?mod=viewthread&tid=9090889&extra= page%3D5%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3D dateline(第一步就是参照这位大神的)。 https://www.doczj.com/doc/21635144.html,/article/9113f81bc36ba12b3314c77f.html

Linux 下wifi 驱动开发—— USB接口WiFi驱动浅析

Linux 下wifi 驱动开发(四)——USB接口WiFi驱动浅析 前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同。而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动、USB鼠标驱动,同样都符合LinuxUSB驱动结构: USB设备驱动(字符设备、块设备、网络设备) | USB 核心 | USB主机控制器驱动 不同之处只是在于USB摄像头驱动是字符设备,而我们今天要学习的WiFi驱动是网络设备;当然由我们编写的部分还是USB设备驱动部分,下面进入USB接口WiFi驱动的分析,如何分析呢?我们下面从这几个方面入手: 从硬件层面上看,WIFI设备与CPU通信是通过USB接口的,与其他WIFI设备之间的通信是通过无线射频(RF)。 从软件层面上看,Linux操作系统要管理WIFI设备,那么就要将WIFI设备挂载到USB总线上,通过USB子系统实现管理。而同时为了对接网络,又将WIFI设备封装成一个网络设备。 我们以USB接口的WIFI模块进行分析: a -- 从USB总线的角度去看,它是USB设备; b -- 从Linux设备的分类上看,它又是网络设备; c -- 从WIFI本身的角度去看,它又有自己独特的功能及属性,因此它又是一个私有的设备; 通过上述的分析,我们只要抓住这三条线索深入去分析它的驱动源码,整个WIFI驱动框架就会浮现在你眼前。 一、框架整理 1、USB设备驱动 现在我们先从USB设备开始,要写一个USB设备驱动,那么大致步骤如下: a -- 需要针对该设备定义一个USB驱动,对应到代码中即定义一个usb_driver结构体变量 代码如下: [cpp]view plain copy b -- 填充该设备的usb_driver结构体成员变量 代码如下: [cpp]view plain copy

SDIO_WIFI之我对WIFI了解

SDIO_WIFI分析WIFI之我见 作者:黄树新 时间:2011-11-18 地点:华清远见深圳分中心 SDIO_WIFI整个设备分为两个部分,一个是SD卡,一个是WIFI。SD卡部分主要涉及的重点在与如何识别SD卡和支持热拔插,而WIFI部分主要的重点在于发送和接收数据,现在,由小弟带着大家走一遭,本文涉及内容完全属于个人对WIFI部分理解,属于个人观点,如有错误,欢迎指导纠正。 WIFI驱动属于网络设备驱动,那么我们首先从它的结构出发,要了解它的结构,我们首先了解一般网络设备驱动的结构。 下图1是LINUX下网络驱动程序的体系结构: 图1 1、网络协议接口层想网络层协议提供一个统一的数据包收发接口,不论是 上层协议为APP还是IP,都通过dev_queue_xmit()函数发送数据,并通 过netif_rx()函数接收数据。这一层的存在使得上层协议独立于具体的 设备。 2、网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和 操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。 实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能 层的结构。 3、设备驱动功能层函数是网络设备接口层net_device数据结构的具体成

员,是驱使网络设备硬件完成相应动作的程序,它通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接收操作。 4、网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配 器和具体的传输媒介,网络适配器被设备驱动层中得函数物理上的驱动。 对于LINUX系统来说,网络设备和媒介可以是虚拟的。 在设计具体的网络设备驱动程序时,我们需要完成的主要工作是编写设备驱动功能层的相关函数以填充net_device数据结构的内容并将net_device注册入内核。 在进入正式驱动之前,还是要给大家补充一点基础知识,就是如何管理总线,设备,驱动之间关系的,关于bus_type、device_driver、device这三个内核结构,在内核代码中可以找到。由于这三个结构的重要性,我们在这里先将它们贴出来,我会用红色的注释标注。我在笔记中将会提到的一些结构成员以其代表的意义,这样便于对照。(我不得不承认,这三个结构的代码枯燥复杂。如果我误导了你,请指正我,所以我的建议是不妨先看完了笔记再来看这些结构)。 1、设备结构的定义: struct device { struct klist klist_children; struct klist_node knode_parent; /* node in sibling list */ struct klist_node knode_driver; struct klist_node knode_bus; struct device *parent; struct kobject kobj; //kobject结构,关于这个结构与kset结构以及 subsystem结构,笔记中会有描述。 char bus_id[BUS_ID_SIZE]; /* position on parent bus */ struct device_type *type; unsigned is_registered:1; unsigned uevent_suppress:1; struct semaphore sem; /* semaphore to synchronize calls to* its driver.*/ struct bus_type * bus; /* type of bus device is on //这个设备挂接的总线的类型 struct device_driver *driver; /* which driver has allocated this device */ //这个设备挂接的驱动 void *driver_data; /* data private to the driver */ void *platform_data; /* Platform specific data, device core doesn't touch it */ struct dev_pm_info power; #ifdef CONFIG_NUMA int numa_node; /* NUMA node this device is close to */ #endif u64 *dma_mask; /* dma mask (if dma'able device) */ u64 coherent_dma_mask;/* Like dma_mask, but for alloc_coherent mappings as not all hardware supports 64 bit addresses for consistent

wifi框架简介

一、wifi 组建原理: WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是一个无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”。 一般架设无线网络的基本配备就是无线网卡及一个AP(无线接入点)。有了AP,就像一般有线网络的Hub一般,无线工作站可以快速且轻易地与网络相连。特别是对于宽带的使用,WiFi更显优势,有线宽带网络(ADSL、小区LAN等)到户后,连接到一个AP,然后在电脑中安装一块无线网卡即可上网。普通的家庭有一个AP已经足够,甚至用户的邻里得到授权后,则无需增加端口,也能以共享的方式上网。 二、=================== android WIFI 框架 ======================= ---------------------------------------------------------------------------------------------------

三、Android平台Wifi 编译前基本代码路径及文件名(根文件系统的源码下) 1、Wifi setting 部分(Java应用层) 位于packages/apps/Settings/src/com/android/settings/wifi/ WifiSettings.java&WifiEnabler.java 2、JAVA Framework部分 位于frameworks/base/services/java/com/android/server/ WifiService.jav a &Wifi Watchdog Service.java 位于frameworks/base/wifi/java/android/net/wifi/ WifiManager.java&WifiMonitoer.java&WifiStateTracker.java &WifiNative.java 3. Wifi的JNI部分 位于frameworks/base/core/jni/android_net_wifi_Wifi.cpp 4. Wifi的HAL层代码(wpa_supplicant适配器层) 位于hardware/libhardware_legary/wifi/wifi.c 5. Wpa_supplicant程序的源码部分(tools) 位于external/wpa_supplicant_6/ external/wpa_supplicant/ 生成库libwpa_client.so 和守护进程wpa_supplicant 6.kernel (wifi 驱动*.ko) 位于 net/wireless drivers/wlan_sd8688 arch/arm/mach-pxa/wlan_pm.c 四、每一层编译后的所在位置

wifi智能手机通过win7支持无线承载虚拟APwifi无线网卡共享上网的步骤.

一、win7 用管理员身份运行该CMD命令后,进行创建WIFI虚拟网卡, netsh wlan set hostednetwork mode=allow netsh wlan set hostednetwork ssid=OPEN key=123 4567890 netsh wlan start hostednetwork 二、或者用virtual route manager软件虚拟wifi无线网卡当做无线AP 三、判断无线网卡是否支持“无线承载网络”的方法 “无线承载网络”(Wireless Hosted Network)是Windows 7 中的一个新功能,可以在物理网卡的基础上再虚拟出一块无线网卡,这块虚拟网卡专门用来向周围的计算机或设备提供“无线接入点”,甚至共享Internet 连接。相关详细技术信息可以阅读《关于无线承载网络》。 这个功能是Windows 7 和Windows Server 2008 R2 中的一项新功能,以前的系统中没有。因此,为了实现这个驱动层级的功能,必须保证无线网卡的驱动程序满足Windows 7 的开发标准。因为无线网卡驱动程序必须支持“无线承载网络”才能通过“Windows 7 徽标认证”,因此在购买的时候判断起来还是比较容易的,只要选择带有Windows 7 徽标的无线网卡即可。 某些较旧的无线网卡,在试图启动该功能时会出现“无法启动承载网络。组或资源的状态不是执行请求操作的正确状态。”的错误提示。这一般是因为驱动程序不支持“无线承载网络”,而无法实现这个功能。那我们有什么方便的方法可以快速判断自己已经购买的无线网卡是否支持“无线承载网络”呢? 其实很简单,只需要在“命令提示符”下运行下列命令: netsh wlan show drivers

windows7自带的无线WIFI功能设置

开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买费。HTC亲测通过,比conncetify方便,稳定,网速好! 以操作系统为win7的笔记本或装有无线网卡的台式机作为主机。 主机设置如下: 1、以管理员身份运行命令提示符: “开始”---在搜索栏输入“cmd”----右键以“管理员身份运行” 2、启用并设定虚拟WiFi网卡: 运行命令:netsh wlan set hostednetwork mode=allow ssid=Happiness key=123456789 (注意:上边命令"ssid"后为网络名称,自己随便命名,比如Happiness可改为MyWiFi等等,自己喜欢怎么命名都行."Key"后边红字为密码,自己随便设置,比如123456789 可以改为自己手机号码,总之自己命名就可以了,不一定非得这个网络名称,这个密码,密码8位以上就好) 此命令有三个参数: 1、mode:是否启用虚拟WiFi网卡,改为disallow则为禁用。 2、ssid:无线网名称,最好用英文(以Happiness为例),即要设定的wifi名称。 3、key:无线网密码,八个以上字符(以123456789为例),即你要设定的wifi 密码。 以上三个参数可以单独使用,例如只使用mode=disallow可以直接禁用虚拟Wifi

网卡。 相信以前用过DOS的人都知道怎么运行命令了,那就是输入按回车netsh wlan set hostednetwork mode=allow ssid=Happiness key=liqingwei 运行之后看到以下内容: 打开“网络和共享中心”--“更改适配器设置”看看是不是多了一项,若果有多出的这一项“Microsoft Virtual WiFi Miniport Adapter”,那么说明你前边的设置是正确的。

WiFi驱动移植到Linux

linux下移植之WIFI驱动 2010-05-14 22:27 1.前言 硬件平台: imx27+sd8686 软件平台: linux 内核: 2.6.27 2.移植思想 1, WIFI 模块本身和 cpu 之间的接口; 我们的模块和 cpu 之间的接口是 sdio 的,也就是说必须要先保证SDIO 本身是工作的,与SD卡,MMC属于同类型。主要用到这几个GPIO引脚SD0...SD3,SD2_CMD,SD2_CLK,以及复位引脚PB24. 2, WIFI 模块本身的上电时序; 模块都有它自己的规律,所以必须要根据 spec 了解它本身的上电过程,严格遵守; 3,以太网接口的创建; 我们的 WIFI 模块本身是建立在 SDIO 口之上的,而对上都是提供以太网接口的,所以必须要保证这个接口以及创建; 4,特殊处理; 不同的模块都有它特别的地方,比如我们用的是 8686 和 compo 也就是说它和蓝牙共用天线,所以需要在初始化的时候做特殊的处理,发送特殊的命令,才能工作; 3.移植过程 1,sdio本身是通过gpio口模拟的,所以需要对gpio口进行配置; static mfp_cfg_t littleton_mmc3_pins[] = { GPIO7_2_MMC3_DAT0,

GPIO8_2_MMC3_DAT1, GPIO9_2_MMC3_DAT2, GPIO10_2_MMC3_DAT3, GPIO103_MMC3_CLK, GPIO105_MMC3_CMD, }; 2,wifi模块本身的初始化; #define MFP_WIFI_V18_ENABLE (GPIO26_GPIO) #define MFP_WLAN_RESETN (GPIO99_GPIO) #define WIFI_WAKEUP_HOST (GPIO104_GPIO) /*error must be changed*/ #define WLAN_ENABLE_PIN 26 #define WLAN_RESET_PIN 99 #define M200_B #ifdef M200_B #define BT_RESET_PIN EXT1_GPIO(1) #define BT_RESET_GPIO (GPIO1_2_GPIO) #else #define BT_RESET_GPIO (GPIO6_2_GPIO) #define BT_RESET_PIN EXT1_GPIO(6) #endif static mfp_cfg_t lin2008_wifibt_pins[] = { MFP_WIFI_V18_ENABLE,

wifi使用说明书

wifi使用说明书 WiFi已经走进了人们的生活当中,成为了人们不可分割的一部分。小编为大家整理了wifi使用说明书,供大家参考阅读! wifi使用说明书 wifi上网认证有三种:web+dhcp页面认证和天翼宽带客户端软件方式,pppoe拨号登录上网方式。wifi认证登录方式具体操作如以下说明: a: 使用pc连接中国电信chinanet热点 1. 使用web+dhcp页面认证方式 如果没有密码可以点击获取密码,会有短信发送到您手机上,告知一个5小时时限的临时密码。如需要固定密码可以到营业厅申请。 账号密码认证成功后

注意:不要关掉该网页,在wifi上网过程中,请将该网页要保持打开并最小化。 2. 使用天翼宽带客户端软件上网方式 先在设置项对wifi账号进行设置如图 然后进行wifi连接 wifi连接成功后就可以正常上网了。 3. pppoe拨号认证登录上网方式,和家庭宽带拨号方式一样,把手机账号和密码输入就可 以上网,需要注意的是:①先要连接chinanet信号,才能进行下图拨号认证。②密码可以到营业厅进行绑定固定密码,这样就不需要每次获取新密码。web+dhcp页面认证方式由于port服务器问题,经常出现页面弹不出来情况,pppoe拨号方式可以正常认证上网。 wifi路由器安装配置说明

1-1、安装路由器天线,确认安装牢固。 1-2、连接路由器电源插口,确认电源指示灯亮。 2、商圈网路由器的wan 口连接商家路由器的lan 口。(商圈网路由器的wan 口是靠近电源的那个接口) 3、设置设备连接无线热点wifiportal-xxxxxx 4-1、进入首页,往下翻确认“网络”-“ipv4 wan 状态”是否已经获取到ip 4-2、修改ssid,点击“网络”-“无线”,选择“修改按”钮进入。 4-3、热点id 统一修改为“ixinjiekou@商户名”注意区分大小写。 4-4、然后选择“保存&应用”配置的按钮 4-5、设备重新连接到修改后的热点id “ixinjiekou@test” 4-6、然后打开浏览器,进入选择“系统”菜单-点击“重启”,选择“执行重启”。

wifi驱动分析文档

WLAN驱动分析文档

目录 1 引言 (3) 1.1 目的 (3) 1.2 项目背景 (3) 1.3 参考资料 (3) 2 预备知识 (3) 2.1 WLAN技术 (3) 2.2 802.11协议简述 (3) 2.2.1 概述 (3) 2.2.2 802.11工作方式 (4) 2.2.3 802.11物理层 (4) 2.2.4 802.11b的增强物理层 (4) 2.2.5 802.11数字链路层 (5) 2.2.6 联合结构、蜂窝结构和漫游 (5) 2.3 802.11四种主要物理组件 (6) 2.4 802.11 MAX基础 (6) 2.4.1 802.11原子帧传送 (6) 2.4.2 RTS/CTS (7) 2.4.3 载波监听功能 (7) 2.4.4 帧间间隔 (8) 2.4.5 DCF竞争服务 (8) 2.4.6 封包帧 (9) 2.4.7 PCF无竞争服务 (9) 3 802.11e WMM应用介绍 (10) 3.1 802.11e与802.11的不同 (10) 3.2 802.11e WMM模块的原理 (10) 4 WLAN驱动结构介绍 (12) 4.1 SDIO驱动 (12) 4.2 详细接口及代码分析 (12) 4.2.1 SDIO注册流程分析 (12) 4.2.2 WILAN驱动流程分析 (14)

1引言 1.1目的 通过编写阅读本文档,可以达到如下目的: 1.对WLAN技术有一定了解 2.对802.11a、802.11b及相应的扩展协议有一定的了解 3.详细阐述了WLAN驱动的原理及802.11e的WMM扩展。 4.对Android LIB层与WLAN驱动的接口暂时并无描述。 1.2项目背景 该项目主要是利用android的开源结构,以三星的S3C6410为CPU,AW-GH381为WLAN 网络接口卡的一款android手机系统。 1.3参考资料 1.WLAN DesignGuide by Agilent 2.Providing QoS in WLANs by intel 2预备知识 2.1WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。 2.2802.11协议简述 2.2.1概述 作为全球公认的局域网权威,IEEE802工作组建立的标准在过去二十年内在局域网领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T 快速以太网协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域网领域内的第一个国际上被认可的协议。在1999年9月,他们又提出了802.11b"HighRate"协议,用来对802.11协议进行补充,802.11b在802.11的1Mbps和2Mbps 速率下又增加了5.5Mbps和11Mbps两个新的网络吞吐速率。利用802.11b,移动用户能够获得同Ethernet一样的性能、网络吞吐率、可用性。这个基于标准的技术使得管理员可以根据环境选择合适的局域网技术来构造自己的网络,满足他们的商业用户和其他用户的需求。802.11协议主要工作在ISO协议的最低两层上,并在物理层上进行了一些改动,加入了高速数字传输的特性和连接的稳定性。 主要内容:

mtkwifidriver驱动的分析

管理篇 接收到扫描完毕 nicRxSDIOAggReceiveRFBs sdio有两个通道,两个通道获取数据的流程是一样的, 1)通过prEnhDataStr->rRxInfo.u.u2NumValidRx0Len可以获取到该通道目前存储有多少数据包,通道数据包的存储量只有16个,如果超过16个则是固件问题,跳过看下一个通道的2)然后获取当前freeswrfb空闲空间是否够用,不够用则看下一个通道的。 3)可接收的聚合报文(管理帧)长度(u4RxAvailAggLen)为2352 4)循环遍历某个通道的报文,读到报文长度+4 然后按照4个字节对齐从u4RxAvailAggLen 扣减掉。如果空间不够则跳出。 5)遍历完之后用2352减去u4RxAvailAggLen 可以得到总的数据长度通过dma获取数据到prRxCtrl->pucRxCoalescingBufPtr中 1)6)遍历通道中报文数,把每个报文拷贝到prSwRfb->pucRecvBuff中,并且填充prSwRfb->ucPacketType和prSwRfb->ucStaRecIdx 2)nicRxSetupRFB 3)如果prSwRfb->pvPacket为空,则先将prSwRfb置成0,然后按照2352分配sk_buff,prSwRfb->pucRecvBuff指向skb->data,prSwRfb->pvPacket指向skb 1)同时,prSwRfb->prHifRxHdr指向skb->data首部。 2)nicRxFillRFB 3)从prHifRxHdr->ucHerderLenOffset获取出header的offset和MACHeaderLen 4)设置prSwRfb->pvHeader指向skb->data越过prHifRxHdr + HIF_RX_HDR_SIZE + u4Heade rOffset,指向的将是beacon帧结构 5)重置prSwRfb->u2HeaderLen=u4MacHeaderLen 和prSwRfb->u2PacketLen为原来skb->dat a长度减去(HIF_RX_HDR_SIZE + u4HeaderOffset) MacHeader 如下图: nicAddScanResult 该函数分为replace和add部分,先讲解add部分 Add 1)如果prAdapter->rWlanInfo.u4ScanResultNum小于63则继续往下走 2)先将prAdapter->rWlanInfo.arScanResult[i]到aucIE之前的部分设置为0 3)设置prAdapter->rWlanInfo.arScanResult[i].u4Length为aucIE之前的部分的长度+IE的长度4)拷贝mac地址到prAdapter->rWlanInfo.arScanResult[i].arMacAddress 5)拷贝ssid到prAdapter->rWlanInfo.arScanResult[i].rSsid.aucSsid

Linux 下wifi 驱动开发—— SDIO接口WiFi驱动浅析

Linux 下wifi 驱动开发(三)——SDIO接口WiFi驱动浅析 SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议 IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。 对于SDIO接口的wifi,首先,它是一个sdio的卡的设备,然后具备了wifi的功能,所以,注册的时 候还是先以sdio的卡的设备去注册的。然后检测到卡之后就要驱动他的wifi功能了,显然,他是用sdio 的协议,通过发命令和数据来控制的。下面先简单回顾一下SDIO的相关知识: 一、SDIO相关基础知识解析 1、SDIO接口 SDIO故名思义,就是SD 的I/O 接口(interface)的意思,不过这样解释可能还有点抽像。更具 体的说明,SD 本来是记忆卡的标准,但是现在也可以把SD 拿来插上一些外围接口使用,这样的技术便是SDIO。 所以SDIO 本身是一种相当单纯的技术,透过SD 的I/O 接脚来连接外部外围,并且透过SD 上的I/O 数据接位与这些外围传输数据,而且SD 协会会员也推出很完整的SDIO stack 驱动程序,使得SDIO 外围(我们称为SDIO 卡)的开发与应用变得相当热门。 现在已经有非常多的手机或是手持装置都支持SDIO 的功能(SD 标准原本就是针对mobile device 而制定),而且许多SDIO 外围也都被开发出来,让手机外接外围更加容易,并且开发上更有弹性(不需要内建外围)。目前常见的SDIO 外围(SDIO 卡)有: · Wi-Fi card(无线网络卡) · CMOS sensor card(照相模块) · GPS card · GSM/GPRS modem card · Bluetooth card SDIO 的应用将是未来嵌入式系统最重要的接口技术之一,并且也会取代目前GPIO 式的SPI 接口。 2、SDIO总线 SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信。 CLK信号:HOST给DEVICE的时钟信号,每个时钟周期传输一个命令。 CMD信号:双向的信号,用于传送命令和反应。 DAT0-DAT3 信号:四条用于传送的数据线。 VDD信号:电源信号。 VSS1,VSS2:电源地信号。 3、SDIO热插拔原理 方法:设置一个定时器检查或插拔中断检测 硬件:假如GPG10(EINT18)用于SD卡检测 GPG10 为高电平即没有插入SD卡 GPG10为低电平即插入了SD卡 4、SDIO命令

相关主题
文本预览
相关文档 最新文档