STM32 팁

디버깅 메시지를 출력하는 몇 가지 방법 - 2. SWO

plainy 1 8,434 2017.04.06 00:22

SWD를 사용하여 STM32를 디버깅 할 경우 SWO를 사용하여 디버깅 메시지를 출력할 수 있습니다.

SWD는 2개의 디버깅 핀(SWCLK, SWDIO)외에 SWO(Serial Wire Output)핀을 사용하여 printf와 같은 디버깅 메시지를 출력할 수 있습니다.

 

SWO사용 설정

SWO를 사용하기 위해 STM32CubeMX에서 아래와 같이 Peripheral에서 SYS -> Debug를 SWD and Asynchronous Trace로 선택합니다.

(SWO핀은 Reset후 기본 상태가 SWO이기 때문에 별도로 설정하지 않아도 되지만 정확한 설정을 위해 아래와 같이 설정하는 것을 추천합니다.)

 

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405702_7944.png

 

 

아래와 같이 SWO, SWCLK, SWDIO가 설정된 것을 확인합니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405708_4964.png

 

 

 

IAR EWARM에서 SWO사용하기

IAR EWARM은 SWO 출력을 확인할 수 있습니다.

 

Project Option에서 SWO를 통해 출력이 이루어지도록 설정합니다. 

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405715_4013.png
 


 

 

 

Debugging 장비 (ST-Link 또는 J-Link등)에서 CPU의 Clock을 설정합니다.

SWO는 1wire 비동기 출력이기 때문에 System Clock을 정확히 설정해 주어야 합니다.

STM32CubeMX에서 코드를 생성할 경우 CPU Clock은 System Clock이 자동으로 입력됩니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405721_8227.png

 

 

디버깅 화면에서 녹색 SWO버튼을 클릭하면 SWO설정화면이 나타납니다.

SWO는 ITM의 0번 Bit를 사용하여 Data를 출력하므로 아래와 같이 Terminal I/O의 0번을 Check합니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405728_3798.png


 

 

 

printf문을 사용하여 문자열을 출력합니다.

디버깅 화면에서 View->Terminal I/O를 사용하여 출력을 확인합니다. 

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405734_9957.png



 

 

 

STM32ST-Link Utility에서 SWO확인

STM32 ST-Link Utility에서도 SWO를 확인할 수 있습니다.

STM32 ST-Link Utility에서는 IAR EWARM과 달리 디버깅 모드로 진입하지 않고 SWO를 확인할 수 있습니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405741_9934.png
 

 

 

 

 

아래와 같은 창이 나타나면 System clock을 정확히 설정한 후 Start버튼을 누릅니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405747_6104.png


 

 

 

J-Link에서 SWO출력 확인

J-Link SWO Viewer에서 SWO출력을 확인합니다.

J-Link Software 설치 시 함께 설치되는 J-Link SWO Viewer를 사용하면 J-Link에서도 SWO를 확인할 수 있습니다.

J-Link SWO Viewer를 실행하면 아래와 같은 화면이 나타납니다.

Target Device를 선택합니다. 

TRACECLK는 Target Device의 SWO Clock을 측정하여 화면에 표시합니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405753_8812.png
 

 

 

 

아래와 같이 J-Link에서도 SWO출력을 확인할 수 있습니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405759_5895.png
 


Comments

ysk 2017.06.09 10:52
구형 STlink는 펌웨어 업데이트를 해야 동작하네요.
감사합니다.
Category
글이 없습니다.
글이 없습니다.
Facebook Twitter GooglePlus KakaoStory NaverBand