前言
问题:在编译时报如下错误
..\OBJ\LCD.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.constdata).
..\OBJ\LCD.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd_init.o(i.LCD_Init).
..\OBJ\LCD.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_gpio.o(i.GPIO_Init).
一、治标
1.将Optimization 等级改为 3级(Level 3)
主要是优化编译程度,但是能优化的大小有限(64K 大小能优化减少1K左右)
2.更改堆容量和栈容量
KEIL 提示L6406E L6407E的解决方法_sramin l6407e-CSDN博客
二、治本
1.查看自己代码的大小
如果为移植的代码,在可以跑的通的文件内,找到.map的文件,用记事本打开
最下面有总代码的大小,也有每个文件的大小。找到内容比较大的文件看看能不能优化
减少了不必要的代码,空间容量自然就够了(废话,谁不想2K的代码实现2M的功能)
需求高,必要的投资也不能少,不然就只能砍需求了(也是提预算的方法?)