似乎我的一些函数被放入.data部分。这适用于具有类的库。
我按照此处的建议查看了内存映射: http://www.nongnu.org/avr-libc/user-manual/group_demo_project.html
我也一直在使用avr-size来查看.data和.text问题的大小。
为什么程序代码放在.data而不是.text?
的任何想法答案 0 :(得分:0)
我想我弄清楚发生了什么。
看起来代码只是进入了.data部分。实际上发生的是来自调试消息的char *,因此占用了大部分空间。
例如,我有一堆Serial.println("debug message that is a long string.");
对于Serial.println,一个简单的方法是使用F()宏,它将字符串存储在FLASH而不是RAM中(.data部分我是看到)。
此外,此链接提供了有关字符串内存保护的一些好信息: http://arduino.cc/en/Reference/PROGMEM