问题描述

在Arduino界面上传代码后,会在控制台打印如下的输出日志:

Sketch uses 1978 bytes (6%) of program storage space. Maximum is 32256 bytes.
Global variables use 188 bytes (9%) of dynamic memory, leaving 1860 bytes for local variables. Maximum is 2048 bytes.

正常日志是上面那样的,但是如果你的代码优化的不够好,或者代码量过大,超出了板子的存储容量限制,就会显示下面这样的报错日志:

Sketch uses 12918 bytes (40%)of program storage space. Maximum is 32256 bytes.
Global variables use 9597 bytes (468%) of dynamic memory, leaving -7549 bytes for local variables. Maximum is 2048 bytes.
Not enough memory; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing your footprint.
data section exceeds available space in board

Compilation error: available spacedatasectionexceedsin board

这些信息告诉你在上传代码时,你的程序(Sketch)使用了12918字节,占总可用空间的40%,最大可用空间为32256字节。动态内存(RAM)使用了9597字节,占总可用空间的468%,最大可用空间为2048字节。

此时要确保你的代码不超过板子自身存储和内存的限制,以避免出现问题或导致程序崩溃。如果你的代码接近或超过了最大限制,你可能需要优化代码或考虑使用更高容量的Arduino板子。

解决方案

  • 使用ChatGPT优化自己的代码,控制占用的存储空间和运行内存在板子允许的范围内。
  • 更换板子:比如上面的Arduino Uno存储空间为32KB,内存为2KB,而你的程序需要使用9KB的内存,可以更换为Arduino Due(存储空间: 512KB,内存: 96KB)

以下是一些常见的Arduino板子及其存储容量信息:

Arduino Uno:
程序存储空间(Flash): 32KB
动态内存(RAM): 2KB

Arduino Nano:
程序存储空间(Flash): 32KB
动态内存(RAM): 2KB

Arduino Mega 2560:
程序存储空间(Flash): 256KB
动态内存(RAM): 8KB

Arduino Leonardo:
程序存储空间(Flash): 32KB
动态内存(RAM): 2.5KB

Arduino Due:
程序存储空间(Flash): 512KB
动态内存(RAM): 96KB

Arduino Nano Every:
程序存储空间(Flash): 48KB
动态内存(RAM): 6KB

Arduino MKR WiFi 1010:
程序存储空间(Flash): 256KB
动态内存(RAM): 32KB

ESP32:
程序存储空间(Flash): 4MB(通常为32Mb)
动态内存(RAM): 520KB(通常为520KB)

ESP8266:
程序存储空间(Flash): 4MB(通常为32Mb)
动态内存(RAM): 80KB(通常为80KB)

加入新媒体交互微信群,分享更多Unity开发技能

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐