Tool/software:
Hi, experts,
Now I have a problem, The mmwave_mcuplus_sdk_04_04_01_02\mcu_plus_sdk_am273x_08_05_00_24\examples\networking\lwip\enet_cpsw_udpserver can successfully send and receive data When I ported it to the mmwave_mcuplus_sdk_04_04_01_02\mmwave_mcuplus_sdk_04_04_01_02\ti\demo\am273x\mmw demo it ran out of memory in the screenshot, I tried to cut TCP, PPP, DHCP and other functions in lwipopts.h, but its memory occupation is still high. If I only need UDP functions, and do not greatly modify the udpserver demo, what else can I do to reduce the memory occupation, so that my project can be compiled through
Without changing the original udp server demo code, I modified the makefile and the lwipopts.h header to get the memory optimization shown in the figure. Is there any way to further optimize the memory usage of MSS_L2
#
# Auto generated makefile
#
export MCU_PLUS_SDK_PATH?=$(abspath ../../..)
include $(MCU_PLUS_SDK_PATH)/imports.mak
CG_TOOL_ROOT=$(CGT_TI_ARM_CLANG_PATH)
CC=$(CGT_TI_ARM_CLANG_PATH)/bin/tiarmclang
AR=$(CGT_TI_ARM_CLANG_PATH)/bin/tiarmar
PROFILE?=debug
ConfigName:=$(PROFILE)
LIBNAME:=lwip-freertos.am273x.r5f.ti-arm-clang.$(PROFILE).lib
FILES_common := \
init.c \
def.c \
inet_chksum.c \
ip.c \
mem.c \
memp.c \
netif.c \
pbuf.c \
raw.c \
netbuf.c \
err.c \
tcpip.c \
stats.c \
api_lib.c \
api_msg.c \
sys.c \
timeouts.c \
udp.c \
etharp.c \
ip4.c \
ip4_addr.c \
ip4_frag.c \
ethernet.c \
sys_arch.c \
FILES_PATH_common = \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/smtp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/tftp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/mqtt \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/tftp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/netbiosns \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/mdns \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/altcp_tls \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/http \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/http/makefsdata \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/lwiperf \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/snmp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/apps/sntp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/netif \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/netif/ppp \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/netif/ppp/polarssl \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/core \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/core/ipv6 \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/core/ipv4 \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/api \
${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-port/freertos/src \
INCLUDES_common := \
-I${CG_TOOL_ROOT}/include/c \
-I${MCU_PLUS_SDK_PATH}/source \
-I${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-stack/src/include \
-I${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-port/include \
-I${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-port/freertos/include \
-I${MCU_PLUS_SDK_PATH}/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MCU_PLUS_SDK_PATH}/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MCU_PLUS_SDK_PATH}/source/networking/lwip/lwip-config/am273x \
-I${MCU_PLUS_SDK_PATH}/source/kernel/freertos/config/am273x/r5f \
DEFINES_common := \
-DSOC_AM273X \
CFLAGS_common := \
-mcpu=cortex-r5 \
-mfloat-abi=hard \
-mfpu=vfpv3-d16 \
-mthumb \
-Wall \
-Werror \
-g \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-unused-function \
-Wno-extra \
-Wvisibility \
-fno-strict-aliasing \
CFLAGS_release := \
-Os \
-Oz \
-flto \
CFLAGS_cpp_common := \
-Wno-c99-designator \
-Wno-extern-c-compat \
-Wno-c++11-narrowing \
-Wno-reorder-init-list \
-Wno-deprecated-register \
-Wno-writable-strings \
-Wno-enum-compare \
-Wno-reserved-user-defined-literal \
-Wno-unused-const-variable \
-x c++ \
CFLAGS_debug := \
-D_DEBUG_=1 \
ARFLAGS_common := \
rc \
FILES := $(FILES_common) $(FILES_$(PROFILE))
ASMFILES := $(ASMFILES_common) $(ASMFILES_$(PROFILE))
FILES_PATH := $(FILES_PATH_common) $(FILES_PATH_$(PROFILE))
CFLAGS := $(CFLAGS_common) $(CFLAGS_$(PROFILE))
ASMFLAGS := $(CFLAGS_common) $(CFLAGS_$(PROFILE))
ifeq ($(CPLUSPLUS_BUILD), yes)
CFLAGS += $(CFLAGS_cpp_common)
endif
DEFINES := $(DEFINES_common) $(DEFINES_$(PROFILE))
INCLUDES := $(INCLUDES_common) $(INCLUDE_$(PROFILE))
ARFLAGS := $(ARFLAGS_common) $(ARFLAGS_$(PROFILE))
LIBDIR := lib
OBJDIR := obj/am273x/ti-arm-clang/$(PROFILE)/r5f/lwip-freertos/
OBJS := $(FILES:%.c=%.obj)
OBJS += $(ASMFILES:%.S=%.obj)
DEPS := $(FILES:%.c=%.d)
vpath %.obj $(OBJDIR)
vpath %.c $(FILES_PATH)
vpath %.S $(FILES_PATH)
$(OBJDIR)/%.obj %.obj: %.c
@echo Compiling: $(LIBNAME): $<
$(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) -MMD -o $(OBJDIR)/$@ $<
$(OBJDIR)/%.obj %.obj: %.S
@echo Compiling: $(LIBNAME): $<
$(CC) -c $(ASMFLAGS) -o $(OBJDIR)/$@ $<
all:clean $(LIBDIR)/$(LIBNAME)
$(LIBDIR)/$(LIBNAME): $(OBJS) | $(LIBDIR)
@echo .
@echo Archiving: $(LIBNAME) to $@ ...
$(AR) $(ARFLAGS) $@ $(addprefix $(OBJDIR), $(OBJS))
@echo Archiving: $(LIBNAME) Done !!!
@echo .
clean:
@echo Cleaning: $(LIBNAME) ...
$(RMDIR) $(OBJDIR)
$(RM) $(LIBDIR)/$(LIBNAME)
scrub:
@echo Scrubing: $(LIBNAME) ...
-$(RMDIR) obj/
-$(RMDIR) lib/
$(OBJS): | $(OBJDIR)
$(LIBDIR) $(OBJDIR):
$(MKDIR) $@
-include $(addprefix $(OBJDIR)/, $(DEPS))
#ifndef LWIP_LWIPOPTS_H
#define LWIP_LWIPOPTS_H
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef LWIP_OPTTEST_FILE
#include "lwipopts_test.h"
#else /* LWIP_OPTTEST_FILE */
#include "lwipopts_os.h"
#endif
#define LWIP_IPV4 1 // Enable IPv4
#define LWIP_IPV6 0 // Disable IPv6
#define LWIP_SOCKET 0 // Disable lwIP socket support
#define LWIP_NETCONN (NO_SYS==0) // Enable lwIP netconn API support
#define LWIP_NETIF_API (NO_SYS==0) // Enable netif API
// Disable options related to TCP and other protocols
#define LWIP_TCP 0 // Disable TCP
#define LWIP_ICMP 0 // Disable ICMP
#define LWIP_IGMP 0 // Disable IGMP
#define LWIP_DNS 0 // Disable DNS
#define LWIP_MDNS_RESPONDER 0 // Disable mDNS
#define LWIP_ARP 1 // Enable ARP
// Enable UDP
#define LWIP_UDP 1 // Enable UDP
#define LWIP_UDPLITE LWIP_UDP // Enable UDPLITE
#define UDP_TTL 255 // Set UDP TTL
/* Memory options configuration */
#define MEM_ALIGNMENT 4U // Set memory alignment
#define MEM_USE_POOLS 1 // Enable memory pools
#define MEMP_USE_CUSTOM_POOLS 1 // Use custom memory pools
#define PBUF_POOL_BUFSIZE 1536 // Set pbuf pool size
/* Other memory pool configurations */
#define MEMP_NUM_PBUF 128
#define MEMP_NUM_UDP_PCB 4
#define MEMP_NUM_TCPIP_MSG_API 128
#define MEMP_NUM_TCPIP_MSG_INPKT 128
#define MEMP_NUM_RAW_PCB 0
#define MEMP_NUM_TCP_PCB 0
#define MEMP_NUM_TCP_PCB_LISTEN 0
#define MEMP_NUM_TCP_SEG 0
/* ---------- Thread and synchronization options ---------- */
#define SYS_LIGHTWEIGHT_PROT 0 // Disable lightweight protection
/* ---------- TCP/IP stack configuration ---------- */
#define TCPIP_THREAD_STACKSIZE (8 * 1024) // TCP/IP thread stack size
#define DEFAULT_THREAD_STACKSIZE (5 * 1024) // Default thread stack size
/* ---------- UDP receive mailbox size ---------- */
#define DEFAULT_UDP_RECVMBOX_SIZE 320 // Set UDP receive mailbox size
/* ---------- Debug options ---------- */
#define LWIP_DEBUG 0 // Disable debug output
#define LWIP_DBG_T LWIP_DBG_OFF // Disable debug
#define LWIP_NETIF_LINK_CALLBACK 1
#define LWIP_NETIF_STATUS_CALLBACK 1
#define LWIP_NETIF_EXT_STATUS_CALLBACK 1
#ifdef __cplusplus
}
#endif
#endif /* LWIP_LWIPOPTS_H */