日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

<< 過去

未来 >>

フルICEとはなんだったのか

最近、1つ前のアーキテクチャの製品のマイコンの置き換えについて調査している。

この調査の中でマイコンの代わりにソケットが取り付けられた基板を使うのだが、

まず調査に取りかかる前に、この基板に現行のマイコンを取り付けてみた。

それで電源を入れると……何にも動かないんだが。


調査の結果、プログラムがフラッシュROMに書き込まれていないことがわかった。

そうそう、このマイコンってプログラムを外付けのROMに書き込むんだよね。

今どきのマイコンは内部にROMを持っているのが普通だが、昔はROMを外で持つことも多かったようだ。

それにしてもプログラムが書かれていない基板って何だろ?

これ、開発時にデバッグに使ってた基板と聞いてたんだけど。


それでこの基板を渡してくれた人に聞いてみた。

すると「フルICEでデバッグしてたから、ROMにプログラムを書き込む必要がなかったのでは?」とのことだった。

というわけで、本来書き込まれるべきROMデータをとある方法で書き込むと正しく動作した。

それにしても、フルICEか……この仕事をするようになってよく聞く言葉だけど、なんなんだろ。


そもそもICEとはIn-Circuit Emulatorのことで、マイコンのデバッグに使われる装置である。

In-Circuit Emulatorという言葉の意味はよくわかっていなかったのだが、

エミュレータとはコンピュータを模擬するもの。ソフトウェアによるものとハードウェアによるものがある。

ICEはハードウェアによるエミュレータの一種で、ハードウェアと密接に関係する組み込みシステムは専らICEでデバッグされる。

ソフトウェアのエミュレータでのデバッグに最近挑戦したことがある。(cf. エミュレータでの単体テストは好調)

確かに実機では確認しにくいプログラムの詳細な動作を確認するにはよかったのだが、

マイコンのペリフェラル、あるいは外部のハードウェアに依存する動作のデバッグはICEが重要である。


さて、フルICEとはなにかという話だが、マイコンの回路を展開して、レジスタやメモリ空間の観測・書換をできるようにしたものだそう。

フルICEを使ったデバッグでは、マイコンが実装される場所にICソケットが取り付けられた基板を使う。

これこそが最初に書いたマイコンの代わりにソケットが取り付けられた基板の正体である。

ICEを使う時は、ソケットにICの代わりにICEにつながるプローブを接続するのだが、

このICEのフタを開けてみると、いろいろな部品が実装されたプリント板が入っている。

これがマイコンの内部回路をデバッグ用に展開したものである。


かつては、このようなフルICEでデバッグを行っていたようだが、今ではほとんど使われない。

現在、ICEといえば JTAG ICE を指す。

JTAGでマイコンと接続し、マイコン内部に組み込まれたデバッグ機能を呼び出しながらデバッグを行うわけである。

マイコンとの接続方式はJTAGが主流だが、他の接続方式もあるが、マイコン内部の機能でデバッグを行うなら同じことである。

このようにマイコン内部でデバッグ機能を持つ方式はOn-chip Emuratorとも呼ばれる。これもICEの一方式。

マイコンそのものをつかっているので、どこが模擬なんだと思うけど、

かつてはエミュレータでやっていたことをチップ内で実現できるようになったということでOn-chip Emuratorと呼んでいるんだろう。


フルICEはICE内に展開された回路から、多くの情報を同時に取り出すことができる。

フラッシュROMにプログラムが書き込まれてなくても動いたというのは、

ICE内部のRAMにプログラムを展開して、外付けROMとすり替えるという機能があったかららしい。

一方で、JTAG ICEはマイコンとPCとの間でシリアル通信を行っているだけなので、

時間あたりに取り出せる情報には限りがあるし、大量のデータをすり替えたりするようなこともできない。

プログラムを停止させながら情報を取り出すか、取り出す情報を減らすか、どちらかの対応が必要だ。


僕はフルICEというものを使ったことがなかったので、それが当たり前だと思っていたのだが、

フルICEを使ったことある人からすると、JTAG ICEはかなりデバッグに制約があるという認識らしい。

一方でJTAG ICEにはメリットもあって、その最たる物が本来使用するマイコンを実装した状態でデバッグできること。

マイコンからJTAGピンを出せるようにプリント板を作っておけば、そこにJTAG ICEをつなぐだけなので安上がりだ。

フルICEはそもそもの値段が高いし、マイコンの品種ごとにICEが必要なはず。

さらに、マイコンの代わりにソケットを実装した特殊な基板を用意する必要がある。

ピン数の多いマイコンだと、大量のピンを慎重にソケットに差し込む必要がある。よくピンが折れるとも言っていた。

高速なマイコンではICEでは動作が変わってしまうこともあるらしい。(うちのは遅いから問題にならない?)


ICEという言葉はよく使うのだが、「ICEってどこがエミュレータなんだろ」とは常々思っていた。

機能的には「JTAG ICE」と呼んでいるものはプローブだよね。

ICEの実態はOn-chip Emulatorということでマイコン内部にあるが、マイコンそのものだからマイコンを模擬しているとは言えないのでは?

ハードウェアでのデバッグ機能を有する装置をICEと呼んでいたということだけだろうと思う。

フルICEこそがICEの原点なのは確かだが、今にしてみればよくこんなの使ってたなぁとなる。

ヒューズが飛びまくって大変だったとかいう話も聞いたしなぁ。それだけ繊細だと。


Author : hidemaro
Date : 2019/02/19(Tue) 23:09
コンピュータ | Comment | trackback (0)
blog comments powered by Disqus

トラックバック

トラックバックURL取得

Tools