20240919在友善之臂的NanoPC-T6开发板上适配宸芯的数传模块CX6602N
2024/9/19 16:54
缘起,大毛PK二毛战况激烈,穿越机大卖!我司拆同行的图传作品。
发现:
主控:飞凌OK3588-C核心板
图传模块:宸芯的数传模块CX6602N
于是费了老鼻子劲,联系上了宸芯。
技术支持需要派工单,经过多方协调,终于和上海的软件FAE对接上了。
宸芯的数传模块CX6602N支持三频段:800M、1.4GHZ、2.4GHZ。
支持USB接口(PIN69的DP和PIN70的DM)和HSIC接口(PIN2的HSIS_DATA,PIN4的HSIC_STROBE)
USB接口可以直接以虚拟以太网卡的形式接友善之臂的NanoPC-T6开发板。
HSIC接口接LAN9730转【百兆】以太网RJ45之后,接下位机!
2. 上位机配置
2.1 添加 rndis 和 gserial 主机驱动
进入 kernel 目录 make menuconfig,1.添加配置 CONFIG_USB_NET_RNDIS_HOST=m:
2.添加配置 CONFIG_USB_SERIAL=m:
2.添加配置 CONFIG_USB_SERIAL_GENERIC=y:
编译模块:make modules && make modules_install
Z:\repo_RK3588_Buildroot20240508\kernel\arch\arm64\configs\rockchip_linux_defconfig
CONFIG_USB_DWC3=y
CONFIG_USB_DWC2=y
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_CP210X=y
CONFIG_USB_SERIAL_FTDI_SIO=y
CONFIG_USB_SERIAL_KEYSPAN=y
CONFIG_USB_SERIAL_PL2303=y
CONFIG_USB_SERIAL_OTI6858=y
CONFIG_USB_SERIAL_QUALCOMM=y
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_GADGET=y
【注意,宏CONFIG_USB_USBNET是上一级目录,您也必须打开,否则编译生成的.config中没有CONFIG_USB_NET_RNDIS_HOST的】
Z:\repo_RK3588_Buildroot20240508\kernel\arch\arm64\configs\rockchip_linux_defconfig
CONFIG_USB_RTL8150=y
CONFIG_USB_RTL8152=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_RNDIS_HOST=y
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
Z:\repo_RK3588_Buildroot20240508\kernel\.config
CONFIG_USB_RTL8150=y
CONFIG_USB_RTL8152=y
# CONFIG_USB_LAN78XX is not set
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_AX88179_178A=y
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_CDC_EEM is not set
CONFIG_USB_NET_CDC_NCM=y
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_SR9700 is not set
# CONFIG_USB_NET_SR9800 is not set
# CONFIG_USB_NET_SMSC75XX is not set
# CONFIG_USB_NET_SMSC95XX is not set
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=y
# CONFIG_USB_NET_PLUSB is not set
# CONFIG_USB_NET_MCS7830 is not set
CONFIG_USB_NET_RNDIS_HOST=y
CONFIG_USB_NET_CDC_SUBSET_ENABLE=y
CONFIG_USB_NET_CDC_SUBSET=y
# CONFIG_USB_ALI_M5632 is not set
# CONFIG_USB_AN2720 is not set
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
# CONFIG_USB_EPSON2888 is not set
# CONFIG_USB_KC2190 is not set
CONFIG_USB_NET_ZAURUS=y
# CONFIG_USB_NET_CX82310_ETH is not set
# CONFIG_USB_NET_KALMIA is not set
# CONFIG_USB_NET_QMI_WWAN is not set
# CONFIG_USB_HSO is not set
# CONFIG_USB_NET_INT51X1 is not set
# CONFIG_USB_IPHETH is not set
# CONFIG_USB_SIERRA_NET is not set
# CONFIG_USB_VL600 is not set
# CONFIG_USB_NET_CH9200 is not set
# CONFIG_USB_NET_AQC111 is not set
CONFIG_WLAN=y
# CONFIG_WIRELESS_WDS is not set
2.2 加载驱动
1. 加载 rndis 主机驱动:modprobe rndis_host
2. 连接下位机,确认 rndis 驱动绑定 rndis 接口
3. 查看下位机的 usb 设备 ID:
# lsusb
Bus 001 Device 006: ID 18d1:181f Google Inc.
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# lsusb
Bus 005 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 001 Device 001: ID 1d6b:0002
Bus 005 Device 003: ID 18d1:181f
Bus 006 Device 001: ID 1d6b:0003
Bus 004 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# uname -a
Linux rk3588-buildroot 5.10.198 #1 SMP Thu Sep 19 16:04:55 CST 2024 aarch64 GNU/Linux
root@rk3588-buildroot:/#
4. # lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
|__ Port 1: Dev 15, If 0, Class=Wireless, Driver=rndis_host, 480M
|__ Port 1: Dev 15, If 1, Class=CDC Data, Driver=rndis_host, 480M
|__ Port 1: Dev 15, If 2, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 15, If 3, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 15, If 4, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 15, If 5, Class=Vendor Specific Class, Driver=, 480M
5. 加载 gserial 主机驱动:modprobe usbserial vendor=0x18d1 product=0x181f
其中,0x18d1 是从机的 VID,0x181f 是从机的 PID
6. 确认 gserial 驱动绑定 gserial 接口:
# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
|__ Port 1: Dev 15, If 0, Class=Wireless, Driver=rndis_host, 480M
|__ Port 1: Dev 15, If 1, Class=CDC Data, Driver=rndis_host, 480M
|__ Port 1: Dev 15, If 2, Class=Vendor Specific Class,
Driver=usbserial_generic, 480M
|__ Port 1: Dev 15, If 3, Class=Vendor Specific Class,
Driver=usbserial_generic, 480M
|__ Port 1: Dev 15, If 4, Class=Vendor Specific Class,
Driver=usbserial_generic, 480M
|__ Port 1: Dev 15, If 5, Class=Vendor Specific Class,
Driver=usbserial_generic, 480M
3. 设备调试
3.1 端口识别
查看串口设备:
# ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
root@rk3588-buildroot:/dev#
root@rk3588-buildroot:/dev# ls -l ttyUSB*
crw-rw---- 1 root dialout 188, 0 Jan 1 14:46 ttyUSB0
crw-rw---- 1 root dialout 188, 1 Jan 1 14:46 ttyUSB1
crw-rw---- 1 root dialout 188, 2 Jan 1 14:46 ttyUSB2
crw-rw---- 1 root dialout 188, 3 Jan 1 14:46 ttyUSB3
crw-rw---- 1 root dialout 188, 4 Jan 1 14:46 ttyUSB4
root@rk3588-buildroot:/dev#
查看网卡设备:
ls /sys/class/net/ -l
total 0
lrwxrwxrwx 1 root root 0 Oct 23 07:33 usb0
-> ../../devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb1/1-1/1-1:1.0/net/usb0
lrwxrwxrwx 1 root root 0 Oct 23 07:33 lo -> ../../devices/virtual/net/lo
# ifconfig usb0 192.168.1.15
usb0 Link encap:Ethernet HWaddr 1e:62:45:10:50:41
inet addr:192.168.1.15 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:640 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:384 (384.0 B) TX bytes:51178 (51.1 KB)
root@rk3588-buildroot:/dev#
root@rk3588-buildroot:/dev# cd /sys/class/net/
root@rk3588-buildroot:/sys/class/net#
root@rk3588-buildroot:/sys/class/net# ls -l
total 0
lrwxrwxrwx 1 root root 0 Jan 1 14:46 eth0 -> ../../devices/platform/fe1c0000.ethernet/net/eth0
lrwxrwxrwx 1 root root 0 Jan 1 14:46 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Jan 1 14:46 usb0 -> ../../devices/platform/usbdrd3_1/fc400000.usb/xhci-hcd.5.auto/usb5/5-1/5-1:1.0/net/usb0
root@rk3588-buildroot:/sys/class/net#
root@rk3588-buildroot:/sys/class/net# cd /
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:118 errors:0 dropped:0 overruns:0 frame:0
TX packets:118 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7528 (7.3 KiB) TX bytes:7528 (7.3 KiB)
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# ifconfig -a
eth0 Link encap:Ethernet HWaddr 8E:BA:83:CE:09:59
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:88
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:118 errors:0 dropped:0 overruns:0 frame:0
TX packets:118 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7528 (7.3 KiB) TX bytes:7528 (7.3 KiB)
usb0 Link encap:Ethernet HWaddr 96:92:B8:79:43:AD
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@rk3588-buildroot:/#
3.2 AT 及灌包测试
1.通过 USB 连接上位机后,使用 minicom 工具发送 AT 命令:
minicom -D /dev/ttyUSB0
2.利用 iperf 测试网络性能:
上位机配置 ipv4 地址:
ifconfig usb0 192.168.42.130
上位机作为 udp 服务端接收数据:
iperf -u -s -i 1
下位机作为 udp 客户端发送数据:
iperf -u -c 192.168.42.130 -i 1 -p 5001 -t 30 -b 200m
上位机作为 udp 服务端接收数据:
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# ifconfig usb0 192.168.42.130
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:154 errors:0 dropped:0 overruns:0 frame:0
TX packets:154 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9688 (9.4 KiB) TX bytes:9688 (9.4 KiB)
usb0 Link encap:Ethernet HWaddr 96:92:B8:79:43:AD
inet addr:192.168.42.130 Bcast:192.168.42.255 Mask:255.255.255.0
inet6 addr: fe80::9492:b8ff:fe79:43ad/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:384 (384.0 B) TX bytes:780 (780.0 B)
root@rk3588-buildroot:/#
root@rk3588-buildroot:/#
【服务器端】
root@rk3588-buildroot:/#
root@rk3588-buildroot:/# iperf -u -s -i 1
------------------------------------------------------------
Server listening on UDP port 5001
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.42.130 port 5001 connected with 192.168.42.130 port 38629
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 1] 0.00-1.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 1.00-2.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 2.00-3.00 sec 23.8 MBytes 200 Mbits/sec 0.000 ms 0/17002 (0%)
[ 1] 3.00-4.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 4.00-5.00 sec 23.8 MBytes 200 Mbits/sec 0.000 ms 0/17007 (0%)
[ 1] 5.00-6.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17009 (0%)
[ 1] 6.00-7.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17009 (0%)
[ 1] 7.00-8.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17004 (0%)
[ 1] 8.00-9.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 9.00-10.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17009 (0%)
[ 1] 10.00-11.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17004 (0%)
[ 1] 11.00-12.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17007 (0%)
[ 1] 12.00-13.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 13.00-14.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17007 (0%)
[ 1] 14.00-15.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 15.00-16.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17003 (0%)
[ 1] 16.00-17.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17011 (0%)
[ 1] 17.00-18.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 18.00-19.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 19.00-20.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 20.00-21.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17007 (0%)
[ 1] 21.00-22.00 sec 23.8 MBytes 200 Mbits/sec 0.000 ms 0/17005 (0%)
[ 1] 22.00-23.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 23.00-24.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 24.00-25.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17008 (0%)
[ 1] 25.00-26.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17003 (0%)
[ 1] 26.00-27.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17009 (0%)
[ 1] 27.00-28.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 28.00-29.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17006 (0%)
[ 1] 29.00-30.00 sec 23.8 MBytes 200 Mbits/sec 0.001 ms 0/17009 (0%)
[ 1] 0.00-30.00 sec 715 MBytes 200 Mbits/sec 0.001 ms 0/510208 (0%)
^Croot@rk3588-buildroot:/#
【客户端】
Microsoft Windows [版本 10.0.22621.3296]
(c) Microsoft Corporation。保留所有权利。
C:\Users\QQ>adb shell
root@rk3588-buildroot:/# iperf -u -c 192.168.42.130 -i 1 -p 5001 -t 30 -b 200m
------------------------------------------------------------
Client connecting to 192.168.42.130, UDP port 5001
Sending 1470 byte datagrams, IPG target: 58.80 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.42.130 port 38629 connected with 192.168.42.130 port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-1.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 1.00-2.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 2.00-3.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 3.00-4.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 4.00-5.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 5.00-6.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 6.00-7.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 7.00-8.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 8.00-9.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 9.00-10.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 10.00-11.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 11.00-12.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 12.00-13.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 13.00-14.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 14.00-15.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 15.00-16.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 16.00-17.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 17.00-18.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 18.00-19.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 19.00-20.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 20.00-21.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 21.00-22.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 22.00-23.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 23.00-24.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 24.00-25.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 25.00-26.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 26.00-27.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 27.00-28.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 28.00-29.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 29.00-30.00 sec 23.8 MBytes 200 Mbits/sec
[ 1] 0.00-30.00 sec 715 MBytes 200 Mbits/sec
[ 1] Sent 510209 datagrams
[ 1] Server Report:
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 1] 0.00-30.00 sec 715 MBytes 200 Mbits/sec 0.000 ms 0/510208 (0%)
root@rk3588-buildroot:/#
参考资料:
CX660X模块产品技术手册202102.pdf
lc1860 lc1881在安卓上位机下的RNDIS&GSERIAL使用.pdf
CX660X产品webui快速配置操作指导.pdf