Build Note

ESP32, ESP32 S3 코드 영역 늘리기 (platformio, arduino)

김모작자 2024. 9. 4. 17:25

arduino-esp32 에서 제공하는 ble, wifi, httpclient, ota 등에다가 이미지 좀 추가하다보면 기본 코드 공간이 너무 부족하게 된다. 
The program size (00000 bytes) is greater than maximum allowed (1310720 bytes)
위와 같은 메세지를 만났을 때 아래 조치가 필요하다.

- 구입할 때 표기된 ESP32 메모리가 최소 4MB 였던거 같은데.. 더 큰 용량 제품을 사도 동일하게 나온다
- 아래 링크를 보면 코드용 공간 기본값이 128KB 인거 같다.. 
  arduino-esp32/tools/partitions/default.csv at master · espressif/arduino-esp32 (github.com) 

 

arduino-esp32/tools/partitions/default.csv at master · espressif/arduino-esp32

Arduino core for the ESP32. Contribute to espressif/arduino-esp32 development by creating an account on GitHub.

github.com

 

1. 파티션 테이블 직접 정의
아래와 같이 파티션 유형별로 구분하여 저장한다.
코드가 들어가는 파티션은 app0, app1 으로 여기서는 0x1D0000 을 지정 했으니 약 1.9MB 정도가 되겠다.
- app0 은 주로 사용되는 영역이고, app1 은 OTA 시 올라갈 코드를 저장할 영역으로 사용
- size 는 필요에 따라 조정하며 offset + size 가 다음 행의 offset 과 맞아야한다
- spiffs 위치 변경시 나중에 코드를 이용해 spiffs 초기화가 필요하다 (format?)

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x1D0000,
app1,     app,  ota_1,   0x1E0000,0x1D0000,
spiffs,   data, spiffs,  0x3B0000,0x10000,
coredump, data, coredump,0x3C0000,0x10000,

2. 파티션 테이블 반영

아두이노 IDE 사용시  Tools > Partition Scheme 에서 변경 할 수 있다.
PlatformIO 사용시 프로젝트 소스 최상단에 있는 platformio.ini 을 열어,
board_build.partitons 항목에 위 csv 파일을 지정해준다

[env]
board = lolin_d32 
....
....
board_build.partitions=custom_paritions.csv   # csv 파일명 기재

 

ESP32 파티션 설정 관련 참고 :: Partition Table — Arduino-ESP32 2.0.14 documentation (readthedocs-hosted.com)

 

Partition Table — Arduino-ESP32 2.0.14 documentation

The nvs partition subtype is used to define the partition to store general data, like the WiFi data, device PHY calibration data and any other data to be stored on the non-volatile memory. This kind of partition is suitable for small custom configuration d

espressif-docs.readthedocs-hosted.com

 

 

반응형