GDB에서 RTT

1914 단어 nRF51BLE
nRF51822에서 UART를 사용할 수 없지만 작동 상황을보고 싶을 때가 있습니다.
브레이크 포인트로 멈출 수는 있지만, 거기에서 재개시킬 수 없기 때문에, 흘리면서 동작을 보고 싶은 분이 많다.
그러한 때에, SEGGER RTT라고 하는 것이 사용할 수 있을 것 같다.

Debugging with Real Time Terminal

위는 Keil에서의 설명이지만, 그 중에서는 GCC+GDB(eclipse)이므로, 그 환경에서 시험한다.

Makefile



쓰는 방법은 각 사람 다르다고 생각하기 때문에, 이런 느낌으로.
이번에는, printf풍의 API를 사용하고 싶기 때문에, 그것도 추가하고 있다.
C_SOURCE_FILES += \
$(SDK_PATH)/components/drivers_ext/segger_rtt/RTT_Syscalls_GCC.c \
$(SDK_PATH)/components/drivers_ext/segger_rtt/SEGGER_RTT.c \
$(SDK_PATH)/components/drivers_ext/segger_rtt/SEGGER_RTT_printf.c

INC_PATHS += -I$(SDK_PATH)/components/drivers_ext/segger_rtt

소스 파일



헤더 파일.
#include "SEGGER_RTT.h"

로그.
첫 번째 "0"은 Channel과 같습니다.
nRF51822에서 시도한 결과 1로 설정하면 HardFault가 발생했습니다.
SEGGER_RTT_printf(0, "START\r\n");

SEGGER_RTT_printf(0, "err_code = %u\r\n", err_code);

실행



우리는 eclipse이므로, 우선은 보통으로 SEGGER에서의 디버그를 개시시킨다.
그렇다면 SEGGER J-Link Control panel이라는 앱이 일어나지 않을까 생각한다.
(Windows에서 하고 있으면, 그랬다.)

RTT 탭을 선택하고 우측의 「Start」를 누르면 로그 취득을 개시한다.
Start하고 나서 디버그를 개시시키면 좋을 것이다.



SEGGER의 앱을 설치했을 때에 「RTT Viewer」라고 하는 것이 있어, 링크처에서는 그것을 사용하고 있는 것 같다.
Control Panel 앱이 이제 1개 올라서 이상하게 될까 생각했지만, 특히 문제라도 되지 않을 것 같다.
브레이크 포인트를 사용하지 않으면 RTT Viewer만 시작하면 된다고 생각된다.

RTT Viewer를 시작하기 전에도 SEGGER가 버퍼링하고있는 것 같고, nRF51822 기동시의 로그를 나중에 표시할 수 있었다.
덧붙여 로그의 클리어는 탭 위에서 오른쪽 클릭해 「Clear Terminal」을 선택하는 것 같다.

좋은 웹페이지 즐겨찾기