もう、C言語と関係なくなってきたが、気にしないでおくれ。。。
組み込み開発で、新しい開発環境が提供されたとする。
マイコン自体初めてだったり、ARMだけどメーカーが初めてだったり、コンパイル環境が初めてだったりするのは珍しくないだろう。
ドキュメントを読みながら環境を作って、ビルドして、何だかわからないけどサンプルも動いた!
その次にどこからやっていこうか?となる。
マイコンのことを調べたり、OSが載っていたらそれを調べたりするのだけど、私はサンプルの動きを追うことが多い。
せっかく動いたのだから、もう少し見ておこうか、というわけだ。
このとき、ブレークポイントで止めながら調べるのもよいだろうけど、無線を使う場合だと止められなかったり、止めると意味が無くなったりするので、動かしながらトレースしたいと思う。
そうなると、高級なデバッガだとトレース機能がついているものもあるだろうが、手軽なのはデバッグ出力を追加することだと思う。
printfデバッグ、と呼ばれることもある、よくある方法だ。
ソースを変更することになるので、副作用が発生する場合もあるのだが、容易なのでしばしば使う。
printf、といっても、別にprintfじゃなくてもよい。
組み込み環境では標準出力がない場合も多いので、どこかに何かを出力する、くらいのイメージだ。
一番楽なのは、UARTだと思う。
UARTに文字列を取得して、電圧変換してパソコンのシリアルポートとつなげれば、TeraTermなどで出力を目で見ることができる。
sprintfなんかが使えるなら、変数の値を見るのも楽にできて、お手軽だ。
ただ、UARTは他の用途で使われて、空いていないこともある。
そうなったときにどうするか、というのが、あまり私は手段を持っていない。
I2CはSPIが同じシリアル系列でよいのだけど、それをどうやって見える形にするかが悩ましい。
UARTに変換するチップもあるから持っていればよいのだが、今は手持ちがない。
単発でよければロジアナで足をつかむという手もあるが、トレースしてみたいときだとちょっと足りない。
それに、最近は足がつかめないマイコンも多いので、そもそも出力できないということもあろう。
そういう点で、JTAGデバッガから直接出力できる場合はありがたい。
SEGGERのRTTみたいな機能だ。
Semi Hostingは同様の機能かと思っていたけど、今使ってるやつは出力先をUARTにしか割り振れないようなことが書かれていて、意味が無い。。
ともかく、何かしらトレースする手段を持っておくと、デバッグ効率が上がることもあるのでよいのではなかろうか。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。