노트 / 펌웨어 설계와 품질
코딩 규칙: MISRA C가 막는 것들
자동차와 산업 펌웨어에서 쓰는 MISRA C가 무엇을 금지하는지, 그리고 그 이유를 정리했습니다.
MISRA C는 C의 위험한 기능을 제한해 예측 가능하고 검증 가능한 코드를 쓰게 하는 규칙 모음입니다. 자동차 업계에서는 사실상 표준입니다.
대표 규칙과 이유
| 규칙 (요지) | 이유 |
|---|---|
| 동적 메모리 할당 금지 | 단편화, 실패, 시간 예측 불가 |
| 재귀 금지 | 스택 사용량 예측 불가 |
| goto 제한 | 흐름 추적 어려움 |
| 모든 switch에 default | 예상 못 한 값 처리 |
| 암묵적 형변환 제한 | 부호, 크기 변환 버그 |
| 함수 반환값 무시 금지 | 오류를 흘려보내지 않게 |
| 매크로보다 inline 함수 | 부작용, 타입 검사 |
| 부동소수점 == 비교 금지 | 오차 |
실무에서 쓰는 방식
- 정적 분석 도구(PC-lint, Polyspace, Helix QAC, cppcheck의 MISRA 애드온)로 자동 검사합니다.
- 꼭 어겨야 하는 경우 편차(deviation)를 문서로 남기고 승인받습니다.
- 규칙의 목적을 이해하면 MISRA를 쓰지 않는 프로젝트에서도 좋은 습관이 됩니다.
함께 보는 것
CERT C(보안 중심), 회사 자체 코딩 스타일(이름 규칙, 들여쓰기). 형식은 자동 포매터(clang-format)에 맡기고 리뷰에서는 로직에 집중합니다.
영상으로 이어 보기RC카 만들기 시리즈 6편대기업 임베디드 개발자 Lego RC카 메이킹 시작합니다. 【RC카 개발1】PROJECT COURSE요구사항부터 소프트웨어 구조까지 한 프로젝트로 해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →