본문 바로가기

아두이노/응용

💡 ESP32의 Flash, PSRAM 및 메모리 정보 확인하기

반응형

내가 사용하는 ESP32 보드의 플래시 메모리 용량, PSRAM 크기, CPU 클럭 등의 정보를 확인해볼 수 있습니다.
아래 예제는 아두이노 IDE에서 간단히 실행해볼 수 있는 코드입니다 👇

#include <Arduino.h>

void setup() {
  Serial.begin(115200);
  ps_malloc(550 * 1024);
  uint8_t * buf = (uint8_t*)malloc(500 * 1024);
  if (buf == NULL) {
    Serial.println("can't allocate memory with malloc\n");
  }

  Serial.print("ESP32 SDK: "); Serial.println(ESP.getSdkVersion());
  Serial.print("ESP32 CPU FREQ: "); Serial.print(getCpuFrequencyMhz()); Serial.println("MHz");
  Serial.print("ESP32 APB FREQ: "); Serial.print(getApbFrequency() / 1000000.0, 1); Serial.println("MHz");
  Serial.print("ESP32 FLASH SIZE: "); Serial.print(ESP.getFlashChipSize() / (1024.0 * 1024), 2); Serial.println("MB");
  Serial.print("ESP32 PSRAM SIZE: "); Serial.print(ESP.getPsramSize() / 1024.0, 2); Serial.println("KB");
  Serial.print("ESP32 RAM SIZE: "); Serial.print(ESP.getHeapSize() / 1024.0, 2); Serial.println("KB");
  Serial.print("ESP32 FREE RAM: "); Serial.print(ESP.getFreeHeap() / 1024.0, 2); Serial.println("KB");
  Serial.print("ESP32 MAX RAM ALLOC: "); Serial.print(ESP.getMaxAllocHeap() / 1024.0, 2); Serial.println("KB");
  Serial.print("ESP32 FREE PSRAM: "); Serial.print(ESP.getFreePsram() / 1024.0, 2); Serial.println("KB");
}

void loop() {
}

🧠 코드 설명

이 코드는 ESP32 SDK에서 제공하는 기본 API를 이용해
보드의 주요 하드웨어 정보를 시리얼 모니터(115200bps) 로 출력하는 예제입니다.

출력 항목은 다음과 같습니다.

항목설명
ESP32 SDK 현재 사용 중인 SDK 버전
CPU FREQ CPU 클럭 속도 (MHz)
APB FREQ APB 버스 클럭 주파수
FLASH SIZE 내장 플래시 메모리 용량
PSRAM SIZE 외부 PSRAM 용량
RAM SIZE / FREE RAM 사용 가능한 내부 메모리 크기
MAX RAM ALLOC 한 번에 할당 가능한 최대 메모리 크기
FREE PSRAM 사용 가능한 PSRAM 공간

🔍 실행 결과 예시

시리얼 모니터에서 다음과 유사한 정보가 출력됩니다.

ESP32 SDK: v4.4.6
ESP32 CPU FREQ: 240 MHz
ESP32 APB FREQ: 80.0 MHz
ESP32 FLASH SIZE: 4.00 MB
ESP32 PSRAM SIZE: 8.00 MB
ESP32 RAM SIZE: 390.50 KB
ESP32 FREE RAM: 320.10 KB
ESP32 MAX RAM ALLOC: 162.24 KB
ESP32 FREE PSRAM: 7168.00 KB

✅ 참고

  • 위 코드는 ESP32뿐 아니라 ESP32-S2, ESP32-S3 시리즈에서도 동일하게 동작합니다.
  • 단, 일부 저가형 모듈은 PSRAM이 포함되어 있지 않을 수 있으니, ESP.getPsramSize()가 0으로 출력되더라도 정상입니다.
  • PSRAM을 활용한 이미지 처리, 버퍼 저장, 오디오 스트리밍 등 고용량 작업을 할 때 유용한 기준 데이터로 사용할 수 있습니다.

참고 링크

https://github.com/espressif/arduino-esp32/issues/6453

반응형