임베디드 용어 사전
관측·테스트SWO

ITM

Cortex-M이 제공하는 트레이스 유닛. 프로그램이 남긴 로그와 이벤트를 SWO 핀으로 흘려보낸다.

Instrumentation Trace Macrocell. 거의 멈추지 않는 로그 경로다.

ITM_SendChar('A');       /* 몇 사이클이면 끝난다 */

UART printf 와 비교하면 차이가 분명하다.

UART printf   포맷팅 + 전송. 수백 µs ~ 수 ms. 타이밍을 망가뜨린다
ITM           레지스터에 쓰기만. 하드웨어가 밖으로 내보낸다

채널이 32개다

용도별로 나눠 쓰면 수신 측에서 분리해 볼 수 있다.

채널 0   일반 로그
채널 1   상태 전이 이벤트
채널 2   주기 마커

제약

  • SWO 핀이 배선돼 있어야 한다. 양산 기판에서 빠져 있는 경우가 많다
  • 디버거가 SWO 를 지원해야 하고, 속도(트레이스 클럭)를 맞춰야 한다
  • 데이터가 몰리면 버퍼가 넘쳐 유실된다 — 유실 사실 자체를 알려 주는 플래그가 있다
  • Cortex-M0/M0+ 에는 ITM 이 없다. 이 경우 RTT 를 쓴다

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 트레이스와 프로파일링 — 멈추지 않고 관찰하기