LoginSignup
1
3

More than 5 years have passed since last update.

GDBでRTT

Last updated at Posted at 2015-12-12

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.png

SEGGERのアプリをインストールしたときに「RTT Viewer」というものがあり、リンク先ではそれを使っているようだ。
Control Panelアプリがもう1個立ち上がったので変になるかと思ったが、特に問題でもなさそうだ。
ブレークポイントを使ったりしないなら、RTT Viewerだけ起動させれば済むと思われる。

RTT Viewerを立ち上げる前もSEGGERがバッファリングしているようで、nRF51822起動時のログが後からでも表示できた。
なお、ログのクリアはタブの上で右クリックして「Clear Terminal」を選択するようだ。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3