그라운드 임베디드 EN 유튜브 구독

노트 / MCU 펌웨어

Flash와 EEPROM에 설정값 저장하기

전원이 꺼져도 남아야 하는 값은 Flash나 EEPROM에 씁니다. 섹터 지우기, 쓰기 횟수, 전원 차단에 안전한 저장 방법.

GROUND EMBEDDED · 정리 노트펌웨어 11Flash와 EEPROM 쓰기01Flash의 특성02안전한 저장패턴03외부 EEPROM/ FRAM

Flash의 특성

  • 쓰기 전에 지워야 하고, 지우는 단위는 섹터(수 KB~128KB)
  • 지우면 모든 비트가 1, 쓰기는 1을 0으로만 바꿈
  • 쓰기/지우기 수명 약 1만 회
  • 지우는 동안(수십 ms~1초) 같은 뱅크에서 코드 실행이 멈출 수 있음

안전한 저장 패턴

섹터 A기록 1, 2, 3 …가득 참섹터 B로 옮김최신 기록만섹터 A 지움
새 값은 항상 빈 자리에 씁니다. 쓰는 도중 전원이 꺼져도 이전 기록이 남습니다.
버전 번호설정 데이터CRC깨졌는지 확인
기록 하나의 모양. 읽을 때는 CRC가 맞는 기록 가운데 버전이 가장 큰 것을 고릅니다.
  1. 전용 섹터 두 개를 링커 스크립트에서 코드 영역 밖으로 뺌
  2. 데이터에 버전 번호와 CRC를 붙여 저장
  3. 새 값은 다른 섹터(또는 같은 섹터의 빈 칸)에 쓰고, CRC가 맞는 가장 최신 기록을 읽음
  4. 섹터가 가득 차면 반대 섹터로 옮기고 이전 섹터를 지움

이렇게 하면 쓰는 도중에 전원이 꺼져도 이전 값이 남고, 마모도 분산됩니다. ST의 EEPROM 에뮬레이션 앱노트가 이 방식입니다.

외부 EEPROM / FRAM

I2C EEPROM은 바이트 단위로 쓰고 수명이 100만 회 수준입니다. FRAM은 수명이 사실상 무제한이고 쓰기가 즉시 끝나서 자주 바뀌는 값(주행 거리, 사용 시간)에 좋습니다.

영상으로 이어 보기회로와 하드웨어 시리즈 8편전자제품 속 회로 소자는 어떻게 동작할까? · 저항 · 커패시터 · 인덕터 완벽 정리PROJECT COURSE레지스터 설정을 실제 보드에서 해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →