개발/ESP32, ESP8266

[EPS32/memory] 플래시 메모리가 부족할 때 해결법

어중E 2022. 8. 28. 17:21

[EPS32/memory] 플래시 메모리가 부족할 때 해결법

보통 많이 사용하는 모델로는 ESP32-WROOM-32로 개발 키트에 많이 적용된 모델입니다. 이 모델에는 4BM 플래시 메모리가 있습니다. 하지만 코드를 짜서 업로드할때, 용량이 그렇게 크지도 않는데 용량 부족이라고 뜰 때가 있습니다. 이는 기본적으로 메모리 파티션이 1.4MB로 나누어져 있기 때문입니다. 아래는 기본 파티션에 대한 표입니다.

 

#Name Type SubType Offset Size Flags
nvs data nvs 0x9000 0x5000  
otadata data ota 0xe000 0x2000  
app0 app ota_0 0x10000 0x140000  
app1 app ota_1 0x150000 0x140000  
spiffs data spiffs 0x290000 0x170000  

 

파티션에 보면 app0, app1로 각각 1.4MB를 차지하고 있는 것을 볼 수 있습니다. 따라서 1.4MB 되는 코드를 업로드하려고 보면 플래시 메모리가 초과한다고 에러가 뜹니다. 이런 경우에는 파티션을 조절해 줄 필요가 있습니다.

 

 

PlatformIO 

PlatformIO에서 파티션을 변경하려면 아래의 링크에서 적절한 파일을 다운로드해 줍니다. 여기에서는 huge_app.csv가 적당해 보입니다 app에 할당되는 사이즈가 3MB임으로 어지간한 소스는 가능할 것 같습니다.

https://github.com/espressif/arduino-esp32/tree/master/tools/partitions

 

다운로드하여 platformio.ini 가 있는 폴더에 복사해 주시고, platformIO.ini에서 board_build.partitions를 설정해줍니다.

[env:esp32dev]
platform:espressif32
...
board_build.partitions = huge_app.csv

또한 커스텀으로 사이즈를 변경해 줄 수도 있습니다. 변경한 파일 이름을 board_build.partitions로 설정해 주면 됩니다.

 

 

아두이노IDE

아두이노 IDE를 사용한다면 훨씬 더 편하게 파티션을 변경할 수 있습니다.

위의 사진처럼 툴-Partiion Scheme-Huge APP을 선택해 주시면 됩니다.(원하는 것을 선택) 그렇게 되면 자동으로 파티션이 설정되어 업로드하면 플래시 메모리가 부족하다는 에러는 나타나지 않습니다.