MDK中编译链接时报错以及CODE、ROData、RWData、
2019-07-30 本文已影响0人
eversay
一直以来在做单片机编程时我只关心ROM代码空间的使用量,忽视了RAM的大小,今天明明只是移植了其他例程中的代码,结果调了两个晚上都找不到原因,最后把微库打钩就好了,相当用微库提供的函数优化了一部分代码。下面是报错的代码。
![](https://img.haomeiwen.com/i15935824/83bef39673c9b10a.png)
(最讨厌这种报错了)
SRAM地址从0x20000000开始,空间64k,链接时有0x320个字节数据存放不下。一般有一下几种解决方案:
1、勾选微库
2、提高编译优化等级option->c/c++->optimization的Level0 - level3
3、勾选option ->linker -> use memory layout form target dialog 选择分散加载(理解不深,有待继续研究)
![](https://img.haomeiwen.com/i15935824/ec99e2c13badc4be.png)
这是勾选微库之后的编译信息。
Code :代码占用空间量
RO-data (read only):只读常量,(const型)
RW-data (read/write):可读写变量
ZI-data (zero initialize) :没有初始化的变量,不算作代码
![](https://img.haomeiwen.com/i15935824/1f551b47115bd233.png)
运行时固件占用ROM 大小为 code + RW-data +ROdata =35.03KB
占用的RAM 大小为 RW-data +ZI-data = 63.82KB
![](https://img.haomeiwen.com/i15935824/0d7a72d34ab9e26e.png)