Flash#

  • 16MiB Flash

    • ESP32-S3-WROOM-1U-N16R2

    • 4KiB 섹터

    • 100,000 회 endurance

    • 20년 retention

    • erase, write 속도는 사양을 못 찾음. 사용한 칩 문의 필요

      • GD25Q32 칩을 사용할 경우

      • 4KiB erase: 100ms typical, 300ms max

      • page write: 0.7ms typical, 2.4ms max

        • 256-바이트 페이지이기 때문에 4KiB 쓰기시 0.7 * 16 = 11.2ms

          • 2.4 * 16 = 38.4ms

  • LFS에 8MiB 할당

    • 앱 데이터는 LFS에 저장

    • 8MiB / 4KiB = 2048 섹터

  • 아래 계산은 모두 4KiB 이하 데이터 저장 기준

  • 1초 주기 데이터 저장

    • 1일 86,400개 데이터

    • 1년 31,536,000개 데이터

    • 100,000 회 endurance 를 가정할 경우, 약 3.2일

  • 60초 주기 데이터 저장

    • 1일 1440개 데이터

    • 1년 525,600개 데이터

    • 100,000 회 endurance 를 가정할 경우, 약 190일

  • 15분 주기 데이터 저장

    • 1일 96개 데이터

    • 1년 35,040개 데이터

    • 100,000 회 endurance 를 가정할 경우, 약 2.9년

  • Wear leveling

    • LFS는 wear leveling을 지원

    • 6MiB / 4KiB = 1536 섹터

    • 100,000 * 1536 = 153,600,000 회 endurance

    • 1초 주기 데이터 저장

      • 153,600,000 / 31,536,000 = 4.9년

    • 60초 주기 데이터 저장

      • 153,600,000 / 525,600 = 292년

    • 15분 주기 데이터 저장

      • 153,600,000 / 35,040 = 4,380년

  • 데이터 저장 주기 최소값은 10초로 하자

    • 마진과 erase, write 연산 속도 고려

Flash Memory Layout#

ESP32-S3-WROOM-1U-N16R2#

  • 사이즈: 16MiB

시작 주소

마지막 주소

영역 크기

용도

0x00000000

0x0000DFFF

56KiB

부트로더

0x0000E000

0x0000EFFF

4KiB

파티션 테이블

0x0000F000

0x0000FFFF

4KiB

Reserved

0x00010000

0x00011FFF

8KiB

OTA meta data

0x00012000

0x00012FFF

4KiB

PHY init data(not used)

0x00013000

0x0007FFFF

436KiB

coredump

0x00080000

0x0017FFFF

1MiB

Factory

0x00180000

0x0047FFFF

3MiB

APP1

0x00480000

0x0077FFFF

3MiB

APP2

0x00780000

0x00FF7FFF

8MiB+480KiB

LFS

0x00FF8000

0x00FFFFFF

32KiB

NVS

MX25U12832F#

  • 사이즈: 16MiB

시작 주소

마지막 주소

영역 크기

용도

0x60000000

0x6001FFFF

128KiB

부트로더

0x60020000

0x6011FFFF

1MiB

Factory

0x60120000

0x6041FFFF

3MiB

APP1

0x60420000

0x6071FFFF

3MiB

APP2

0x60720000

0x6079FFFF

512KiB

coredump

0x607A0000

0x607A7FFF

32KiB

NVS

0x607A8000

0x60FFFFFF

8MiB

LFS