WQ9201S私有化图传模组O9201UD适配RK3588平台
随着无线技术进步,图传方案已从原来的WIFI5向WIFI6技术迈进,私有化图传因其更好的抗干扰与传输性能在无人机中得到了大量应用,随着技术成熟也逐步向HDMI/IPC等地面端图传方案下沉。
本文将使用QOGRISYS最新基于物奇WQ9201S芯片研发的大功率私有化图传模组O9201UD在RK3588平台适配做详细说明。
一、平台信息
平台:触觉智能IDO-EVB3588-V1
Kernel版本:GNU/Linux 5.10.110 aarch64
系统版本:Ubuntu 20.04.6 LTS
搭载RK3588高性能SOC,集成了四核Cortex-A76和四核Cortex-A55 CPU,主频高达2.4G
二、硬件连接与识别
此处是将O9201UD模块焊在测试底板,底板与RK3588通过USB接口连接。上电后使用lsusb命令查看是否正常识别到模组如下ID就是正常的
Bus 002 Device 004: ID 0ffe:0003
也可以通过内核打印确认
root@Industrio:~/wq9201ud# dmesg -c
[ 5374.211802] usb 2-1.3: USB disconnect, device number 4
[ 5376.190036] usb 2-1.3: new high-speed USB device number 5 using ehci-platform
[ 5376.322792] usb 2-1.3: New USB device found, idVendor=0ffe, idProduct=0003, bcdDevice= 1.01
[ 5376.322805] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5376.322817] usb 2-1.3: Product: Wuqi USB Adapter
[ 5376.322828] usb 2-1.3: Manufacturer: Wuqi
[ 5376.322838] usb 2-1.3: SerialNumber: 123456789
[ 5376.341526] cdc_acm 2-1.3:1.4: ttyACM0: USB ACM device
三、驱动编译及加载
1、单独交叉编译驱动
在emu_host_drv/wifi/rwnx_drv/Makefile中找到KERNELDIR并设置内核绝对路径
#
# easy to make these kernel modules
#
KERNELDIR ?= /mnt/d/rk3588/evb3588-sdk-v1d/rk3588_linux_230204/kernel/
保存退出在rwnx_drv目录下使用以下命令进行编译:
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
注:ARCH和CROSS_COMPILE根据实际情况输入
编译完毕生成wq_wlan.ko
将ko文件拷贝至开发板任意目录,并将驱动包fw目录下的所有文件拷贝至开发板的firmware目录下
加载驱动:
insmod wq_wlan.ko oem_name=wq9201_oem_1_1_0285.bin wifi_phy_name=wq9201_phy_1_1_2285_0102.bin fw_wifi_name=wq9201_fw_wifi_1_1_usb.bin fw_dtop_name=wq9201_fw_dtop_1_1_usb.bin fw_bt_name=wq9201_fw_bt_1_1_usb.bin
而后使用ifconfig -a查看是否生成wlan节点
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.6 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::921b:230f:f21b:3bca prefixlen 64 scopeid 0x20<link>
ether 28:c6:13:70:cd:21 txqueuelen 1000 (Ethernet)
RX packets 60 bytes 7219 (7.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 81 bytes 9301 (9.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
连上WiFi后可使用iw wlan0 link查看连接信息
root@Industrio:~/wq9201ud# iw wlan0 link
Connected to 98:97:cc:62:57:af (on wlan0)
SSID: OFEIXIN_5G
freq: 5220
RX: 359996 bytes (479 packets)
TX: 0 bytes (0 packets)
signal: -50 dBm
rx bitrate: 1200.9 MBits / 80MHz HE-MCS 11 HE-NSS 2 HE-GI 0 HE-DCM 0
tx bitrate: 1200.9 MBits / 80MHz HE-MCS 11 HE-NSS 2 HE-GI 0 HE-DCM 0
root@Industrio:~/wq9201ud#
2、将驱动集成到内核树
在kernel/drivers/net/wireless/rockchip_wlan目录下创建一个wq9201目录用于存放驱动代码
root@Huawei:/mnt/d/rk3588/evb3588-sdk-v1d/rk3588_linux_230204/kernel/drivers/net/wireless/rockchip_wlan# cd wq9201b
root@Huawei:/mnt/d/rk3588/evb3588-sdk-v1d/rk3588_linux_230204/kernel/drivers/net/wireless/rockchip_wlan/wq9201b# ls
emu_host_drv
在rockchip_wlan/Makefile添加如下行
obj-$(CONFIG_WQHDHD) += wq9201b/emu_host_drv/wifi/rwnx_drv/
在rockchip_wlan/Kconfig添加如下
menuconfig WQHDHD
tristate "WuQi wireless Device Driver Support!"
default y
然后在kernel根目录下执行make ARCH=arm64 menuconfig打开内核图形配置界面
最后打开kernel/.config文件查看宏定义是否开启
CONFIG_WQDHD=y
RK3588平台还有默认的config配置文件如下,也需要添加CONFIG_WQDHD=y,否则编译时会被默认的配置覆盖导致编译不到驱动代码
arch/arm64/configs/rockchip_linux_defconfig
arch/arm64/configs/rockchip_defconfig
其他平台视情况而定,能编译到9201UD的驱动代码即可
在SDK根目录下运行./build.sh kernel编译整个内核并生成内核镜像,烧录到板子上
接下来只要系统能正常识别到模组,fw也拷贝到系统firmware下,系统起来后执行ifconfig -a应该就可以看到wlan节点了
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.6 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::921b:230f:f21b:3bca prefixlen 64 scopeid 0x20<link>
ether 28:c6:13:70:cd:21 txqueuelen 1000 (Ethernet)
RX packets 60 bytes 7219 (7.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 81 bytes 9301 (9.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从预研测试来看,无干扰空旷初测距离可至5-8公里。未来趋势来看,基于WIFI技术的大功率私有化图传技术将在未来空地端图传产品中随着产品完善,将逐步替代原有技术而大放光彩。