0

似乎我的一些函数被放入了 .data 部分。这适用于具有类的库。

我已经按照这里的建议查看了内存映射: http : //www.nongnu.org/avr-libc/user-manual/group_demo_project.html

我也一直在使用 avr-size 来查看 .data 和 .text 问题的大小。

为什么程序代码被放置在.data而不是.text中的任何想法?

4

1 回答 1

0

我想我知道发生了什么。

看起来只是代码进入了 .data 部分。那里实际发生的是调试消息中的 char * ,因此占用了很大一部分空间。

例如,Serial.println("debug message that is a long string."); 对于 Serial.println,我有一个简单的解决方法是使用 F() 宏,它将字符串存储在 FLASH 而不是 RAM 中(我看到的 .data 部分)。

此外,此链接提供了一些关于字符串内存保护的好信息:http: //arduino.cc/en/Reference/PROGMEM

于 2013-09-06T14:42:00.713 回答