之前在使用nucleo STM32F091RCT6进行项目实验时,代码编译链接无报错。最近需要将代码移植到nucleo STM32F072RBT6上,在更改Options中device芯片以及C++define后,再次编译链接,出现了几十个相同类型的错误,均为No space in execution regions with .ANY selector matching xxx.o(.data)。字面上是指执行区域无空间。那么这个无空间可能包含两种情况:
1. Flash无空间;
2. RAM无空间。
首先我们来看一下出现错误的原因。由于代码中包含了FreeRTOS,因此代码量非常大,在Options->Utilities->Settings中我们会发现,在芯片选择STM32F091RCT6后,Device Size为256k(k指kbytes),但是在芯片选择为STM32F072RBT6后,Device Size为128k。在ST官网中可以看到:
STM32F091RCT6, Flash: 256k, RAM 32k.
STM32F072RBT6, Flash: 128k, RAM 16k.
因此同样的代码从STM32F091RCT6移植到STM32F072RBT6后出现报错是非常可能的。
接下来先判断是哪种类型的