Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in i18n_book_navigation_set_breadcrumb() (line 212 of /home/sasaoj5/public_html/ms-cheminfo.com/sites/all/modules/i18n_book_navigation/i18n_book_navigation.module).

ファームウエアデバッグ機能

ファームウエアはもちろん E8a と HEW を用いてブレークポイントの設定や内部データの読み出し、設定、プログラム実行のトレースなどのいわゆる「デバッグ」が可能である。しかしながら、デバッガ/エミュレータを用いたデバッガには次の様な限界が存在している。

  1. デバッガが内部データを読み出せるのは、デバッガに制御がある状態(ブレークがかかた状態)でなければならない。
  2. そのため、周期的に、あるいは割り込みによって時々刻々変化する状態をモニタすることはできない。
  3. 同様に、Etherenet でのラウンドトリップ時刻の平均値などの統計情報を収集できない
  4. デバッガ/エミュレータのハードをあらかじめ接続していなければ利用できないため、現場でのみ発生する現象や稀に発生する現象の追跡には不向きである。

仮想コンソールの機能 

通常、上記のような問題を解決するためもっともプリミティブなプロセッサモニターとしてシリアルインタフェースを用いてターミナルへ情報を出力したり、キーボード入力を通じて内部動作へ関与できるようアプリケーションを設計する。今回の試作プロセッサボードにはそのためのシリアルインタフェースが存在しないため、UDP ブロードキャストによってデバッグ情報をファームウエアから自発的に出力できるようにする。

UDP は TCP と異なり通信する相手が定まっていなくてもデータを送受信可能である。今回は、UDP/IP ポート 20000 に対してブロードキャストを送ることによりファームウエアのトレース情報を出力するようにした。また、ホストシステム(Windows/Mac/Linux)で作動する UDP/IP ポート20000 へのデータを表示するソフトウエアを作成し、これを仮想コンソールとして用いる。

ファームウエア内部では、

extern struct udp_pcb * pcb;
debug_print( pcb, "format-string", arg1, arg2, ... )

の書式で、任意のタイミングで UDP 上にメッセージを出力できる。

ファームウエアは、いち早く Ethernet ハードウエアを初期化し lwIP プロトコルを通じて UDP/IP が利用できる環境となるよう作られている。しかしながら、lwIP 自身の内部トレースなど lwIP に依存しないデバッグトレースも可能とするため、pcb に 0 を指定することができるよう設計する。

Japanese

User login