[테크월드=정환용 기자] SWO(Serial Wire Output) 트레이스(Trace) 기능은 타깃 하드웨어의 디버그 기능을 이용해 다양한 종류의 이벤트를 순서대로 기록하는 기능 중 하나다. 타깃의 동작 중 다양한 이벤트가 발생하고, 이를 SWO 채널을 이용해 실시간으로 전송한다. 타깃으로부터 전송된 이벤트 데이터는 C-SPY의 창을 통해 지속적으로 기록되며, 기록된 정보를 디버깅 용도로 활용할 수 있다.

SWO 트레이스를 이용해 기록되는 이벤트는 다음과 같다.

▲PC 샘플링(Sampling)
타깃의 동작 중 프로그램 카운터를 규칙적으로 샘플링해 전송한다. SWO 트레이스는 ETM 트레이스와 같이 실행되는 모든 명령어 실행에 대한 프로그램 카운터 샘플을 가져올 수 없으나 실행 중간중간의 프로그램 카운터 샘플을 가져 올 수 있다. 최근의 ARM의 CPU들은 일반적으로 매 초당 수 만개의 명령어를 실행하고 있으며 초당 수 천개의 프로그램 카운터를 샘플링할 수 있다.

▲인터럽트 로그(Interrupt Logs)
SWO 트레이스 기능으로 인터럽트 관련 이벤트를 확인할 수 있다. 타깃 동작 중 인터럽트가 발생해 인터럽트 핸들러 진입의 경우, 그리고 인터럽트 핸들러 수행을 마친 후 빠져나올 경우에 이벤트를 발생하며 이를 전송한다.

▲데이터 로그(Data Logs)
데이터 로그 중단점을 활용해 특정 메모리 영역이나 특정 변수에 접근하는 경우 이벤트를 생성하고 이를 전송한다.

SWO 채널은 통신 처리량이 제한돼 있어 일반적으로 이 기능을 동시에 모두 사용하는 것은 어렵다. 만일 트레이스 장비의 SWO 통신 채널을 이용한다면, 기록되는 이벤트 데이터들을 트레이스 버퍼에 저장할 수 있어 이같은 기능들을 모두 사용할 수 있다, 이 때 수집되는 이벤트는 타깃의 실행이 멈춘 후 업데이트되며, SWO 트레이스 창으로 출력된다.

 

SWO 트레이스 사용 요구사항
SWD(Serial Wire Debug) 인터페이스를 지원하는 디바이스에서 사용할 수 있는 SWO 통신 채널은 디버깅 프로브와 연결돼야 한다. SWO 트레이스 기능을 사용하기 위해 연결되는 디버깅 프로브는 I-jet, I-jet Trace, J-Link, J-Trace 또는 ST-LINK와 같이 SWO 통신을 지원하는 장비를 사용해야 한다.

 

SWO 트레이스 사용방법
C-SPY를 실행하기 전 사용하는 디버거 장비의 드라이버를 설정한다. 설정되는 장비는 SWD 연결과 SWO 통신을 지원하는 장비여야 한다. 설정한 디버거 장비의 설정 항목에서 디버깅 인터페이스를 SWD로 설정한다. 디버거 인터페이스 연결에서는 반드시 SWO 핀도 연결돼야 한다. [그림 1]은 I-jet 장비의 경우로, 사용하고 있는 디버거 장비의 드라이버를
선택하면 된다.

[그림 1]

디버거 장비의 설정 완료 후 ‘Download and Debug’ 버튼을 눌러 C-SPY로 진입한다. SWO Trace Windows 설정을 위해 디버거 장비 메뉴의 ‘SWO Trace Windows Settings’을 선택하고, 나타나는 설정 창에서 SWO Trace Window에 표시될 내용을 설정한다.

[그림 2]

▲Generate:
CPI - 명령어 별 사이클 수 출력
EXC - 오버헤드 실행 수 출력
SLEEP - Sleep 사이클 수 출력
LSU – 읽기, 쓰기의 명령어 사이클 수 출력
FOLD - Folded 명령어 수 출력

▲Force:
Interrupt Logs - SWO 트레이스 기능이 동작하는 동안 발생한 인터럽트 이벤트의 기록을 수집한다.
PC samples - SWO 트레이스 기능이 동작하는 동안 일정한 간격으로 프로그램 카운터(PC)를 샘플링하며 이를 수집한다.
ITM Log - SWO 트레이스 기능이 동작하는 동안 ITM 사용 기록을 수집한다. I-jet 장비가 연결됐을 경우만 활성화할 수 있다.

‘SWO Trace Window’의 표시항목을 설정한 뒤, SWO의 하드웨어 관련 설정을 위해 디버거 장비 메뉴의 ‘SWO Configuration…’을 실행한다.

[그림 3]


나타나는 SWO Configuration 창에서 ‘Clock setup’ 항목을 현재 CPU 동작 상황에 맞게 설정한다.

[그림 4]


디버거 장비 메뉴에서 ‘SWO Trace’ 창을 선택, 활성화한다.

[그림 5]


‘SWO Trace’ 창이 나타난 후 ‘Enable’ 버튼을 눌러 SWO 트레이스 기능을 활성화한다.

[그림 6]

Enable/Disable: SWO 트레이스 기능을 활성화·비활성화 시킬 수 있는 버튼이다.
Clear trace data: SWO 트레이스 창에 기록된 데이터를 모두 삭제한다.
Toggle source: 수집된 트레이스 데이터와 함께 수집된 데이터에 해당하는 소스코드의 표시를 활성화·비활성화 할 수 있는 버튼이다.
Browse: 수집된 트레이스 데이터의 해당 소스 코드 위치를 에디터 화면에 표시할 수 있는 Browse 기능의 활성화·비활성화 버튼이다.
Find: 수집된 트레이스 데이터 중 원하는 데이터 검색을 실행할 수 있는 버튼이다. 검색을 실행하면 ‘Find In SWO Trace’ 창에 검색된 데이터를 출력한다.
Save: 수집된 트레이스 데이터들을 텍스트 파일 형식으로 저장하는 버튼이다. 버튼을 누르면 데이터 저장위치를 지정할 수 있다. 트레이스 데이터는 각 항목별 Tab 공백으로 구분, 저장된다.
Edit Settings: ‘SWO Trace Window’ 설정을 위한 버튼이다. 버튼을 누르면 ‘SWO Trace Window Settings’ 창이 나타난다.

[그림 7]
[그림 8]

 

SWO 트레이스 기능이 활성화 된 후 해당 프로젝트를 실행하면 SWO 통신 포트를 이용해 트레이스 정보를 수집한다. 프로젝트의 실행을 멈추게 되면 ‘SWO Trace’ 창에 수집된 데이터를 출력한다.

[그림 9]

참고로 SWO 트레이스 창에 기록되는 정보는 동작 중 모든 수행 정보가 기록된 것이 아닌 샘플링된 정보라서 내용 참조에 주의가 필요하다. 모든 실행 정보를 기록하려면 I-jet Trace와 같은 트레이스 기능이 포함된 장비를 이용해 ETM·PTM 기반의 정보 수집이 필요하다.

 

맺음말
SWO 트레이스 기능으로 응용프로그램이 동작하는 동안의 수행된 명령어를 순차적으로 확인할 수 있으며, 다양한 이벤트의 발생 기록을 확인할 수 있다. 기록된 다양한 트레이스 정보를 활용해 좀 더 쉽게 응용프로그램의 동작을 파악할 수 있다. ETM·PTM 기반의 트레이스 장비가 없는 경우, SWO 트레이스를 이용하면 디버깅에 많은 도움을 줄 수 있다.

 

작성: IAR Systems 이현도 과장

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지