ETB

2009年09月08日

ARM のリアルタイムトレースで、ETM と ETB という似たような用語が存在し、それぞれがどのようなものなのかイマイチ理解していなかったのですが、辻先輩に軽くレクチャーしていただいたので忘れないうちにメモしておきます。

(ただし、これはあくまでも私が理解したところなので、間違いが多分にあるかと思いますし、特にレビューを受けてもいない文章です。文責は私にあります。)

リアルタイムトレースとは、プログラムの実行中の PC の動きや、データアクセスの際のアドレスやアクセスタイプ (R/W) などをキャプチャーする機能のことです。基本的には CPU に負荷をかけずに済むので、実際にプログラムを動作させた時の CPU の状態遷移をそのまま見ることができます。(遅くなるものもあるそうです。)

組み込みではリアルタイム性が重要なプログラムが多いので、トレースは非常にデバッグの役に立つ機能です。弊社の PARTNER-Jet は、1 GB の大容量トレースを難なくこなし、QProbe という解析ツールと連携することもできます。(Model 40 の場合。)

ETM (Embedded Trace Macrocell) は、CPU (ARM CORE) のバスを監視し、トレース信号を外部に直接出力するためのユニットです。ETM はたくさん線が必要なのですが、チップの線は高価 (未確認ですが、1本線が増えるたびに、単価が0.5円上がるという話も) ですし、接続するためのプローブも単価が高いものになります。

ETB (Embedded Trace Buffer) は、その名の通り、ARM SoC 内の超高速メモリです。直接信号を出力するのではないため、トレースデータを取りこぼすこと無くためて置くことができます。ただし、SoC 内のシリコンには限りがあるのでそれほど大容量にはできませんし、JTAG 経由でデータを吸いだす必要があります。特別なプローブが必要無く、JTAG のみで済むというのはメリットでもあります。

簡単ですが、以上を図にまとめると、以下のようになるかと思います。

リアルタイムトレース説明図

記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード