lwip -- lwipopts.h

lwipopts.h 是协议栈给用户的配置接口。

src/include/lwip/opt.h 文件中包含了 lwipopts.h。协议栈在 src/include/lwip/opt.h 做好了默认配置,如果用户在lwipopts.h 中配置的相关参数后则会优先使用用户的配置。

// 无操作系统,使用FreeRTOS时为0,使用AutoSar或baremental时为1
#define NO_SYS 1

#if NO_SYS == 0
// 当NO_SYS 为0时,可以使能下面两个选项,NO_SYS为1时下面选项必须配置为0,或不配置,默认为0
// 代表两种应用编程接口
#define LWIP_NETCONN 1
#define LWIP_SOCKET 1

// 网卡相关的函数接口,在FreeRTOS下能用改接口,AutoSar或baremental下不能用。
#define LWIP_NETIF_API 1
#endif

// 内存类相关配置
// 内存对齐,一般是4字节对齐
#define MEM_ALIGNMENT 4

// mem_malloc 使用该内存
// pbuf_alloc 的type==PBUF_RAM时调用mem_malloc 使用该内存
#define MEM_SIZE (22 * 1024)

// udp_new 在不释放的情况下最多创建udp_pcb的个数
#define MEMP_NUM_UDP_PCB 6
// 在不释放的情况下最多创建tcp_pcb的个数
#define MEMP_NUM_TCP_PCB 10
// 在不释放的情况下最多创建的tcp_pcb_listen的个数,监听pcb(服务端pcb)
#define MEMP_NUM_TCP_PCB_LISTEN 6

// 结构体 struct tcp_seg的个数,
// memp_malloc(MEMP_TCP_SEG), 在tcp_write函数中使用
#define MEMP_NUM_TCP_SEG 22

// 超时结构体,struct sys_timeo的个数,
// memp_malloc(MEMP_SYS_TIMEOUT)
// 改值得设置需要大于协议栈的超时时间的个数
// src/core/timeout.c 中数组struct lwip_cyclic_timer lwip_cyclic_timers[]的元素个数
#define MEMP_NUM_SYS_TIMEOUT 10

// pbuf 结构体的个数, 用作pbuf引用。仅申请pbuf结构体,引用别处的payload
// memp_malloc(MEMP_PBUF)
#define MEMP_NUM_PBUF      15

// memp_malloc(MEMP_PBUF_POOL),申请pbuf池中的pbuf(pbuf结构体+payload)
// payload 的长度固定为 PBUF_POOL_BUFSIZE
// pbuf内存池中的pbuf的最大个数
#define PBUF_POOL_SIZE     16
// 一个pbuf的payload 的长度,应设置为以太网帧最大的值
#define PBUF_POOL_BUFSIZE  LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN)

// TCP包在网络中生存时间,默认为255
#define TCP_TTL 255
// 传输层最大段的大小
#define TCP_MSS (1500 - 40)

// 每个tcp_pcb的发送缓存区最大值,在创建tcp_pcb时初始化为改值。
// 不能小于 (2*TCP_MSS)
#define TCP_SND_BUF (6 * TCP_MSS)

#define TCP_SND_QUEUELEN (3 * TCP_SND_BUF) / TCP_MSS

// 每个tcp_pcb的接收窗口最大值,在创建tcp_pcb时初始化为改值。
#define TCP_WND     (16 * TCP_MSS)

// 协议栈使能TCP
#define LWIP_TCP 1
// 在使用IPv4的情况下使能ICMP, IPv6下是LWIP_ICMP6
#define LWIP_ICMP 1
// 在使用IPv4的情况下使能DHCP, LWIP_IPV6_DHCP6
#define LWIP_DHCP 1
// 协议栈使能UDP
#define LWIP_UDP 1

// TCP包在网络中生存时间,默认为255
#define TCP_TTL 255

// UDP包在网络中生存时间,默认为255
#define UDP_TTL 255

// 校验选项配置
#ifdef CHECKSUM_BY_HARDWARE
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
#define CHECKSUM_GEN_IP 0
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
#define CHECKSUM_GEN_UDP 0
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
#define CHECKSUM_GEN_TCP 0
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
#define CHECKSUM_CHECK_IP 0
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
#define CHECKSUM_CHECK_UDP 0
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
#define CHECKSUM_CHECK_TCP 0
#else
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
#define CHECKSUM_GEN_IP    1
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
#define CHECKSUM_GEN_UDP   1
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
#define CHECKSUM_GEN_TCP   1
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
#define CHECKSUM_CHECK_IP  1
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
#define CHECKSUM_CHECK_UDP 1
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
#define CHECKSUM_CHECK_TCP 1
#endif

//#define LWIP_TIMERS                     1
//#define TCP_TMR_INTERVAL      20
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将RT-Thread和LwIP移植到STM32F4平台需要一些步骤,下面是一个简单的指南: 1.下载RT-Thread源代码和LwIP源代码。可以从官方网站获取最新版本。 2.将RT-Thread和LwIP源代码添加到您的工程中。可以直接将源代码文件复制到您的工程目录中,也可以在工程中创建一个新的文件夹,并将源代码添加到该文件夹中。 3.根据您的硬件配置,对STM32F4的寄存器和外设进行初始化。通常,您需要根据硬件手册编写一些初始化代码,以使STM32F4与RT-Thread和LwIP兼容。 4.配置LwIP选项。通过修改lwipopts.h文件,您可以配置LwIP的各种选项,例如IP地址、子网掩码、网关等。 5.在RT-Thread的配置文件rtconfig.h中启用LwIP组件。找到RT-Thread中的lwip组件选项,并确保它被启用。 6.修改RT-Thread的初始化代码,以初始化并启动LwIP。在RT-Thread的应用程序入口函数中,添加初始化LwIP的代码。这包括为LwIP创建一个线程,并为网络接口分配内存等。 7.根据您的需求配置LwIP和RT-Thread的线程、任务和堆栈大小。这些参数的默认值可能不适合您的应用,您可以根据需要进行调整。 8.编译并烧录您的应用程序到STM32F4上。使用合适的编译工具和烧录器,将代码编译成二进制文件,并烧录到STM32F4上。 9.测试和调试。在STM32F4上运行您的应用程序,并使用适当的工具(例如串口终端)检查网络连接。您还可以使用调试器来调试您的应用程序,并解决可能遇到的问题。 这只是一个初步指南,具体的移植过程可能因个人需求和硬件平台的差异而有所不同。对于更深入的了解,建议参考LwIP和RT-Thread的官方文档和社区讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值