肯定是内存问题,不用去跟踪 emwin的源码,sdram 初始化到 heap 的部分内存和你分给 emwin 缓存的部分内存可能存在重复的。把你所有使用 sdram 分配的内存部分代码核查一遍,是不是有类似如下代码
#define LCD_LAYER0_FRAME_BUFFER EXT_SDRAM_BEGIN
#define LCD_LAYER1_FRAME_BUFFER (LCD_LAYER0_FRAME_BUFFER + XSIZE_PHYS * YSIZE_PHYS * 2 * NUM_VSCREENS * NUM_BUFFERS)
这种直接定义一个内存地址的方式。或者其它使用 attribute 等指定内存分配方式。
这些都和内存堆冲突了
肯定是内存问题,不用去跟踪 emwin的源码,sdram 初始化到 heap 的部分内存和你分给 emwin 缓存的部分内存可能存在重复的。把你所有使用 sdram 分配的内存部分代码核查一遍,是不是有类似如下代码
#define LCD_LAYER0_FRAME_BUFFER EXT_SDRAM_BEGIN
#define LCD_LAYER1_FRAME_BUFFER (LCD_LAYER0_FRAME_BUFFER + XSIZE_PHYS * YSIZE_PHYS * 2 * NUM_VSCREENS * NUM_BUFFERS)
这种直接定义一个内存地址的方式。或者其它使用 attribute 等指定内存分配方式。
这些都和内存堆冲突了
举报