FreeScaleのSoCマイコン「iMX25」
i.MX25というCPUがあります。これはFreescale社が製造しているSoC (System On Chipの略)で、ARM9を中心にいろいろなペリフェラルを内蔵した複合的なICです。
バウンダリスキャンできるARMは貴重
ARMデバイスをバウンダリスキャンしようとすると、厄介な問題に当たります。基本的にARMデバイスは、I/O端子のバウンダリスキャン(端子の状態の観察)ができません。それは、ARM社はコアの設計情報を提供しているからであって、バウンダリスキャンをどのように実装するかまではARMのCPUコア仕様には含まれないからです。
実際にどのようにバウンダリスキャンを実装するかというのは、SoCを作り上げるベンダー(つまりコアの外側を作るベンダーに)任されていますが、多くのSoCベンダーはコスト削減などの理由から、バウンダリスキャンをちゃんと実装しません。
しかし、FreeScaleのi.MX25はバウンダリスキャン機能がちゃんと実装されていて、世の中でも稀なバウンダリスキャンができるARM9デバイスです。i.MX25の存在は貴重です。
実際にどのようにつながっているのか?
ARMを中心としたSoCの場合、ARMのコアと、周辺のガワの部分の両方でJTAG信号を用います。ARMのコア自体もJTAGのパスが通っているので、実際にはどのような構成になるかというと、MITOUJTAGで調べたところ次のようになっていることが判明しました。
すなわち、デバッグ関係のモジュールが直列につながっている構成になっていました。
i.MX25くらいの複雑なデバイスになると、中にいろいろなモジュールが入っています。なんと、1つのパッケージ内に4つのJTAGデバイスが直列に入っています。
最初のがバウンダリスキャン用のモジュールで、次のDAPというのはよくわからない。ETMはトレースらしい、そして最後にARM9のコアです。
DAPやETM、ARM9についてはBSDLファイルがないので、推測しながら、BYPASSとIDCODEだけをサポートしたものを作りました。
そうしたら、このように最初のモジュールに対してバウンダリスキャンができ、i.MX25のI/O端子を見たり操作したりすることができるようになったというわけです。
動作中の波形
MITOUJTAGでは、端子の動作を波形で見ることもできます。
基板検査機能を実験
そして、最後に基板検査機能を走らせてみました。
MITOUJTAGでは、基板上にJTAGデバイスが1個しかなくても単体でオープン/ショートが検査できます。
iMX25はMITOUJTAGに対応しているといえるでしょう。単純なオープン/ショートテストであれば、設定ファイルを作る必要はありません。デバイスのI/Oが、浮いているか、どこかにプルアップ/プルダウンされているか、またはどこかの出力ピンとショートしているかが自動的に調べられます。デバイス単体であっても、とてもとても手軽に検査ができてしまいます。
この辺りが、従来のJTAGバウンダリスキャン・テストツールとの違いです。