标签:
LWIP协议支持用户配置,可以通过用户裁剪实现最优化配置,所有这些都是在lwipopts.h文件中实现的,在下面我就会解读该文件,可以让后来者知道该如何修改变量。
#ifndef LWIPOPTS_H #define LWIPOPTS_H //***************************************************************************** // // ---------- SNMP options ---------- // //***************************************************************************** #define LWIP_SNMP 0 //SNMP协议启用 #if LWIP_SNMP #define SNMP_CONCURRENT_REQUESTS 1 //SNMP当前允许请求数量 #define SNMP_TRAP_DESTINATIONS 1 //SNMP trap目的地址数目 #define SNMP_PRIVATE_MIB 1 //SNMP 私有节点设置允许 #define SNMP_SAFE_REQUESTS 1 //仅回复SNMP安全请求 #endif //***************************************************************************** // // ---------- Platform specific locking ---------- // //***************************************************************************** #define SYS_LIGHTWEIGHT_PROT 1 //临界中断保护开关(多任务模式下开启) #define NO_SYS 0 //使用自定义LWIP配置 为1则只使用超轻量级LWIP配置 //***************************************************************************** // // ---------- Memory options ---------- // //***************************************************************************** #define MEM_LIBC_MALLOC 0 //采用LWIP自带函数分配动态内存 #define MEM_LIBC_MALLOC 0 //内存池不通过内存堆来分配 #define MEM_ALIGNMENT 4 //字节对齐(和CPU的位数有关,32位设置为4) #define MEM_SIZE 8*1024 //堆内存大小,用于发送数据 #define MEMP_SANITY_CHECK 0 //mem_free调用后检查链表是否有循环 by zc #define MEMP_OVERFLOW_CHECK 0 //lwip堆内存溢出检查 #define MEM_USE_POOLS 0 //内存堆不通过内存池分配 #define MEM_USE_POOLS_TRY_BIGGER_POOL 0 //申请内存失败不选择大内存池 #define MEMP_USE_CUSTOM_POOLS 0 //同上 //***************************************************************************** // // ---------- Internal Memory Pool Sizes ---------- // //***************************************************************************** #define MEMP_NUM_PBUF 60 //来自memp的PBUF_ROM(ROM内存池)和PBUF_REF(RAM内存池)数目最大总和 #define MEMP_NUM_RAW_PCB 4 //RAW连接的PCB数目(需要LWIP RAW有效) #define MEMP_NUM_UDP_PCB 4 //能够同时连接的UDP的PCB数目 #define MEMP_NUM_TCP_PCB (TCP_WND + TCP_SND_BUF)/TCP_MSS //能够同时连接的TCP的PCB数目 12 #define MEMP_NUM_TCP_PCB_LISTEN 1 //(TCP_WND + TCP_SND_BUF)/TCP_MSS //能够同时监听的TCP的PCB数目 #define MEMP_NUM_TCP_SEG 40 //80 能够同时在队列里的TCP的PCB数目 #define MEMP_NUM_REASSDATA 8 //最大同时等待重装的IP包数目,是整个IP包,不是IP分片 #define MEMP_NUM_ARP_QUEUE 30 //最大等待回复ARP请求的数目(ARP_QUEUEING有效) #define MEMP_NUM_IGMP_GROUP 8 //多播组同时接收数据的最大成员数目(LWIP_IGMP有效) #define MEMP_NUM_SYS_TIMEOUT 20 //能够同时激活的超时连接数目(NO_SYS==0有戏) #define MEMP_NUM_NETBUF 10 //netbufs结构的数目 #define MEMP_NUM_NETCONN 16 //netconns结构的数目 #define MEMP_NUM_TCPIP_MSG_API 40 //tcpip_msg结构的最大数目,用于callback和API的通讯 by zc #define MEMP_NUM_TCPIP_MSG_INPKT 40 //tcpip_msg接受数据包结构的最大数目 by zc #define PBUF_POOL_SIZE 48 //内存池数量(小内存减小该选项可大大减小内存占用) //***************************************************************************** // // ---------- ARP options ---------- // //***************************************************************************** #define LWIP_ARP 1 //ARP协议允许 #define ARP_TABLE_SIZE 10 //ARP维护的表项大小 #define ARP_QUEUEING 1 //硬件地址解析时,将发送数据包计入队列 #define ETHARP_TRUST_IP_MAC 1 //所有IP数据包都会直接引起ARP table的更新, //为0则非表项内IP-MAC关系会引起ARP请求,可以避免IP欺骗,不过会造成延时 #define ETHARP_SUPPORT_VLAN 0 //非虚拟局域网,为1则仅虚拟局域网通讯有效 //***************************************************************************** // // ---------- IP options ---------- // //***************************************************************************** #define IP_FORWARD 0 //不允许不匹配数据包转发,多接口时为1 #define IP_OPTIONS_ALLOWED 1 //带IP选项数据包允许 为0则丢弃所有IP数据包 #define IP_REASSEMBLY 1 //允许接收IP包分片包(为0不允许,不能够接收大于MTU的包) #define IP_FRAG 1 //允许发送IP包分片包 #define IP_REASS_MAXAGE 3 //允许接收的最大分段数 #define IP_REASS_MAX_PBUFS 10 //最大允许存在的IP分片包占用的内存池个数 #define IP_FRAG_USES_STATIC_BUF 1 //IP分片使用静态缓冲区 #define IP_FRAG_MAX_MTU 1500 //IP分片最大缓冲数量 #define IP_DEFAULT_TTL 255 //IP数据包最大经历设备数目 #define IP_SOF_BROADCAST 0 //IP发送广播包过滤 #define IP_SOF_BROADCAST_RECV 0 //IP接收广播包过滤 //***************************************************************************** // // ---------- ICMP options ---------- // //***************************************************************************** #define LWIP_ICMP 1 //开启ping包接收/发送 #define ICMP_TTL (IP_DEFAULT_TTL) //ping包最大经历设备数目 #define LWIP_BROADCAST_PING 0 //不回复广播ping包 #define LWIP_MULTICAST_PING 0 //不回复多播ping包 //***************************************************************************** // // ---------- RAW options ---------- // //***************************************************************************** #define LWIP_RAW 0 //无操作系统基于回调函数驱动 #define RAW_TTL (IP_DEFAULT_TTL) //应用层数据传输次数(基于IP层的TTL) //***************************************************************************** // // ---------- DHCP options ---------- // //***************************************************************************** #define LWIP_DHCP 0 //动态主机协议配置(为1时) #define LWIP_AUTOIP 0 //动态主机IP地址配置(为1时) #define LWIP_DHCP_AUTOIP_COOP 0 //允许上述两种配置同时存在于1个接口(为1时) #define LWIP_DHCP_AUTOIP_COOP_TRIES 9 //DHCP分配允许失败次数,失败则使用AUTOUP //***************************************************************************** // // ---------- IGMP options ---------- // //***************************************************************************** #define LWIP_IGMP 0 //LWIP组管理协议 //***************************************************************************** // // ---------- DNS options ----------- // //***************************************************************************** #define LWIP_DNS 0 //域名服务器模块(依托UDP协议) #define DNS_TABLE_SIZE 4 //域名服务器维护的最大入口数目 #define DNS_MAX_NAME_LENGTH 256 //域名服务器主机地址最大长度 #define DNS_MAX_SERVERS 2 //域名服务器最大服务数目 #define DNS_DOES_NAME_CHECK 1 //查询域名服务器时检测地址名 #define DNS_USES_STATIC_BUF 1 //域名服务器使用静态地址 #define DNS_MSG_SIZE 512 //域名服务器接收最大通讯数据长度 #define DNS_LOCAL_HOSTLIST 0 //在本地维护域名服务器主机-地址表(为1时) #define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 //主机-地址表实时更新(为1时) //***************************************************************************** // // ---------- UDP options ---------- // //***************************************************************************** #define LWIP_UDP 1 //启用UDP协议(snmp协议基于此) #define LWIP_UDPLITE 1 //UDP协议启用精简版 #define UDP_TTL (IP_DEFAULT_TTL) //UDP数据包传输次数 #define LWIP_NETBUF_RECVINFO 0 //接收到的数据包除首个外其它不附加目的地址和端口 //***************************************************************************** // // ---------- TCP options ---------- // //***************************************************************************** #define LWIP_TCP 1 //启用TCP协议(http协议基于此) #define TCP_TTL (IP_DEFAULT_TTL) //TCP数据包传输次数 #define TCP_WND 4*TCP_MSS //tcp窗口大小 #define TCP_MAXRTX 12 //最大允许重传TCP数据包数目 #define TCP_SYNMAXRTX 6 //最大允许重传SYN连接包数目 #define TCP_QUEUE_OOSEQ (LWIP_TCP) //TCP接收队列外数据块排序 #define TCP_MSS 1460 //tcp报文最大分段长度 #define TCP_CALCULATE_EFF_SEND_MSS 1 //tcp预计发送的分段长度,为1则根据窗口大小分配 #define TCP_SND_BUF (8*TCP_MSS) //TCP发送缓冲区 zc 7.1 #define TCP_SND_QUEUELEN (4*(TCP_SND_BUF/TCP_MSS)) //TCP发送队列长度 #define TCP_SNDLOWAT (TCP_SND_BUF/4) //TCP可发送数据长度 #define TCP_LISTEN_BACKLOG 1 //TCP多连接允许 #define TCP_DEFAULT_LISTEN_BACKLOG 0xff //TCP连接和半连接的总数 #define LWIP_TCP_TIMESTAMPS 0 //TCP时间戳选项 #define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) //TCP窗口更新阈值
//TCP定时器设置选项 #define TCP_MSL 10000UL //TCP连接存在时间 单位ms #define TCP_FIN_WAIT_TIMEOUT 20000UL //FIN等到ACK应答时间 单位ms #define TCP_TMR_INTERVAL 20 //TCP定时器计数间隔 20ms //***************************************************************************** // // ---------- Internal Memory Pool Sizes ---------- // //***************************************************************************** #define PBUF_LINK_HLEN 14 //为处理以太网头申请的包长度(本地MAC地址+远端MAC地址+协议类型) 6+6+2 #define PBUF_POOL_BUFSIZE 256 //单个内存池长度,要考虑到4字节对齐和最佳大小 #define ETH_PAD_SIZE 0 //以太网填充长度,stm32设置为0 根据发送包判断 //关系不大.. 默认即可 //***************************************************************************** // // ---------- Sequential layer options ---------- // //***************************************************************************** #define LWIP_TCPIP_CORE_LOCKING 0 //? #define LWIP_NETCONN 1 //应用层使用NETCONN相关函数 //***************************************************************************** // // ---------- Socket Options ---------- // //***************************************************************************** #define LWIP_SOCKET 0 //关闭SOCKET通讯 //#define LWIP_COMPAT_SOCKETS 1 //#define LWIP_POSIX_SOCKETS_IO_NAMES 1 #define LWIP_SO_RCVTIMEO 0 //conn->acceptmbox/recvmbox接收有超时限制,超时后自动断开连接 //#define LWIP_SO_RCVBUF 0 //#define SO_REUSE 0 //***************************************************************************** // // ---------- Statistics options ---------- // //***************************************************************************** #define LWIP_STATS 0 //LWIP统计选项 //***************************************************************************** // // ---------- checksum options ---------- // //***************************************************************************** #define CHECKSUM_GEN_IP 1 //IP校验和生成 #define CHECKSUM_GEN_UDP 1 //UDP校验和生成 #define CHECKSUM_GEN_TCP 1 //TCP校验和生成 #define CHECKSUM_CHECK_IP 1 //IP校验和校验 #define CHECKSUM_CHECK_UDP 1 //UDP校验和校验 #define CHECKSUM_CHECK_TCP 1 //TCP校验和校验 //***************************************************************************** // // ---------- TCP KEEPLIVE ---------- // //***************************************************************************** #define LWIP_TCP_KEEPALIVE 1 //tcp保活定时器 #define TCP_KEEPIDLE_DEFAULT 60000 //保活时间 60s #define TCP_KEEPINTVL_DEFAULT 10000 //保活探测 10s #define TCP_KEEPCNT_DEFAULT 9U //***************************************************************************** // // ---------- DEBUG_OPTIONS ---------- // //***************************************************************************** #define DEBUG_OPTIONS 0 //调试代码 #if DEBUG_OPTIONS #define U8_F "c" #define S8_F "c" #define X8_F "x" #define U16_F "u" #define S16_F "d" #define X16_F "x" #define U32_F "u" #define S32_F "d" #define X32_F "x" #define LWIP_DEBUG 1//* 不能少这个,否则LWIP_DEBUGF一直编译不过滴!!! //LWIP_DEBUGF调用 #define LWIP_PLATFORM_DIAG(para) printf para //LWIP_ERROR 、LWIP_ASSERT调用 #define LWIP_PLATFORM_ASSERT(para) printf(para) /** * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is * compared against this value. If it is smaller, then debugging * messages are written. */ #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL /** * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable * debug messages of certain types. */ #define LWIP_DBG_TYPES_ON LWIP_DBG_OFF /** * ETHARP_DEBUG: Enable debugging in etharp.c. */ #define ETHARP_DEBUG LWIP_DBG_OFF /** * NETIF_DEBUG: Enable debugging in netif.c. */ #define NETIF_DEBUG LWIP_DBG_OFF /** * PBUF_DEBUG: Enable debugging in pbuf.c. */ #define PBUF_DEBUG LWIP_DBG_OFF /** * API_LIB_DEBUG: Enable debugging in api_lib.c. */ #define API_LIB_DEBUG LWIP_DBG_OFF /** * API_MSG_DEBUG: Enable debugging in api_msg.c. */ #define API_MSG_DEBUG LWIP_DBG_OFF /** * SOCKETS_DEBUG: Enable debugging in sockets.c. */ #define SOCKETS_DEBUG LWIP_DBG_OFF /** * ICMP_DEBUG: Enable debugging in icmp.c. */ #define ICMP_DEBUG LWIP_DBG_OFF /** * IGMP_DEBUG: Enable debugging in igmp.c. */ #define IGMP_DEBUG LWIP_DBG_OFF /** * INET_DEBUG: Enable debugging in inet.c. */ #define INET_DEBUG LWIP_DBG_OFF /** * IP_DEBUG: Enable debugging for IP. */ #define IP_DEBUG LWIP_DBG_OFF /** * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. */ #define IP_REASS_DEBUG LWIP_DBG_OFF /** * RAW_DEBUG: Enable debugging in raw.c. */ #define RAW_DEBUG LWIP_DBG_OFF /** * MEM_DEBUG: Enable debugging in mem.c. */ #define MEM_DEBUG LWIP_DBG_OFF /** * MEMP_DEBUG: Enable debugging in memp.c. */ #define MEMP_DEBUG LWIP_DBG_OFF /** * SYS_DEBUG: Enable debugging in sys.c. */ #define SYS_DEBUG LWIP_DBG_OFF /** * TCP_DEBUG: Enable debugging for TCP. */ #define TCP_DEBUG LWIP_DBG_OFF /** * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. */ #define TCP_INPUT_DEBUG LWIP_DBG_OFF /** * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. */ #define TCP_FR_DEBUG LWIP_DBG_OFF //快速重传 /** * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit * timeout. */ #define TCP_RTO_DEBUG LWIP_DBG_OFF /** * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. */ #define TCP_CWND_DEBUG LWIP_DBG_OFF /** * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. */ #define TCP_WND_DEBUG LWIP_DBG_OFF /** * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. */ #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF /** * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. */ #define TCP_RST_DEBUG LWIP_DBG_ON /** * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. */ #define TCP_QLEN_DEBUG LWIP_DBG_OFF //tcp_enqueue函数中用到 /** * UDP_DEBUG: Enable debugging in UDP. */ #define UDP_DEBUG LWIP_DBG_OFF /** * TCPIP_DEBUG: Enable debugging in tcpip.c. */ #define TCPIP_DEBUG LWIP_DBG_OFF /** * PPP_DEBUG: Enable debugging for PPP. */ #define PPP_DEBUG LWIP_DBG_OFF /** * SLIP_DEBUG: Enable debugging in slipif.c. */ #define SLIP_DEBUG LWIP_DBG_OFF /** * DHCP_DEBUG: Enable debugging in dhcp.c. */ #define DHCP_DEBUG LWIP_DBG_OFF /** * AUTOIP_DEBUG: Enable debugging in autoip.c. */ #define AUTOIP_DEBUG LWIP_DBG_OFF /** * SNMP_MSG_DEBUG: Enable debugging for SNMP messages. */ #define SNMP_MSG_DEBUG LWIP_DBG_OFF /** * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. */ #define SNMP_MIB_DEBUG LWIP_DBG_OFF /** * DNS_DEBUG: Enable debugging for DNS. */ #define DNS_DEBUG LWIP_DBG_OFF #else #define LWIP_NOASSERT 1 #define LWIP_NOERROR 1 #endif //DEBUG_OPTIONS END #endif
标签:
原文地址:http://www.cnblogs.com/zc110747/p/4739588.html