반응형

DataCorruption 2

[MCU Flash] 플래시 메모리 데이터 깨짐 원인: Erase-before-Write 시퀀스 누락

내용 요약현상: 비휘발성 플래시 메모리(Non-volatile Flash Memory)에 데이터 저장 후, 읽을 시 깨진 데이터가 읽히는 현상.원인: 기존 데이터가 남아있는 영역에 지우기 시퀀스 없이 Write(Program) 명령을 직접 실행함.해법: 쓰기 명령을 실행하기 전, 저장될 섹터(Sector) 또는 페이지(Page)에 Flash Erase 시퀀스를 선행 호출내장 플래시 메모리 데이터 오염(Data Corruption) 발생 증상임베디드 시스템 개발 중 설정값, 캘리브레이션 데이터, 혹은 사용자 로그를 MCU 내장 또는 외장 플래시 메모리(Flash Memory)에 저장할 때 발생하는 대표적인 버그입니다. 최초 펌웨어 다운로드 이후 첫 번째 쓰기 동작은 정상적으로 수행되지만, 동일한 주소 영역..

[임베디드 C] 인터럽트(ISR)와 메인 루프 간 전역 변수 오염 해결 (Critical Section 설정)

[Quick Summary - For Global Developers]Symptom: 메인 루프(Main Loop) 내에서 전역 변수를 기반으로 제어되는 조건문이 간헐적으로 오동작하거나, 센서 데이터 혹은 카운터 변수의 값이 예측 불가능하게 깨지는 데이터 오염 현상이 발생함.Cause: 공유 전역 변수(Shared Global Variable)를 수정하는 연산이 원자성(Atomicity)을 보장받지 못해, 비동기적으로 발생한 인터럽트 서비스 루틴(ISR)이 연산 중간에 개입하여 컨텍스트(Context)를 침범함.Solution: 비동기 인터럽트 진입을 일시적으로 차단하는 크리티컬 섹션(Critical Section)을 설정하여 인터럽트 비활성화 레지스터(PRIMASK)를 제어하고 연산의 원자성을 강제 확..

반응형