STM32 Keil5编译错误解析:L6406E执行区域空间不足问题详解

STM32 Keil5编译报错: Error: L6406E: No space in execution regions with .ANY…的问题

出现这个问题的原因是程序过大,单片机Flash存不下了,主要有以下几种解决方案:
1、调整ROM空间大小来存放更多程序
2、调整Keil代码优化等级,等级越高编译出来的程序越小
3、优化代码,删掉一些不用的全局变量、全局数组释放空间
4、可能是Flash真的不够了,查下手册,看看Ram是不是真的用完了

ROM占用空间:Code + RO-data + RW-data
RAM占用空间:RW-data + ZI-data
01:Code 代表执行的代码,程序中所有的函数;
02:RO-data 代表只读数据,程序中所定义的全局常量数据;
03:RW-data代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量;
04:ZI-data代表定义了但未初始化的可读写数据,ZI英语是zero initial,就是程序中用到的变量并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。

作者:Lin201230

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 Keil5编译错误解析:L6406E执行区域空间不足问题详解

发表回复