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

노트 / 펌웨어 설계와 품질

로그와 디버그 출력

printf 디버깅부터 링 버퍼 로그, SWO/RTT 실시간 트레이스까지. 실시간 동작을 망치지 않고 내부를 보는 방법.

GROUND EMBEDDED · 정리 노트설계·품질 07로그와 디버그 출력방법장점단점블로킹 UART prin…가장 쉬움느림, 타이밍 망침링 버퍼 + DMA UA…루프 영향 작음버퍼 넘치면 손실

printf의 비용

115200bps UART로 50글자를 보내면 약 4.3ms가 걸립니다. 블로킹 printf를 1ms 제어 루프 안에 넣으면 루프가 깨집니다.

단계별 방법

방법 장점 단점
블로킹 UART printf 가장 쉬움 느림, 타이밍 망침
링 버퍼 + DMA UART 루프 영향 작음 버퍼 넘치면 손실
SEGGER RTT 매우 빠름, 디버거 경유 J-Link 필요 (ST-LINK 변환 가능)
SWO / ITM 코어 내장, 핀 하나 디버거 지원 필요
GPIO 토글 + 로직 분석기 오버헤드 거의 0 정보량 적음

로그 설계

  • 레벨: ERROR, WARN, INFO, DEBUG. 출시 빌드는 WARN 이상만
  • 모듈 태그와 타임스탬프: [1234ms][MOTOR] overcurrent 25.3A
  • 숫자는 문자열 변환 대신 바이너리로 보내고 PC에서 해석하면 훨씬 빠름

현장 기록

치명적 오류(하드폴트, 워치독 리셋, 과전류 정지)는 원인 코드와 시각을 Flash에 몇 개씩 남겨 두면 재현이 안 되는 고장도 추적할 수 있습니다.