1

谁能告诉我如何测量在 Arduino Mega 或 Due 上运行的特定代码消耗的 RAM。

4

3 回答 3

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 一样(不受支持的分叉)。

于 2013-08-06T13:31:24.350 回答
0

在我的 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

然后我用我的记忆

此致!

于 2016-11-22T00:08:11.423 回答
-1
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);

}
于 2013-08-06T21:36:45.650 回答