【发布时间】:2013-08-06 10:42:52
【问题描述】:
谁能告诉我如何测量在 Arduino Mega 或 Due 上运行的特定代码消耗的 RAM。
【问题讨论】:
标签: arduino arduino-ide
谁能告诉我如何测量在 Arduino Mega 或 Due 上运行的特定代码消耗的 RAM。
【问题讨论】:
标签: arduino arduino-ide
这个问题有两种数字: 全局静态使用和当前运行时间。
可以通过添加以下行来确定静态估计使用量(如果它不存在)
.\arduino-1.5.5\hardware\arduino\avr\boards.txt
uno.upload.maximum_ram_size=2048
这允许编译器在 IDE 的结果窗口中输出以下示例中的第二行
Binary sketch size: 25,880 bytes (of a 32,256 byte maximum)
Estimated used SRAM memory: 990 bytes (of a 2048 byte maximum)
查看在任何给定点使用的内存量。包括当前正在使用的内存空间,它只存在于函数和成员中。这包括 HEAP 等。我在代码中的特定点使用以下MemoryFree library 来揭示高水位。自述文件解释了如何通过打印保存不必要/无意使用的 RAM。
注意:虽然原始 Arduino IDE 1.0.5 的 board.txt 文件确实包含这些 ram_sizes,但它实际上并没有使用显示用途。原始 Arduino IDE 1.5.5 的功能以及 Arduino ERW 1.0.5 的功能(不受支持的分支)。
【讨论】:
在我的 Arduino IDE 2.1.0 中
我编辑文件:/usr/share/arduino/hardware/arduino/boards.txt
但第二行没有出现
阅读后: check-ram-memory-usage-arduino-optimization
我试过了:
Show vervose output during compilation
并使用avr-size /tmp/build4042914391435450796.tmp/XXXXXXX.cpp.elf
然后我会使用我的记忆
最好的问候!
【讨论】:
int freeRam () {
extern int __heap_start, *__brkval;
int v;
int fr = (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
Serial.print("Free ram: ");
Serial.println(fr);
}
【讨论】: