노트 / 펌웨어 설계와 품질
로그와 디버그 출력
printf 디버깅부터 링 버퍼 로그, SWO/RTT 실시간 트레이스까지. 실시간 동작을 망치지 않고 내부를 보는 방법.
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에 몇 개씩 남겨 두면 재현이 안 되는 고장도 추적할 수 있습니다.
영상으로 이어 보기RC카 만들기 시리즈 6편대기업 임베디드 개발자 Lego RC카 메이킹 시작합니다. 【RC카 개발1】PROJECT COURSE요구사항부터 소프트웨어 구조까지 한 프로젝트로 해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →