2017/06/06

[cortex-m]SWVとRTTは別物だろうか

How to perform runtime error checking on Cortex-M devices


ARM Cortex-MにはSerial Wire Viewerというリアルタイムイベントを拾うことができる機能があるらしい。
最近は組込みから遠のいているものの、手元にあるのはCortex-Mが載ったマイコンかESP8266くらいしかないので、デバッグ手段は知っておきたいものだ。
Hard Faultなんかが拾えるような感じで書かれているので、それができるならありがたい。



CoreSight
Keilでは、Serial Wire Serialの略がSWVになっている。何でだ?
ともかく、SWOピンを使うようだ。
SWOだから、Outputだろう。


ARM Information Center
ARMのサイトも見たが、これといった情報はない。
SWOとなんか命令がセットになって使えるようなもののようだ。


KeilのページではULINKなどしか載っていなかったが、ARMのしくみならJ-Linkでも使えるはずだ。
SEGGER - The Embedded Experts - J-Link Debug Probes - Software - J-Link SWO Viewer
こちらは、SWO Viewerというアプリ。
コードを足してやらんといかんようだが、SWOの出力を拾えるようだ。
Keilとかだったら、printf()で書けるのかもしれん(見てない)。


そうなると、RTTとの違いが気になる。
RTTはSEGGERのJ-Linkでしか使えなかったと思うが、nRFシリーズではソースが入っていたし、手っ取り早く使える。
SEGGER - The Embedded Experts - J-Link Debug Probes - Real Time Transfer
これもSWOを使うようだ。


SWVとRTTの違いはどういうところにあるのか探していると、Atollicさんのブログがあった。
Using the SEGGER Real-time terminal (RTT) interface with Atollic TrueSTUDIO
ぱっと見て気付いたのは、双方向ということと、パフォーマンスが高い、あとはJ-Linkで使える、というところか(RTTのページにも書いてあるが。。。)。
J-Linkのみという制限はあるが、上記の特典が得られる、という見方がよいのかな。

キーボードなどからの入力は試したことがないので、やってみたいところだが、用途が思いつかない。。。
ときどきログを出力させたいとか、全部ログに出すと重たすぎるので、分割させたいとかか?

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。