AMPAK正基AP6XXX系列WiFi移植(1)

通常 Wi-Fi 有四种模式,不同的 Wi-Fi 设备可能支持其中一种或几种模式,四种模式如下:
 SoftAP:access point,一种将无线设备连接到一个网络的设备,可以理解为无线路由。
 STA:station,无线设备客户端,必须连接上一个 AP 才能使用。
 DIRECT:Wi-Fi 直连,也称 p2p 模式。
 CONCURRENT:同时支持 AP、STA 两种模式。
wifi_project 开发包中支持这几款 Wi-Fi,分别是 Realtek rtl8188ftv、Realtek rtl8188eus、Realtek rtl8189ftv、Mediatek mt7601u、Ampak ap6181(Broadcom BCM43362模组)、ap6212/ap6212a/ap6214a(Broadcom BCM43438 模组)和ap6255(Broadcom BCM43455 模组)。其中 rtl8188ftv、rtl8188eus 和 mt7601u 为 USB 接口, rtl8189ftv、ap6181、ap6212、ap6212a、ap6214a、ap6255 为 SDIO 接口。wifi_project 开发包仅支持 SoftAP 和 STA 模式。
1 内核配置
1.1 配置 CFG80211
CFG80211 是内核中 WiFi 驱动和用户态进程的标准接口,在 CFG80211 出现之前是WEXT,现在越来越多的使用 CFG80211,WiFi Direct 功能只有 CFG80211 才支持。
进入 Network support->Wireless,设置 cfg80211 和 mac80211 为 M,如下图所示。
CFG80211 配置
在这里插入图片描述
1.2 配置 Wireless Extension
 WEXT 是内核中 WiFi 驱动和用户态进程的标准接口,调试工具 iwconfig、iwlist、iwpriv 需要使用该接口。如果没有配置改接口,有些驱动会有编译错误。 
WEXT 在内核配置中没有单独的配置项,只能通过打开依赖它的配置项来间接打开。配置了 CFG80211 后,进入 Device Drivers->Network device support->Wireless LAN,设置 USB ZD1201 based Wireless device support 为 M。如下图所示。
Wireless Extension 配置
在这里插入图片描述
如果找不到这项配置,需要先配置好 USB 再来配置该选项。
1.3 配置 USB 和 SDIO
请参考《外围设备驱动操作指南》中的 USB 和 SDIO 操作指南。
** rtl8189ftv、ap6181、ap6212、ap6212a、ap6214a 的接口是 SDIO2.0,请设置 SDIO时钟为 50MHz 左右,ap6255 的接口是 SDIO3.0,请设置SDIO 时钟为 150MHz 左 右。 
** kernel 默认的 SDIO2.0 的 IO 电压为 3.3V,如果给 WiFi 模块的 IO 电压为 1.8V,需要修改 SDIO 驱动,将 IO 电压切换到 1.8V。
1.4 配置 IPv6
使用 ap6181、ap6212、ap6212a、ap6214a、ap6255 时,不配置 IPv6 会导致驱动运行错 误,所以需要配置 IPv6。使用其他四款 WiFi 无需配置该项。
进入 Network support->Networking options,设置 The IPv6 protocol 为 y。如下图所示。
Ipv6 配置
在这里插入图片描述
1.5 SDIO 中断配置
Kernel 默认没有开启 SDIO 中断,使用 rtl8189ftv 时需要将 SDIO 中断打开,开启方法,如 Hi3519V101:文件 arch/arm/boot/dts/hisi-hi3519v101.dtsi,在 WiFi 对接的 SDIO 端口属性中增加:cap-sdio-irq。
注意
配置并编译完内核后,需要基于新的内核重新编译 WiFi 驱动,否则 WiFi 驱动在运行时会出现空指针或找不到内核符号错误。

2.1 配置 wifi_project 开发包
wifi_project 在编译前需要配置交叉编译环境,修改顶层 Makefile 中的
WIFI_DEVICE、CROSS_COMPILE 和 KERNEL。

  • 交叉编译工具链
    编译时需要的交叉编译工具,例如 arm-hisiv500-linux-、arm-hisiv600-linux-等。
    如:ARCH := arm
    CROSS_COMPILE := arm-hisiv500-linux-
  • WIFI_DEVICE
    希望编译的 Wi-Fi 设备名称,支持的 WiFi 设备见 Makefile 文件中的注释。
    如:WIFI_DEVICE := sdio_ap6xxx ap6181、ap6212、ap6212a、ap6214a、ap6225 都配置为 sdio_ap6xxx。 
  • KERNEL
    编译 Wi-Fi 驱动时所指定的内核路径,在编译 Wi-Fi 驱动时,必须指定内核路径,
    注意内核一定要已经编译过的。
    如:KERNEL := /home/work/linux-3.18.y 配置完后就可以进行编译了,在 wifi_project目录下执行 make all,会自动编译驱动和工具,make driver 只编译驱动,make tools 只编译工具。

生成的驱动放在 wifi_project/out/kmod 目录下,工具放在 wifi_project/out/tools 目录下,主要包括 iwconfig、iwlist、iwpriv、wpa_cli、wpa_supplicant、hostapd 等,生成的库文 件放在 wifi_project/out/lib 目录下。

3.1 载入驱动文件
编译后驱动会生成在 wifi_project/out/kmod 目录下,拷贝所需的驱动到单板中。
各个 WiFi 的驱动文件如下:
 ap6181/ap6212/ap6212a/ap6214a/ap6255
cfg80211.ko、bcmdhd.ko
cfg80211.ko 文件请在 kernel 的 net/wireless 目录下拷贝。
驱动在单板上的目录不重要,比如可以放在/kmod 目录。
3.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 文件。
3.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.0 libnl-genl.so.2
ln –s libnl.so.2.0.0 libnl.so.2
 拷贝 wifi_project/out/tools 目录下的 iwconfig、iwlist、iwpriv、iperf 拷贝到单板的
/sbin 目录下。这几个是调试工具,实际使用时可以不用拷贝这几个文件。
 STA 模式需要将 wifi_project/out/tools 目录下的 wpa_supplicant、wpa_cli 拷贝到单板的/sbin 目录下。
 AP 模式需要将 wifi_project/out/tools 目录下的 hostapd 拷贝到单板的/sbin 目录下。
 Broadcom WiFi 除了使用 wpa_supplicant 和 hostapd 来配置外,还有一种方式是采 用 wl 工具,这种情况下需要将wifi_project/out/tools 目录下的 wl 拷贝到单板的/sbin 目录下。
工具拷贝到单板后,需要修改工具的可执行权限,如:
chmod a+x wpa_supplicant
3.4 wpa_supplicant.conf 文件
wpa_supplicant.conf 是启动 wpa_supplicant 进程时需要使用到的配置文件。可以在单板
上新建一个,目录不重要,比如放在/etc/Wireless 目录下。文件内容如下:
ctrl_interface=/var/wpa_supplicant 也可以将 sample 目录下的 wpa_supplicant.conf 拷贝到/etc/Wireless 目录下。
3.5 hostapd.conf 文件
hostapd.conf 是启动 hostapd 进程时需要使用到的配置文件。可以在单板上新建一个,
目录不重要,比如放在/etc/Wireless 目录下。文件内容请参考hostapd 配置和启动SoftAP。也可以将 sample 目录下的hostapd.conf 拷贝到/etc/Wireless 目录下。
3.6 udhcpd.conf 文件
udhcpd.conf 文件是 SoftAP 模式下 DHCP server 需要使用到的配置文件。在wifi_project/sample 目录下拷贝 udhcpd.conf 到单板目录下,目录不重要,比如放在/etc/Wireless 目录下。
3.7 entropy.bin 文件
entropy.bin 文件是随机数种子文件,hostapd 进程配置带加密的 SoftAP 模式时需要使用。在 wifi_project/sample 目录下拷贝 entropy.bin 到单板目录下,目录不重要,比如放 在/etc/Wireless 目录下。
…暂时更新到这
点赞继续更新

原创文章 19 获赞 3 访问量 6019

猜你喜欢

转载自blog.csdn.net/ShiLianXin/article/details/104961481