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를 참고하면 된다.