그라운드 임베디드 EN 유튜브 구독

노트 / 펌웨어 설계와 품질

코딩 규칙: MISRA C가 막는 것들

자동차와 산업 펌웨어에서 쓰는 MISRA C가 무엇을 금지하는지, 그리고 그 이유를 정리했습니다.

GROUND EMBEDDED · 정리 노트설계·품질 03코딩 규칙규칙 (요지)이유동적 메모리 할당 금지단편화, 실패, 시간 예측 불가재귀 금지스택 사용량 예측 불가

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 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →