← 기술 인사이트 전체 보기

컴퓨터공학

전원 차단에 강한 설정 저장: 플래시 메모리와 복구 설계

설정을 저장하는 순간 전원이 꺼지면 무엇을 복구해야 할까요? 저장 완료의 의미, 설정 묶음의 일관성, 이전 정상값 보존과 전원 차단 시험으로 임베디드 제품의 데이터 복구 정책을 설계합니다.

전원 차단에 강한 설정 저장: 플래시 메모리와 복구 설계

현장에서 통신 주소나 센서 보정값을 바꾼 직후 전원이 꺼졌다고 가정해 봅시다. 다시 켜졌을 때 이전 설정으로 돌아오는 것은 정책에 따라 허용할 수 있지만, 주소는 새 값이고 보정 계수는 옛 값인 상태는 문제가 됩니다. 설계의 출발점은 “플래시에 썼다”가 아니라 어떤 설정 묶음을 언제 저장 완료로 인정할 것인가입니다.

1. 먼저 데이터별 허용 손실을 정합니다

제품 요구사항에는 저장 대상과 복구 기준을 함께 적어야 합니다. 사용자가 확정한 통신 설정은 마지막 저장 완료값을 유지하고, 계속 증가하는 운전 시간은 합의된 구간만큼 손실을 허용할 수 있습니다. 공장 보정값은 일반 설정 초기화와 분리하는 편이 관리에 유리합니다. 이 구분은 저장 빈도와 메모리 선택에도 영향을 줍니다.

예를 들어 화면의 “적용”은 RAM의 동작값 변경이고 “저장”은 재부팅 후에도 사용할 값의 확정일 수 있습니다. 두 기능이 다르다면 UI와 통신 응답도 구분합니다. 저장 API 오류를 무시한 채 성공 응답을 보내면 사용자는 실제로 보존되지 않은 설정을 믿게 됩니다.

2. 제조사 저장 계층과 제품의 일관성은 별도로 검토합니다

ST의 AN4894는 지원 STM32에서 내부 플래시를 EEPROM처럼 사용하는 방법을 설명합니다. 최소 두 플래시 페이지를 활용하고, 유효 데이터를 다른 페이지 집합으로 옮긴 뒤 이전 영역을 지우는 방식과 마모 분산을 제공합니다. 적용 대상과 페이지·프로그램 단위는 MCU별로 확인해야 합니다. 모든 STM32에 같은 설정을 복사할 수 있는 것은 아닙니다. ST AN4894 공식 문서

Espressif NVS는 작은 설정값을 키·값 형태로 저장하기 위한 계층입니다. 공식 문서는 전원 차단 시 복구를 고려하지만, 차단 순간 기록 중이던 새 값은 잃을 수 있다고 설명합니다. 따라서 저장 계층의 복구 기능과 별개로 제품이 요구하는 설정 묶음의 유효성을 정의해야 합니다. ESP-IDF NVS 공식 문서

3. 서로 의존하는 값은 하나의 세대로 관리합니다

다음은 특정 라이브러리의 내부 구현이 아닌, 제품 요구사항을 정리하기 위한 설계 예시입니다. 센서 종류·측정 범위·보정 계수를 하나의 설정 레코드로 묶고 형식 버전, 길이, 세대 번호, 무결성 검사값을 함께 둡니다. CRC는 우발적 손상 검출에 도움이 되지만, 값의 의미가 올바르거나 악의적 변조가 없음을 보장하지는 않습니다. 허용 범위와 필드 간 관계도 검사해야 합니다.

  1. 사용자 입력의 범위와 조합을 검증합니다.

  2. 현재 정상 레코드를 보존한 상태에서 새 후보 레코드를 기록합니다.

  3. 저장 계층이 요구하는 commit 절차와 오류 처리를 수행하고, 제품 요구에 맞게 읽기 검증을 합니다.

  4. 새 레코드의 완전성과 유효성을 확인한 뒤 완료 상태로 인정합니다.

  5. 재부팅 시 완료된 유효 레코드 중 최신 세대를 선택합니다. 후보가 불완전하면 이전 정상 세대로 복구합니다.

원시 플래시로 직접 구현한다면 두 복사본이 같은 지우기 단위에 있어 함께 사라지지 않는지, 완료 표시가 쓰기·ECC 단위 규칙을 지키는지 확인해야 합니다. 완료 표시 자체가 중간에 끊기는 경우와 세대 번호 순환도 설계 대상입니다. 두 슬롯이나 CRC만 추가했다고 원자성이 확보되었다고 판단하면 안 됩니다.

4. 저장 빈도와 전원 감시를 함께 설계합니다

변화가 없는 값을 주기적으로 다시 쓰지 않고, 연속 변경을 묶어 저장하면 불필요한 쓰기를 줄일 수 있습니다. 대신 묶어 두는 시간 동안 전원이 꺼질 때 얼마만큼의 변경을 잃어도 되는지 명시합니다. 운전 로그와 사용자 설정은 갱신 특성이 다르므로 같은 저장 정책을 강요하지 않습니다.

전원 저하 감지는 새 쓰기를 막거나 안전한 정지 상태로 전환하는 데 활용할 수 있습니다. 하지만 “전원이 꺼질 때 모두 저장”하려면 감지 지연, 남은 전력, 최악의 지우기·쓰기 시간을 실제 회로에서 확인해야 합니다. 큰 커패시터를 추가하는 것만으로 충분하다고 가정하지 않습니다. 각 MCU와 메모리의 동작 전압 조건을 벗어난 상태에서 저장을 시도하지 않도록 설계합니다.

5. 재부팅 성공이 아니라 복구 결과를 시험합니다

시제품 검증에서는 후보 기록 전·중·후, 완료 처리 중, 페이지 정리 중에 전원을 차단하는 시험을 계획합니다. 실제 공급 전압의 하강·재상승 파형도 확인합니다. 단순 소프트웨어 리셋만으로 전원 불안정 상황을 모두 대신할 수는 없습니다.

시험 기록에는 펌웨어·저장 드라이버 버전, 차단 시점, 재기동 후 선택된 세대, 오류 코드와 출력 상태를 남깁니다. 위 항목은 검증 계획 예시이며 특정 제품의 시험 완료나 성능을 의미하지 않습니다.

설계 의뢰 전에 정리할 네 가지

저장할 데이터 목록, 허용 가능한 손실 범위, 예상 변경 빈도, 데이터가 유효하지 않을 때의 장비 동작을 먼저 정리하면 하드웨어와 펌웨어의 경계가 명확해집니다. 메모리 부품 선정은 이 복구 정책과 수명 조건을 바탕으로 진행하는 것이 좋습니다.

참고 문서


제품과 현장의 조건에 맞는 설계가 필요하다면

나로시스템에 문의하기 ↗