ncs: LOG
2024/08/25
前回は DevAcademy で NUS(Nordic UART Service) の exercise をしているところだった。 評価ボードnRF5340 MDBT53-1Mモジュールピッチ変換基板で UART を使ったことが無かったので、どこが失敗しているのかよくわからなくなっていた。
NUS を進める前に DevAcademy の Fundamentals で基礎的なところをやっておこう。
Lesson 4 – Printing messages to console and logging
ログ出力である。
nRF53 DK などの DevKit は uart0
をオンボードの Segger J-Link と接続してあり、J-Link の方で USBシリアルに変換しているとのこと。
デフォルトのログ出力も uart0
になっている。
なお nRF53 には app と net の 2コア構成のため、DK はそれぞれ uart0
と uart1
を接続しているそうだ。
オンボードではない J-Link を使っているが、そちらは VCOM0 だけしかない。オンボード版はその辺をカスタマイズできるのか。
Exercise 1
Exercise 1 をやってみたが、やはり前回と同じ設定では main()
までたどり着かなかった。
デバッガが reset.S で止まったのだが、そこで止まっていてもなんだかわからんよという箇所だった。
- ボード定義を少し変更した
- 重複した設定の削除なので、これはおそらく影響ないと思う。
- が、そういうのがよくわからんのよね。。。
- overlay があるためかもしれないが、ボード定義ファイルたちの中に同じ設定が複数箇所あってもエラーにならないようなのだ。
- Exercise 1はこんな感じ
とりあえず、この設定でprintk()
でのログ出力をuart0
に出すことができた。
LED とボタンは dk_buttons_and_leds
ではなく自分で DeviceTree の設定を取得して使うようになっていた。
ncs の使い方をやってるのだからそうじゃないとね。
Exercise 2
Exercise 1 では printk()
で文字列を出力するとそのまま出力されるサンプルだった。
Exercise 2 はそのリッチ版である。
- タイムスタンプ付き
- ログレベルに応じて色付け
- HEXダンプ
私は TeraTerm を使っているが、ちゃんと色つきで出力された。
関係ない話だが、vscode で ncs アプリを開くとソースコード管理がプロジェクトを開いたフォルダではなく ncs の west が管理している方が出てくる。
Source control UIにもそう書いてあるのだが、カレントディレクトリも west manifest に含めないとここに表示されないということなのか?
でも、ncs は ncs だしアプリはアプリだしで、ncs と混ぜ込まなくてよいと思うのだがなあ。
せめて切り替えたりできればよいのに。
Exercise 3
これはやるだけ。
- 色無し
- 付加情報を最小限にする
- タイムスタンプ無し
- ログレベルは1文字(
<inf>
–>I
など)
Quiz
Lesson の最後はクイズでちゃんとやったか確認する。
といっても、別に次に進めないわけでもないので適当にやっている。 そして、あまり問題を読まずにこたえて間違っている。。。
例えばこんなの。
「デフォルトはUARTよね?」で最初間違えたのだが、よく見ると「デフォルトではサポートしていない」のをこたえるのだ。
いやあ、よく読まないとダメだねぇ。
Fundamentals Lesson 4だけやったので、また BLE に戻ろう。