谁能告诉我如何测量在 Arduino Mega 或 Due 上运行的特定代码消耗的 RAM。
3 回答
这个问题有两种数字: 全局静态使用和当前运行时间。
可以通过添加以下行来确定静态估计使用量(如果它不存在)
.\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 库来揭示高水位。自述文件解释了如何通过打印保存不必要/无意使用的 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
我试过:
在编译
和使用过程中显示vervose输出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);
}