Error: The program size (1494106 bytes) is greater than maximum allowed (1310720 bytes)
구동환경: Windows10, VS Code with PlatformIO
.
ESP-wroom-32 모듈은 4MB 크기의 Flash가 내장돼있음에도 불구하고 약 1MB를 조금 넘는 프로그램이 빌드되지 않는 문제를 확인할 수 있었습니다. Wi-FI와 BLE를 동시에 사용할 경우 이 문제가 생기는 것으로 확인됩니다.
PlatformIO는 ESP-32 모듈을 구동할 때, Memory address block에 대한 정보를 github에서 가져와서 설정합니다.
https://github.com/espressif/arduino-esp32/tree/master/tools/partitions
PlatformIO는 default.csv
를 읽어와서 메모리를 설정합니다. app0
과 app1
로 나뉜 것으로 보아, 듀얼코어를 가진 ESP-32의 기능을 활용하기 위해 partitioning을 한 것으로 추정됩니다. 이때 SPIFFS(Serial Peripheral Interface Flash File System)는 파일을 읽고, 쓰고, 삭제하는 간단한 기능을 지원하는 파일 시스템을 말합니다.
위 링크에서 default.csv
파일을 다운로드 받고 수정합니다.
저는 app1을 지운만큼 app0의 Size를 2배로 늘려줘서 약 3MB를 사용할 수 있도록 바꾸겠습니다. BLE와 WiFi 그리고 기타 센서 관련 라이브러리 2, 3개 정도 더 사용하시는 정도라면 3MB면 충분합니다.
수정한 csv 파일을 프로젝트 폴더에 platformio.ini
파일이 있는 경로에 업로드합니다.
platformio.ini
파일 안에 board_build.partitions = (본인이 수정한 csv파일 명).csv
를 입력합니다.
마지막으로, 다시 빌드 또는 업로드를 하면 사용할 수 있는 flash의 크기가 늘어난 것을 확인할 수 있습니다.
설명이 간결하고 읽기 편합니다. 감사합니다. 잘 봤습니다.