Wi-Fi 问题定位指南
概述
本章节主要介绍Wi-Fi常见问题Log抓取和定位方法
收发通路问题分析
收发通路常见的问题有:数据传输带宽偏低、数据传输丢包以及数据传输延迟高等问题。 这类问题一般需要通过CLI命令查看一些统计信息,甚至需要收发通路Log配合Wi-Fi空口包进行分析。 Armino SDK默认支持LWIP和Wi-Fi底层输出发送和接收相关log,这些log默认不开启,需要查看时可通过API接口开启。 具体可参考cli_pkt_debug_cmd函数实现。
重要
LWIP和Wi-Fi通路log会影响系统性能,请确保在只在定位问题时开启
LWIP相关log介绍
LWIP模块目前支持ICMP、IP和TCP子模块输出发送和接收关键log,如果需要查看相关Log,需要按照如下步骤操作
1. 首先需要在相应工程中通过CONFIG_LWIP_DEBUG_LOG功能宏开启LWIP debug log代码编译,比如在/project/app/bk****/config文件中将 CONFIG_LWIP_DEBUG_LOG=y,即可在bk***芯片app工程开启LWIP debug log代码编译。
可通过void lwip_set_pkt_trx_dbg_cfg(uint32_t cfg_bit)接口针对性开启LWIP子模块的log。
LWIP子模块log配置是cfg_bit完成,cfg_bit含义如下表所示:
宏定义 |
数值 |
描述 |
---|---|---|
LWIP_TX_DBG_LOG_SOCKET |
1<<16 |
开启lwip_send函数中log |
LWIP_TX_DBG_LOG_IP |
1<<17 |
开启IP TX log |
LWIP_TX_DBG_LOG_TCP |
1<<18 |
开启TCP TX log |
LWIP_RX_DBG_LOG_SOCKET |
1<<20 |
开启lwip_recvfrom函数中log |
LWIP_RX_DBG_LOG_IP |
1<<21 |
开启IP RX log |
LWIP_RX_DBG_LOG_TCP |
1<<22 |
开启TCP RX log |
LWIP_TX_DBG_LOG_PING |
1<<24 |
开启ICMP TX log |
LWIP_RX_DBG_LOG_PING |
1<<25 |
开启ICMP RX log |
LWIP相关Debug命令
可通过lwip_mem和lwip_stats CLI命令辅助定位TCP/IP相关问题
lwip_mem - 查看与lwip相关的内存使用情况,该命令返回如下:
$lwip_mem
(76916):Name total used addr size err
(76916):----------------------------------------------------
(76916):RAW_PCB 4 0 0x2804ebbf 28 0
(76916):UDP_PCB 10 1 0x2804fc07 40 0
(76918):TCP_PCB 8 0 0x2804f0a1 164 0
(76918):TCP_PCB_LISTEN 4 0 0x2804f01e 32 0
(76918):TCP_SEG 80 0 0x2804f5c4 20 0
(76918):REASSDATA 5 0 0x2804ec32 32 0
(76918):FRAG_PBUF 15 0 0x28049c2a 24 0
(76918):NETBUF 32 0 0x28049e18 16 0
(76918):NETCONN 20 0 0x2804a01b 52 0
(76918):TCPIP_MSG_API 8 0 0x2804ed98 16 0
(76918):TCPIP_MSG_INPKT 32 0 0x2804ee1b 16 0
(76918):ARP_QUEUE 4 0 0x28049c07 8 0
(76918):IGMP_GROUP 8 1 0x28049d95 16 0
(76920):SYS_TIMEOUT 12 6 0x2804ecd5 16 0
(76920):NETDB 4 0 0x2804a42e 308 0
(76920):PBUF_REF/ROM 10 0 0x2804eb1c 16 0
(76920):PBUF_POOL 10 0 0x2804a901 1692 0
(76920):===== MEMP_PBUF_POOL ======
(76920):avail 10, used 0, max 0, err 0
(76920):========== MEM ============
(76920):avail 51200, used 60, max 1124, err 0
(76920):tx avail 42666, rx avail 38400, tx used 60, rx used 0, tx max 544, rx max 1064, tx err 0, rx err 0
lwip_stats - 查看与lwip收发统计信息,该命令返回如下:
$lwip_stats
(444938):
ETHARP
(444938):xmit: 2
(444938):recv: 5
(444938):fw: 0
(444938):drop: 0
$(444940):chkerr: 0
(444940):lenerr: 0
(444940):memerr: 0
(444940):rterr: 0
(444940):proterr: 0
(444942):opterr: 0
(444942):err: 0
(444942):cachehit: 5
(444942):
IP
(444942):xmit: 10
(444942):recv: 16
(444942):fw: 0
(444942):drop: 5
(444942):chkerr: 0
(444942):lenerr: 0
(444942):memerr: 0
(444942):rterr: 0
(444942):proterr: 0
(444942):opterr: 0
(444942):err: 0
(444942):cachehit: 0
(444942):
UDP
(444942):xmit: 4
(444942):recv: 5
(444944):fw: 0
(444944):drop: 0
(444944):chkerr: 0
(444944):lenerr: 0
(444944):memerr: 0
(444944):rterr: 0
(444944):proterr: 0
(444944):opterr: 0
(444944):err: 0
(444944):cachehit: 4
(444944):
TCP
(444944):xmit: 0
(444944):recv: 0
(444944):fw: 0
(444944):drop: 0
(444944):chkerr: 0
(444944):lenerr: 0
(444944):memerr: 0
(444944):rterr: 0
(444944):proterr: 0
(444944):opterr: 0
(444944):err: 0
(444944):cachehit: 0
备注
查看lwip CLI命令需要确保cli_lwip.c模块参与编译
Wi-Fi相关log介绍
Wi-Fi模块目前支持TX/RX通路输出关键log,log开启可通过void bk_wifi_set_pkt_trx_dbg_cfg(uint32_t cfg_bit) API接口实现,cfg_bit含义如下表所示:
宏定义 |
数值 |
描述 |
---|---|---|
WIFI_TX_DBG_LOG_DATA_PKT |
1<<0 |
开启Wi-Fi数据帧发送完成log |
WIFI_TX_DBG_LOG_MGMT_PKT |
1<<1 |
开启Wi-Fi管理帧发送完成log |
WIFI_TX_DBG_LOG_PUSH_PKT |
1<<2 |
开启Wi-Fi发送组包log |
WIFI_RX_DBG_LOG_DATA_PKT |
1<<8 |
开启Wi-Fi数据帧接收log |
WIFI_RX_DBG_LOG_MGMT_PKT |
1<<9 |
开启Wi-Fi管理帧接收log |
重要
通路log开启后,随着传输数据量的增加,log量会剧增,为了抓取完整log,需要提高串口波特率
Wi-Fi通路Debug命令
Wi-Fi模块也提供了收发统计信息,这些信息可通过get mac_trx status命令查询,该命令返回如下:
$get mac_trx status
$wifid:I(1077306):======================= MAC RX INFO ========================
wifid:I(1077308):rx data cnt:31, upload cnt:36, forward cnt:36, memerr cnt:0
wifid:I(1077308):======================= MAC TX INFO ========================
wifid:I(1077308):tx data dld cnt:12, retry cnt:0, single cnt:12, agg cnt:5, discard cnt:0, success cnt:12
wifid:I(1077308):tx data tx time:269, avg time:22, max time:152
CMDRSP:OK
备注
查看Wi-Fi CLI命令需要确保cli_wifi.c模块参与编译
通路常见问题分析方法
传输带宽低:TCP传输带宽低需要关注上层应用发送数据是否频繁会遇到TCP buffer满的情况,如果存在类似问题,需要开启LWIP和Wi-Fi的log并配合Wi-Fi空口进行分析。
传输丢包:首先通过lwip log确认收发是否正常,如果没有异常就需要开启lwip log和Wi-Fi log配合Wi-Fi空口包进行分析。
传输延迟高:这类问题一般与环境相关,可首先通过ping程序确认与目标通信地址延迟是否符合预期。如果ping延迟正常,则需要开启lwip log和Wi-Fi log配合Wi-Fi空口包进行分析。