F407+LWIP2.0.3+UCOSII 编译出现L6406

2020-01-10 19:43发布

。。。请问F407+LWIP2.0.3+UCOSII移植需要多少RAM? 需要外扩么,编译时提示很多L6406
LWIP1.3.2可以正常使用, 2.0.3比1.3.2大很多么。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
mii
1楼-- · 2020-01-10 22:04
LWIP2.0文件修改比较大,我407裸机跑RAM是足够的,还做了TCP,UDP应用。 有可能 是文件移植有问题,你需要 细心去查找原因
dy22511825
2楼-- · 2020-01-11 00:47
mii 发表于 2018-5-31 16:38
LWIP2.0文件修改比较大,我407裸机跑RAM是足够的,还做了TCP,UDP应用。 有可能 是文件移植有问题,你需要  ...

我找出来是RAM不够,有几个变量很大:
==============================================================================

    Total RO  Size (Code + RO Data)                56192 (  54.88kB)
    Total RW  Size (RW Data + ZI Data)            305816 ( 298.65kB)
    Total ROM Size (Code + RO Data + RW Data)      56228 (  54.91kB)

==============================================================================

netif                                    0x20004360   Data          48  netconf.o(.bss)
    RS232_send_data                          0x20004390   Data        1024  dma.o(.bss)
    DMA_InitStructureTX                      0x20004790   Data          60  dma.o(.bss)
    RS232_buff                               0x200047cc   Data        1024  sci.o(.bss)
    ip_data                                  0x20004bcc   Data          24  ip.o(.bss)
    ram_heap                                 0x20004be4   Data       10252  mem.o(.bss)
    memp_memory_UDP_PCB_base                 0x200073f0   Data         128  memp.o(.bss)
    memp_memory_TCP_PCB_base                 0x2000747a   Data         840  memp.o(.bss)
    memp_memory_TCP_PCB_LISTEN_base          0x200077cc   Data         224  memp.o(.bss)
    memp_memory_TCP_SEG_base                 0x200078b6   Data         640  memp.o(.bss)
    memp_memory_REASSDATA_base               0x20007b40   Data         160  memp.o(.bss)
    memp_memory_FRAG_PBUF_base               0x20007bea   Data         360  memp.o(.bss)
    memp_memory_PBUF_base                    0x20007d5c   Data         256  memp.o(.bss)
   memp_memory_PBUF_POOL_base               0x20007e66   Data       242400  memp.o(.bss)
    lwip_stats                               0x20043150   Data         212  stats.o(.bss)
    DMARxDscrTab                             0x20043334   Data         128  stm32f4x7_eth.o(.bss)
    DMATxDscrTab                             0x200433b4   Data          64  stm32f4x7_eth.o(.bss)
    Rx_Buff                                  0x200433f4   Data        6096  stm32f4x7_eth.o(.bss)
    Tx_Buff                                  0x20044bc4   Data        3048  stm32f4x7_eth.o(.bss)
    RX_Frame_Descriptor                      0x200457ac   Data          12  stm32f4x7_eth.o(.bss)
    OSEventTbl                               0x200457b8   Data        4200  os_core.o(.bss)
    OSFlagTbl                                0x20046820   Data          80  os_core.o(.bss)
    OSTaskStatStk                            0x20046870   Data         512  os_core.o(.bss)
    OSTaskIdleStk                            0x20046a70   Data         512  os_core.o(.bss)
    OSTCBPrioTbl                             0x20046c70   Data         256  os_core.o(.bss)
    OSTCBTbl                                 0x20046d70   Data        1936  os_core.o(.bss)
    OSMemTbl                                 0x20047500   Data         120  os_core.o(.bss)
    OSQTbl                                   0x20047578   Data          96  os_core.o(.bss)
    OSTmrTbl                                 0x200475d8   Data         640  os_core.o(.bss)
    OSTmrTaskStk                             0x20047858   Data         512  os_core.o(.bss)
    OSTmrWheelTbl                            0x20047a58   Data          64  os_core.o(.bss)
    OS_CPU_ExceptStk                         0x20047a98   Data        4096  os_cpu_c.o(.bss)
    __initial_sp                             0x2004aa98   Data           0  startup_stm32f4xx.o(STACK)
mii
3楼-- · 2020-01-11 01:44
dy22511825 发表于 2018-5-31 21:13
我找出来是RAM不够,有几个变量很大:
============================================================== ...

PBUF的大小定义了多大?
dy22511825
4楼-- · 2020-01-11 03:28
mii 发表于 2018-5-31 22:14
PBUF的大小定义了多大?

#ifndef LWIP_HDR_LWIPOPTS_H__
#define LWIP_HDR_LWIPOPTS_H__

/* Prevent having to link sys_arch.c (we don't test the API layers in unit tests) */
#define NO_SYS                          1
#define LWIP_NETCONN                    0
#define LWIP_SOCKET                     0
#define SYS_LIGHTWEIGHT_PROT            0

#define LWIP_IPV6                       0
#define IPV6_FRAG_COPYHEADER            0
#define LWIP_IPV6_DUP_DETECT_ATTEMPTS   0

/* Enable DHCP to test it */
#define LWIP_DHCP                       0

/* Turn off checksum verification of fuzzed data */
#define CHECKSUM_CHECK_IP               0
#define CHECKSUM_CHECK_UDP              0
#define CHECKSUM_CHECK_TCP              0
#define CHECKSUM_CHECK_ICMP             0
#define CHECKSUM_CHECK_ICMP6            0

/* Minimal changes to opt.h required for tcp unit tests: */
#define MEM_SIZE                        1600
#define TCP_SND_QUEUELEN                40
#define MEMP_NUM_TCP_SEG                TCP_SND_QUEUELEN
#define TCP_SND_BUF                     (12 * TCP_MSS)
#define TCP_WND                         (10 * TCP_MSS)
#define LWIP_WND_SCALE                  1
#define TCP_RCV_SCALE                   0
#define PBUF_POOL_SIZE                  20 /* pbuf tests need ~200KByte */
#define PBUF_POOL_BUFSIZE                                128
/* Minimal changes to opt.h required for etharp unit tests: */
#define ETHARP_SUPPORT_STATIC_ENTRIES   1
#define LWIP_DISABLE_TCP_SANITY_CHECKS 1
#endif /* LWIP_HDR_LWIPOPTS_H__ */


减少了很多, 它默认是 PBUF_POOL_SIZE                  400
MEM_SIZE                        16000


这样还是太大,还得减小
mii
5楼-- · 2020-01-11 07:43
 精彩回答 2  元偷偷看……
dy22511825
6楼-- · 2020-01-11 12:03
mii 发表于 2018-6-1 17:09
我也是默认配置,我一直在做裸跑应用,是不是你带系统后有地方分配较大内存? ...

。。。不太像,memp_memory_PBUF_POOL_base               一个干了242400 字节 。。。

一周热门 更多>