基本的には組み込みシステムでは デバッグプリントは使えないことが多いですが、
そのかわりの方法をいかにして実現するかというのも工夫だと思います。
以前に紹介したシリアルポートを利用する方法もありますがそれも出来ないと仮定します。
ICEを繋いだ状態で、動作していると仮定して、ソフトの完成度も上がってきていて、でも時々動作がおかしいような場合は困りますね。
もしも、OSを使っていなくて、メモリー(RAM)に空き容量を確保できるのなら、主要な変数(出来れば構造体にしておいたほうがいい)をリングバッファ的に書き込んでいく方法があります。
リングバッファに 関しては、また別に書く必要がありますが・・・
簡単にこの方法を 説明すると
例)
int dbg_data[1024];
int dbg_idx;
こんな感じで変数を作っておいて、毎ループ、主要なデータを保存してやります
カウンターの更新はバッファサイズに合わせてやってください
動作がおかしくなった時に、きっとブレークポイントを設定していると思うので
その時に変数の動きを確認すれば、内部で何が起きていたのか推測できます
上の例では簡略化しすぎているので何もわかりませんけどね。
0 件のコメント:
コメントを投稿