티스토리 뷰

ARM 기반 MCU 개발시 디버그 메시지 출력용으로 사용할 여분의 Serial 입/출력 포트가 없는 경우  Semihosting 을 이용하면 printf/scanf 등의 표준 입출력함수를 이용하여 디버거 에이전트를 통해서 디버그 메시지 출력이 가능하다. 


SWD (Serial Wire Debugger) 를 사용한다면  SWDIO, SWCLK 기본 2핀에 추가로  SWO 핀을 사용하여 디버그 메시지를 출력하는 방법도 있다. 하지만  SWD 2핀만 연결된 보드를 사용하여 개발하는 경우나 Jtag 를 사용하는 경우에는  semihosting 을 이용하는 방법을 정리해두록 한다.  개발 환경은  SW4STM  + ST-Link V2 이다.  


우선 semihosting 의 정의는 아래와 같다. 

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0203ik/Bgbjjgij.html



1)  Project -> Properties -> C/C++ Build -> Settings 의 MCU GCC Linker 에서 아래와 같이 Linker flag 를 추가한다.




2. main()  위에 아래와 같은 extern 함수를 선언한다. 



3. main() 함수에서 앞서 선언한 initialise_monitor_handles() 를 호출한다.

 


4. Debug 설정의 Startup 설정에서 semihosting 을 enable  시켜준다. 아래와 같이 initialize 명령에 "monitor arm semihosting enable"  명령을 추가해준다. 



5. 이제 printf , putc, puts 와 같은 표준 출력함수들을 이용한 디버그 메시지 출력이 가능하다. 





참조자료

http://www.openstm32.org/forumthread2949

https://www.mikrocontroller.net/topic/390808

http://ccwo.hatenablog.jp/entry/2017/08/21/145457

'etc' 카테고리의 다른 글

__init , __initdata, __exit, __exitdata  (0) 2013.07.26
__read_mostly 매크로의 의미  (0) 2013.07.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함