펌웨어 설계와 품질 노트
현업 펌웨어는 몇 년씩 여러 사람이 고칩니다. 동작하는 코드와 유지되는 코드는 다릅니다.
펌웨어 설계와 품질
계층 구조: 위는 아래만 부른다
HAL, 드라이버, 서비스, 애플리케이션으로 나누고 의존 방향을 한쪽으로 정합니다. 칩이 바뀌어도 위쪽 코드가 살아남는 구조.
펌웨어 설계와 품질모듈화와 인터페이스: 헤더로 경계 긋기
.h는 바깥에 보여 줄 것만, .c는 내부를 숨깁니다. static, 불투명 타입, 초기화 함수로 모듈을 설계하는 방법.
펌웨어 설계와 품질코딩 규칙: MISRA C가 막는 것들
자동차와 산업 펌웨어에서 쓰는 MISRA C가 무엇을 금지하는지, 그리고 그 이유를 정리했습니다.
펌웨어 설계와 품질단위 테스트: 하드웨어 없이 펌웨어 검증하기
PID, 파서, 상태 머신처럼 하드웨어와 무관한 로직은 PC에서 테스트합니다. Unity, 목(mock), 테스트 가능한 구조.
펌웨어 설계와 품질정적 분석: 실행 전에 버그 찾기
컴파일러 경고를 최대로 켜고, cppcheck와 clang-tidy로 코드를 실행하지 않고 결함을 찾습니다.
펌웨어 설계와 품질버전 관리: Git으로 펌웨어 이력 남기기
브랜치, 커밋 단위, 릴리스 태그, 그리고 펌웨어 바이너리에 버전을 새기는 방법.
펌웨어 설계와 품질로그와 디버그 출력
printf 디버깅부터 링 버퍼 로그, SWO/RTT 실시간 트레이스까지. 실시간 동작을 망치지 않고 내부를 보는 방법.
펌웨어 설계와 품질펌웨어 업데이트: 현장 기기를 안전하게 바꾸기
출시 후에도 버그를 고치려면 업데이트 경로가 필요합니다. A/B 슬롯, 서명 검증, 롤백으로 벽돌을 피하는 구조.