STM32 팁

디버깅 메시지를 출력하는 몇 가지 방법 - 1. Semihosting (세미호스팅)

plainy 0 7,530 2017.04.06 00:19

제품 개발 중 문제점을 찾기 위한 가장 간단한 방법은 printf를 사용하여 디버깅 메시지를 출력하는 방법입니다.

Debugging 장비를 사용할 수 없는 경우 문제점을 확인하기 위해 디버깅 메시지를 출력합니다.

또는 시스템의 Log를 확인하기 위해 메시지를 출력하기도 합니다.

 

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405547_3101.gif
 

가장 유명한 System Log

 

 

 

디버깅 메시지를 출력하는 몇 가지 방법에 관해 설명합니다.

 

1. Semihosting

ARM Core는 ARM타겟보드와 호스트 사이의 입출력을 제공하는​ Semihosting이라는 I/O제어기능을 지원합니다.

Semihosting 기능은 Cortex Core에서 BKPT 0xAB명령어를 실행하여 사용할 수 있습니다. 

(Thumb상태의 Cortex Core인 경우 BKPT, ARM상태 또는 그 외 Core인 경우 SVC명령어가 사용됩니다.)

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405555_9291.png
 

 

 

 

BKPT명령어는 프로세서를 디버그 상태로 만드는 명령어로 BKPT 0xAB명령을 받은 호스트는 Semihosting요청임을 확인하여 Core와 I/O제어를 위한 기능을 실행합니다.

개발환경에서 Semihosting을 사용하도록 설정하고 printf로 문자열을 출력할 경우 library는 Semihosting을 사용하도록 bkpt또는 svc명령어를 호출합니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405561_4253.png 

 

  

 

 

IAR EWARM에서 Semihosting 사용

IAR EWARM은 Semihosting을 사용할 수 있는 기능을 제공하고 있습니다.

Project Option에서 semihosting을 통해 표준 입/출력이 이루어지도록 설정합니다.

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405567_1122.png
 

 

 

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

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

220f5d5b3a25fe3f18fc6ae70530e7a2_1491405573_5642.png



 

 

STM32에서 semihosting은 가장 간단히 문자열을 확인할 수 있는 기능입니다.

다만 디버거의 breakpoint기능을 사용하기 때문에 속도가 굉장히 느리다는 단점이 있습니다.

 

Comments

Category
글이 없습니다.
글이 없습니다.
Facebook Twitter GooglePlus KakaoStory NaverBand