【FAQ】全志XR806芯片 如何打开 LwIP 调试信息?
-
1. 问题背景
出现网络问题时,常常需要打开 LwIP 内部打印信息调试、查看协议栈运行状态,以获取更多的有效信息。2. 问题描述
如何打开 LwIP 调试信息?3. 问题分析
LwIP 内部调试信息有两类:
(1) LWIP_DEBUG,可以显示协议栈内部各层运行流程,收发通路信息等。
(2) LWIP_STATS,可以显示协议栈内部各种资源使用情况,包括内存、队列、信号量等。4. 解决办法
(1) 打开 LWIP_DEBUG 的方式
文件 include/net/lwip-x.x.x/arch/cc.h 中使能 DEBUG:/* Debug on/off */ #define LWIP_DEBUG
文件 include/net/lwip-2.0.3/lwipopts.h 中
设置调试等级,使能全局调试信息:
#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL #define LWIP_DBG_TYPES_ON LWIP_DBG_ON
根据需要打开相应类别的调试信息,如 socket 相关调试信息:
#define SOCKETS_DEBUG LWIP_DBG_ON
(2) 打开 LWIP_STATS 的方式
文件 include/net/lwip-2.0.3/lwipopts.h 中使能 LWIP_STATS:
#define LWIP_STATS 1 #define LWIP_STATS_DISPLAY 1
根据需要打开相应类别的统计信息(默认已打开),如协议栈堆内存使用信息:
#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
最后自行调用相应统计函数,就可以显示当前协议栈统计信息:
LINK_STATS_DISPLAY(); // 链路层统计信息 ETHARP_STATS_DISPLAY(); // ARP层统计信息 IPFRAG_STATS_DISPLAY(); // IP层分片统计信息 IP_STATS_DISPLAY(); // IP层统计信息 IGMP_STATS_DISPLAY(); // IGMP协议统计信息 ICMP_STATS_DISPLAY(); // ICMP协议统计信息 UDP_STATS_DISPLAY(); // UDP层统计信息 TCP_STATS_DISPLAY(); // TCP层统计信息 MEM_STATS_DISPLAY(); // 堆内存使用统计信息 MEMP_STATS_DISPLAY(i); // 内存池i的使用统计信息 SYS_STATS_DISPLAY(); // 系统统计信息,包括队列(mbox)、信号量、锁 stats_display(); // 打印上面所有信息
-
-
-
-
-
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号