FreeRTOS-lwip参数表

1 FreeRTOSConfig.h

操作系统freertos宏定义

1.1 configUSE_PREEMPTION

	configUSE_PREEMPTION

为1时RTOS使用抢占式调度器,即当进程位于内核空间时,有一个更高优先级的任务出现时,如果当前内核允许抢占,则可以将当前任务挂起,执行优先级更高的进程;
  为0时RTOS使用协作式调度器(时间片)高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占 CPU 运行

// 同步和通信配置
#define configUSE_MUTEXES           1                  // 是否使用互斥锁
#define INCLUDE_xSemphoreGetMutexHolder 1              //  启用 xSemaphoreGetMutexHolder API
#define configUSE_RECURSIVE_MUTEXES 1                  // 是否使用递归互斥锁
#define configUSE_COUNTING_SEMAPHORES 1                // 是否使用计数信号量

// 软件定时器配置
#define configUSE_TIMERS            1                  // 是否启用软件定时器

// 钩子函数配置
#define configUSE_IDLE_HOOK         0                  // 是否使用空闲任务钩子
#define configUSE_TICK_HOOK         0                  // 是否使用系统节拍钩子

#define configUSE_DAEMON_TASK_STARTUP_HOOK 0           //禁用守护任务启动钩子
#define configUSE_malloc_failed_hook 1                 //启用内存分配失败钩子

//调试和统计配置
#define configUSE_TRACE_FACILITY                0    //禁用跟踪功能,减少代码大小。
#define configUSE_NEWLIB_REENTRANT              0    //禁用 Newlib 可重入支持,适用于不使用 Newlib 的场景
#define configUSE_STATS_FORMATTING_FUNCTIONS    1   //启用统计信息格式化函数,方便调试和性能分析。
#define configGENERATE_RUN_TIME_STATS           0			//禁用运行时统计,减少开销。

//任务和内存配置
#define configSUPPORT_STATIC_ALLOCATION 0        // 禁用静态内存分配
#define configMAX_PRIORITIES  7                  // 最大任务优先级
#define configTIMER_TASK_PRIORITY               configMAX_PRIORITIES-1
#define configMINIMAL_STACK_SIZE    256          //最小任务栈大小
#define configTIMER_TASK_STACK_DEPTH   ( configMINIMAL_STACK_SIZE * 2 ) //定时器任务栈深度
#define configTOTAL_HEAP_SIZE                   ((size_t )(50*1024))    // 堆大小
 #define configMAX_TASK_NAME_LEN                 10                     // 任务名称最大长度


// 调度和任务行为配置
#define configIDLE_SHOULD_YIELD                 1   // 空闲任务让出 CPU
#define configUSE_TIME_SLICING                  1   // 启用时间片调度
#define configUSE_TASK_NOTIFICATIONS            1    // 启用任务通知
#define configUSE_QUEUE_SETS                    1    // 启用队列集
#define configUSE_TASK_FPU_SUPPORT              1    // 启用任务浮点单元支持

#define configSTREAM_BUFFER  0 // 禁用流缓冲区
#define configMESSAGE_BUFFER  0// 禁用消息缓冲区
#define configUSE_16_BIT_TICKS                  0// 使用 32 位 Tick 计数器
#define configAPPLICATION_TASK_TAG 				0// 禁用任务标签

/* Co-routine related definitions. */
#define configUSE_CO_ROUTINES                   0//禁用协程(Co-routines)功能
#define configMAX_CO_ROUTINE_PRIORITIES        2 // 协程最大优先级

#define configTICK_RATE_HZ                      ((TickType_t ) 1000)// 系统节拍频率为 1000 Hz
#define configTIMER_QUEUE_LENGTH                10// 定时器队列长度为 10
#define configCHECK_FOR_STACK_OVERFLOW          2// 启用栈溢出检查(方法 2)
#define configQUEUE_REGISTRY_SIZE               10 // 队列注册表大小为 10
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 3 // 每个任务有 3 个线程本地存储指针
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() // 配置运行时统计定时器
#define portGET_RUN_TIME_COUNTER_VALUE()  // 获取运行时统计计数器值
#define configUSE_TICKLESS_IDLE                 0// 禁用 Tickless 空闲模式
#define configTASK_RETURN_ADDRESS NULL


2 opt.h @L_知识混子_

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

3 lwipopt.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值