KEIL5编译错误L6406E解决方法

在我们使用KEIL过程中,会遇到各种各样的问题。例如我在使用一个ewmin项目过程中遇到L6406E错误编译通不过,见下图
KEIL5编译错误L6406E解决方法_第1张图片
从输出的提示信息,猜测是空间不够所致,此项目选用的芯片是
512k的Flash,64K的RAM,我试着选用大点的存储空间的芯片的STM32F103ZG,此芯片1M的Flash,96k的RAM,如下图
KEIL5编译错误L6406E解决方法_第2张图片
试着用keil5.30编译一下,无错误和警告。见下图
KEIL5编译错误L6406E解决方法_第3张图片
说明刚开始分析空间不够是对的,是flash不够还是RAM不够,我们看输出文件倒数第三行,算一算到底用了多少Flash,多少RAM呢,
Flash:(129344+100912)/1024=225,差不多225k,
RAM=(3476+63116)/1024=65k,显然超过原来芯片的64k范围
接下来可以分析一下*.map文件,是哪些变量占用比较多RAM呢
见下图
KEIL5编译错误L6406E解决方法_第4张图片
发现guiconf.o文件用的RAM达到46592个字节,差不多45k,所以想从这个文件着手,能否优化一下呢?打开此文件将宏定义修改如下
KEIL5编译错误L6406E解决方法_第5张图片
减小1K空间,重新选择512kFlash,64kRAM芯片,编译通过。实际将GUI_NUMBYTES数量改小,会不会影响LCD显示效果,只有在实践中再实验了。

你可能感兴趣的:(技术,stm32)