2012年6月12日火曜日

組込みで欠かせないICE

風夢です。 ICEという名前は組込み開発をした事のある人なら、ほぼ全員知っているとは思いますが、それ以外の方にはなじみが無いかもしれないです。

簡単に言うと、デバッグを行うためにある高額な開発機材です。

操作するイメージは統合環境のデバッガとほぼ同じような感じです。

InCircitEmulatorの略だったような気がします(スペルに自信なし)


<フルICE>

初期のICEは、ターゲットとほぼ同じCPUが乗っていて、開発用のボードに専用のソケットをつけて、
そこからフレキシブル基盤でICE本体と繋げるようになっていました。ICEの代わりに内蔵ROMにプログラムを書き込んでやると単体で動作するものもありました。

この頃のICEは非常に高額で、1セットの金額で簡単に車が買えるようなものでした

まだまだアセンブラでのデバッグも多かった時代で、サポートソフトも貧弱で、Cの構造体の中身の
数値が見れなかったり、ローカル変数が見れなかったり、動作中にブレークポイントを設定した時に
動作がおかしくなったりして、独特の世界でした

ただし、ハードウェアブレークポイントの設定が出来る(特定アドレスのアクセスでブレーク)とか
実際のCPUが搭載されている(ターゲットとまったく同一ではないけど)メリットはありました

高級だったので、プロジェクトに一台のみというのが当たり前の時代でした


<ROM ICE>

その後出てきた、ROM ICEは、ROMの代わりにRAMにROMの内容を書き込んでやってターゲットボードに接続して、そのほかは何本かの制御線を接続して使うものでした。

価格はかなりやすくなりました。

ただし、デバッグ機能を実現するために、開発用と、リリース用で、一部メモリーマッピングやら
割り込み関係の変更を必要とされる場合もありました。

<JTAG ICE>


さらに時代は進んで、JTAG ICEというものが出てきて一般的になっています。

CPU自体にデバッグサポート用の機能が組み込まれて、接続も2個の小さなコネクタだけで
使えるようになりました

また、開発中のボードにはJTAG用のコネクタを実装して、完成品には付けないという形で
開発専用の基盤を作成する必要もなくなりました

また、CPUのベンダ毎に開発用の統合環境も提供され、デバッグ以外にも、スタートアップルーチンの一部とか、割り込みベクタの設定とかかなりの部分もサポートされて、以前よりも
ソフトウェア開発者の負担が減っているのも大きいです


ざっと、簡単にまとめてこんな感じかな

0 件のコメント:

コメントを投稿