WeMoS Lolin D32 (ESP32) FLASH EEPROM 크기 조정

D32에 내장된 Flash는 4MB인데 실제로는 프로그램 영역이 1.3MB밖에 안된다.
뭔가 했더니 Partition Scheme Default가 처음부터 그렇게 잡힌 모양.
검색해봤더니 Partition Scheme을 바꾸면 EEPROM 크기를 조정할 수 있다고 한다. [Github]

default

Default Partition Scheme 사용 시 프로그램 영역 크기는 0x140000로 각 ota 슬릇에서 1.25MB씩 사용할 수 있다. [Github]
이 때 데이터 영역 크기는 0x170000B로 약 1.4MB 사용할 수 있다.

no_ota

No OTA Partition Scheme 사용 시 ota 슬릇은 하나만 존재하며 프로그램 영역의 크기는 2MB이다. [Github]
이 때 데이터 영역의 크기는 0x1F0000B로 약 1.9MB까지 사용할 수 있다.

noota_3g

No ota 3g Partition Scheme은 no_ota의 프로그램 영역 중 1MB를 데이터 영역에 할당한 Scheme이다. [Github]
프로그램 영역의 크기는 1MB이며 데이터 영역의 크기는 2.9MB이다.

Huge app

Huge App Partition Scheme 사용 시 프로그램 영역 크기는 3MB이며 데이터 영역 크기는 0.9MB이다. [Github]

Custom

커스텀 파티션 테이블을 등록할 수도 있다.
다만 이 경우 위의 pre-built 포맷과 같이 동일한 nvs와 otadata 크기를 사용해야 하며 테이블 내 빈 공간이 없어야 하며 전체 테이블 크기는 0x400000(4MB)이어야 한다.
프로그램과 데이터 영역 크기를 극한으로 튜닝해야하는 경우 이 방법이 도움될 것이다.

; 1) A "partitions_custom.csv" in the root of project directory
[env:custom_table]
board_build.partitions = partitions_custom.csv

VSCode와 PlatformIO를 사용하는 경우 platformio.ini 파일을 통해 Partition Scheme을 바꿔줄 수 있다.


더 자세한 설명은 공식 Docs를 참고하면 된다.

댓글 남기기