0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

J-Link RTTの使い方

Posted at

とりあえずHello Worldから

Visual Studio Code(以下VSCode)でnRF Connect SDK(以下NCS)の開発を始めるみなさん。やっぱり最初はド定番のHello Worldからですよね(笑)
正直なところNCSの最大のウリであるBLEには1mmも関係ないこのHello Worldですが、初めての開発する環境ではなんだかんだでやっておくに越したことはないでしょう。
image.png
無事、コンパイルも終わってデバッグモードで起動します。おお、ちゃんとシリアルコンソール(Tera Term)にHello World!と表示されていて充足感(笑)が得られます。
image.png
いや、でもさ・・・デバッグメッセージをシリアルターミナルで見るのってめんどくさくないと思わないですか?僕はめんどくさいと思っています。

VSCodeはターミナル機能もある

実はつい最近まで気が付かなかったのですが、VSCodeはこのターミナル機能も持っていたりします。世の中の人が「VSCodeがあれば他に何もいらない」と言う理由がまた一つ分かった気がします(笑)。しかも使い方は簡単でCONNECTED DEVICEにあるVCOM2(printkの出力先)のコンセントのようなマークを押すだけです。
image.png
続いて上に表示される115200 8n1を選びます。念のため解説すると、これは115,200bpsで8ビットパリティなし、ストップビットが1ビットという意味です。

現代においてそれ以外の設定で通信することはまずないです。7ビットとかパリティありとか完全に過去のものですね(笑)

VCOMではありますが、Nordicの評価ボードはボーレート設定が有効(ASICとnRF5がUART通信なので)なので気を付けましょう

おお、なんかConnectedって出たぞ!
image.png
ではさっそくデバッガーを走らせてみると・・・。
image.png
おお、Hello WorldがちゃんとVSCodeのターミナルに表示されました。よっしゃ!
・・・あれ、RTTはどこへ?(笑)

J-LinkにはRTTという非常に優秀なデバッグツールがある

nRF5 SDK時代から開発している方はきっとその存在をしっていると思いますが、J-LinkにはRTTという超優秀なデバッグツールがあります。ちなみにRTTはReal Time Transferの略らしいです。知りませんでした(笑)
image.png

Debug Terminalというところに表示されているメッセージです

なぜRTTが必要なの?

その質問に答える前に逆に質問があります。前述のprintkってどうやって表示されているか説明できますか?もし説明できないのであれば、これはファームウェアの基本ですのでしっかり覚えましょう。
先ほど接続したVCOM2ってなんでしょう?そうです、Virtual COM Portですね。このVirtual COM Portって誰がどのように生成しているんでしょうか?
答えは評価ボード上にあるASIC(PCA10095など)です。
image.png
NordicのCPU(nRF5340など)はこのASICとUARTで繋がっています。UART経由でデータをASICに送信すると、このASICがUSBの仮想COMポートに対して送信します。受信の流れも同じです。

で、それがなにか?

と思う人はまだまだですね。つまり、今printkを使って文章が表示できるのはこのASICが搭載されている評価ボードだからです。この先、自社で設計する製品にこのASICは搭載されていません。これ以上言うまでもないと思いますが、printkでUARTにデータを流しても何も表示されません(笑)

評価ボードから無理やりひっぺがすとか・・・w
イエローカード、ピピー(笑)

ということで

なぜRTTが必要なの?という質問の回答は「自社製品ではターミナル出力が使えないから」です。

VSCodeでRTTを使う

RTTを使用するための設定はこちらです。

prj.conf
CONFIG_RTT_CONSOLE=y
CONFIG_UART_CONSOLE=n
CONFIG_USE_SEGGER_RTT=y

そうそう、設定を変更したらちゃんとビルド設定を変更するのを忘れないようにしましょう。
image.png
CONFIG_UART_CONSOLE=nにWarningが出ていますが、Kconfigですでにyと設定しているのに上書きでnを指定しているのでWarningが出ています。最終的には問題はないのですが、やっぱり気になるのでそのうち解消することにしましょう(笑)
ビルド設定の変更およびコンパイルが完了したら、左下にあるRTTのコンセントマークをクリックします。なお、nRF5340の場合のみApp CoreとNet Coreの選択が出てきますのでApp Coreを選択してください。
image.png
Automatic searchを選択するとRTT接続完了です。
image.png
image.png
ここまで来たらあとはデバッグ実行するだけです。ちゃんとRTT経由で表示されました。表示に若干ディレイがあるのが気になりますがこんなもののような気がします(笑)
これで自社製品でもデバッグメッセージがちゃんと見られるようになりました!
image.png

SES時代はそんなことはなかった・・・はず・・・。原則CPU IDLEでの表示でしたが。

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?