노트 / 펌웨어 설계와 품질
정적 분석: 실행 전에 버그 찾기
컴파일러 경고를 최대로 켜고, cppcheck와 clang-tidy로 코드를 실행하지 않고 결함을 찾습니다.
1단계: 컴파일러 경고
-Wall -Wextra -Wshadow -Wconversion -Wdouble-promotion -Werror
-Wconversion: 암묵적 축소 변환 (int → uint8_t)-Wdouble-promotion: float 계산이 실수로 double로 바뀌는 것 (FPU가 단정밀도만 있는 M4에서 매우 느려짐)-Werror: 경고를 오류로 만들어 쌓이지 않게
경고 0개를 유지하는 것 자체가 가장 싼 품질 관리입니다.
2단계: 정적 분석 도구
| 도구 | 특징 |
|---|---|
| cppcheck | 무료, 널 포인터, 배열 범위, 초기화 안 된 변수 |
| clang-tidy | 무료, 규칙이 많고 자동 수정 |
| PC-lint / Polyspace / QAC | 상용, MISRA, 자동차 인증 프로젝트 |
잡아 주는 것
- 초기화하지 않은 변수 사용
- 배열 범위를 넘는 인덱스
- 널 포인터 역참조 가능 경로
- 해제 후 사용, 메모리 누수
- 도달할 수 없는 코드, 항상 참인 조건
운영
모든 경고를 한 번에 고치려 하지 말고, 새 코드에서 0을 유지하는 기준선(baseline)을 정한 뒤 CI에서 자동 검사합니다. 오탐은 이유를 주석으로 남기고 억제합니다.
영상으로 이어 보기RC카 만들기 시리즈 6편대기업 임베디드 개발자 Lego RC카 메이킹 시작합니다. 【RC카 개발1】PROJECT COURSE요구사항부터 소프트웨어 구조까지 한 프로젝트로 해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →