把88W8987A的驱动和MFG软件移植到明远智睿的MY-IMX6-EK200开发板,Linux-4.1.15平台上:
- 按“MY-IMX6 Linux-4_1_15 编译参考手册”文档的说明搭建交叉编译环境。如果打开新的终端窗口,则用以下命令设置和检查交叉编译环境:
tangb@myzr:~/my-work/8987a/wlan_src$ source /opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
tangb@myzr:~/my-work/8987a/wlan_src$ echo $CC
arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi
- 修改驱动包里的 ”SD-UAPSTA-UART-BT-8987-U16-MMC-W16.68.1.p174-16.26.1.p174-C4X16604-GPL/wlan_src/Makefile”:
#COMPATDIR=/lib/modules/$(KERNELVERSION_X86)/build/compat-wireless-3.2-rc1-1/include
#CC= $(CROSS_COMPILE)gcc -I$(COMPATDIR)
#LD= $(CROSS_COMPILE)ld
#KERNELVERSION_X86 := $(shell uname -r)
#KERNELDIR ?= /lib/modules/$(KERNELVERSION_X86)/build
KERNELDIR = /home/tangb/my-work/02_source/linux-4.1.15
然后“make build”。
把生成的下列文件复制到U盘:mlan.ko sd8987.ko
- 修改MFG软件“mfg8987brg.p164\Bridge\bridge\Makefile”:
#CONFIG_NONPLUG_SUPPORT=y
CONFIG_NONPLUG_SUPPORT=n
#CC=/usr/local/arm-marvell-krkwd-linux-gnueabi/gcc/bin/arm-none-linux-gnueabi-gcc
然后“make build”。
把生成的“mfgbridge”复制到U盘。
- 把“E:\Temp\mfg8987brg.p164\bin\FwImage\sdio8987_uart_combo.bin”和“E:\Temp\mfg8987brg.p164\Bridge\bin_mfgbridge\bridge_init.conf”也复制到U盘。
- 把U盘插入MY-IMX6-EK200开发板,把sdio8987_uart_combo.bin复制到/lib/firmware/mrvl目录。然后加载驱动和运行MFG软件,详见”log.txt”文件。
insmod hci_uart.ko
insmod mlan.ko
insmod sd8987.ko drv_mode=1 mfg_mode=1 cal_data_cfg=none fw_name=mrvl/w8987o_SDIO_UART_WLAN.bin fw_serial=0
mkdir /lib/firmware/mrvl
cp w8987o_SDIO_UART_WLAN.bin /lib/firmware/mrvl/
./mfgbridge
- 修改“E:\Temp\mfg8987brg.p164\bin\release\labtool\ SetUp.ini”,使其中的DutIpAddress 和HostIpAddress与开发板和电脑的IP地址一致。
- 把驱动包中的“wlan_src\mapp\mlanconfig\config\ cal_data.conf”复制到labtool目录里,并改名为“WlanCalData_ext.conf”。
大功告成,labtool的运行结果如下图所示。
如果要测试蓝牙,那么:
- 修改驱动包里的 ”SD-UAPSTA-UART-BT-8987-U16-MMC-W16.68.p174-16.26.1.p174-C4X16604-GPL/muart_src/Makefile”:
KERNELDIR = /home/tangb/my-work/02_source/linux-4.1.15
# Debug Option
# DEBUG LEVEL n/1/2:
然后“make build”。
把生成的下列文件复制到U盘:hci_uart.ko
- 修改驱动包里的 ”SD-UAPSTA-UART-BT-8987-U16-MMC-W16.68.1.p174-16.26.1.p174-C4X16604-GPL/uartfwloader_src/linux/Makefile”:
#CC=gcc
#CFLAGS=-g -O2 -I.
然后“make make”。
把生成的下列文件复制到U盘:fwloader
- 在开发板的终端上执行下面的命令:
insmod mlan.ko
sleep 1
insmod sd8987.ko drv_mode=1 mfg_mode=1 cal_data_cfg=none fw_name=mrvl/w8987o_SDIO_UART_WLAN.bin fw_serial=0
插入模组,若FW初始化出错,则先拔掉FTDI USB-UART工具的USB口,然后再插模组,等模组初始化成功,再插工具的USB口。如果用开发板的UART2,则把ttyUSB0改为ttymxc1。
killall hciattach
./fw_loader /dev/ttyUSB0 115200 0 helper_uart_3000000.bin
./fw_loader /dev/ttyUSB0 3000000 1 w8987d_SDIO_UART_BT.bin
insmod hci_uart.ko
hciattach /dev/ttyUSB0 any -s 3000000 3000000 flow
./mfgbridge
用 combo的FW 也可以,步骤如下
insmod mlan.ko
sleep 1
insmod sd8987.ko drv_mode=1 mfg_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8987_uart_combo_mfg.bin
sleep 1
insmod hci_uart.ko
hciattach /dev/ttyUSB0 any 115200 flow
hciconfig hci0 up
./mfgbridge
然后,在Windows 端启动labtool, 分别88 查看WLAN和BT 版本号,一切正常。