STM32爬坑避雷日记
记录一次LWIP遇到的问题(STM32F407+DP83848)
首先重装了系统,然后信心满满的安装了最高版本STM32CUBEMX6.5,结果lwip不好使
第一次搞了一天,看完了百度所有相关教程,就是不行,怀疑软件BUG,果断放弃,重新拾起v6.3,项目正常进行…
(省略配置教程,懒得贴) 种种原因,我想再次反思这个问题,首先确定,内存出了问题v6.5将“LWIP_RAM_HEAP_POINTER”配置为0x30044000,这在F407估计是行不通了,去掉“lwipopts.h”中的注释
///*----- Default Value for H7 devices: 0x30044000 -----*/
//#define LWIP_RAM_HEAP_POINTER 0x30044000
///*----- Value supported for H7 devices: 1 -----*/
//#define LWIP_SUPPORT_CUSTOM_PBUF 1
(看样子8层是给H743用的),在翻翻代码
/** If you want to relocate the heap to external memory, simply define
* LWIP_RAM_HEAP_POINTER as a void-pointer to that location.
* If so, make sure the memory at that location is big enough (see below on
* how that space is calculated). */
#ifndef LWIP_RAM_HEAP_POINTER
/** the heap. we need one struct mem at the end and some room for alignment */
LWIP_DECLARE_MEMORY_ALIGNED(ram_heap, MEM_SIZE_ALIGNED + (2U * SIZEOF_STRUCT_MEM));
#define LWIP_RAM_HEAP_POINTER ram_heap
#endif /* LWIP_RAM_HEAP_POINTER */
没有外部RAM,注释掉就对了,继续测试,直接上UDP例程(祖上传的),明显可以通讯了,但是好像PING不通,还是有问题
根据大佬们的描述,关闭“Checksum”选项卡中的CHECKSUM_CHECK_ICMP 和CHECKSUM_GEN_ICMP 再次下载,终于终于可以ping通了,到这里只是解决了问题,但是问题仍不清晰,所以没有必要情况,还是用低版本吧