반응형

DefensiveProgramming 2

[임베디드 C] 49.7일의 저주, 시스템 틱 카운터 오버플로우(Rollover) 버그 방지 코드

내용 요약현상: 시스템 구동 약 49.7일 후, 틱 카운터 초기화로 인해 주기적 태스크가 무한 대기 상태(Lockup)에 빠짐.원인: 32비트 무부호 정수(uint32_t)의 오버플로우(0으로 리셋) 발생 시, 잘못된 대소 비교 조건문으로 인해 시간 계산 오류가 발생함.해결: 미래의 절대 시간 대신 현재 시간 - 이전 시간 $\ge$ 지연 시간 형태의 무부호 정수 차이 연산으로 조건문을 변경함.시스템 틱 카운터 오버플로우(System Tick Timer Rollover) 발생 증상임베디드 시스템 설계 시 장기 신뢰성 테스트(Long-term Reliability Test) 단계나 실제 양산 필드(Field)에서 약 49.7일이 경과하는 시점에 하드웨어가 비정상적으로 락업(Lockup)되거나 통신이 두절되..

카테고리 없음 2026.06.27

[C언어 임베디드] 버퍼 오버플로우(Buffer Overflow) 에러 예방과 안전한 메모리 복사

[Quick Summary - For Global Developers]Symptom: Unexpected modification of adjacent variables, sudden system resets, or immediate jumps to HardFault_Handler during data parsing.Cause: Writing data beyond the allocated array boundary, which overwrites the Stack Frame (return address) or adjacent global variables in RAM.Solution: Implement strict input validation (Bounds Checking) before any memor..

반응형