SH-4(ルネサスSH7750R)
SH-4(ルネサスSH7750R)のバウンダリスキャン
平成16年12月9日
組み込み系のCPUには、バウンダリスキャンができるものがあります。バウンダリスキャンとはデバッグ用の機能で、そのICの端子の状態を、自由に見たり操作したりすることができる技術です。
例えば、ルネサステクノロジ社のCPU、SH-4(SH7750R)はバウンダリスキャンに対応しています。ここでは、アルファプロジェクト社のSH4評価ボードMS104-SH4を例に、バウンダリスキャンが組み込みシステム開発に極めて有効であることを示します。
MS104-SH4とのJTAG接続
MS104-SH4は、下の写真1のような外観をしています。
写真1 MS104-SH4の外観
写真1の右上に映っている黒いのコネクタがJTAGコネクタです。パソコンとこのコネクタを、JTAGケーブルで接続します。
今回はノートパソコンからUSBで行いたいので、ナヒテック製のMobile JTAG Cableで接続します。

写真2 MS104-SH4とノートPCをUSB-JTAGで接続
MS104-SH4のハードウェアマニュアル等を参照しながら、JTAGケーブルを接続します。
MS104-SH4はどのようなボードか?
MS104-SH4はCPUの他にRAMとROM、LAN、コンパクトフラッシュコネクタが搭載されています。電源を入れて起動すると、数十秒でLinuxが起動します。

図3 Linuxの起動画面(RS232Cで通信)
MITOUJTAGでSH7750Rを認識
Mobile JTAG Cableを接続し、MITOUJTAGを起動します。
ところが、自動認識をしてもSH-4は認識されません。なぜならば、SH-4はJTAGのIDCODEを持っていないためです。デバイスを追加するのに自動認識は使えないので、SH-4のBSDLファイルを読み込ませてください。
その手順は、ツールバーの下の図4で示したボタンを押します。

図4 「BSDLファイルからの追加」を選択する
図5のようなダイアログが開くので、SH7750R用のBSDLファイルを読み込みます。

図5 SH7750R用のBSDLファイルを読み込む
これで、SH7750Rのパッケージの絵が表示されますので、図6のように各ピンの端子の状態が表示されれば成功です。エラーが出る場合は、JTAGの各信号の接続やTRSTの信号を確認してください。

図6 SAMPLEボタンを押す
JTAGロジックアナライザでLinux起動までを追う
リセットを行ってから、Linuxが起動するまでの、アドレスバスとデータバス、その他の信号線の挙動を追いかけて見ましょう。
ロジックアナライザを起動したら、Mobile JTAG Cableの非同期モードでキャプチャを開始します。非同期モードでは、ほぼ1ms周期でSH-4の全IOの状態を取得しつつけます。
下の図7、図8はキャプチャされた信号線です。(図をクリックすると大きくなります。)
図7 Linuxが起動するまでの波形(主にアドレスバス)
図8 Linuxが起動するまでの波形(データバスなど)
起動するまでの約35秒間に、いろいろな信号が出ています。CS0(ROM)とCS3(SDRAM)がよく使用されているようです。CS5はコンパクトフラッシュでしょうか、Linuxカーネル起動時に一瞬だけ出力されています。
コンソールの画面と、アドレスバスの挙動から、動作を解析したのが次の図9です。
リセット後、RedBootの起動、フラッシュROMからのカーネルイメージのコピー、カーネル起動、RAMDISKの展開、イーサネットの起動、Linux起動完了までのアドレスバスの動作を解析しています。

図9 Linuxが起動するまでの波形の解析
また、図9で、上から3個目の信号は、コンソールに表示するためのRS232Cのデータです。コンソールに文字が表示されるときに変化します。
例えば、フラッシュROMのコピー時には、アドレスバスの多くの信号が使用されていますが、Linuxが起動してしまうと、アドレスバスはほとんど同じ場所にとどまるようです。

図10 フラッシュROMからカーネルイメージ転送の時のアドレスバス
JTAGロジックアナライザで起動不良の原因がわかる
もし、SH-4のボードを新しく設計したとき、起動が上手くいかなかったらどうしますか?
リセット信号や、モード信号、アドレスバスなどをオシロスコープで観察するのもよいでしょう。しかし、それでは数時間~数日の貴重な時間を費やしてしまいます。
そんな時、MITOUJTAGのJTAGロジックアナライザを活用してください。
次の図11は、リセット時のモードピンとアドレスバスの挙動です。SH-4は、リセット時にMD[8:0]を使って、エンディアンなどいろいろな設定を行うしくみです。MDピンはシリアル通信等の信号と共用されていますが、リセット時には入力になるという面白い特徴をもっています。

図11 リセット時のモードピンの様子
図11を見ると、リセット時にMDピンがすべて入力になり、アドレスバスがハイインピーダンスになっていることがわかります。図11からMDの状態を読むと、
MD(8 downto 0) = "111110000";
であることがわかります。MD2~0は、クロックのPLLの倍率の選択などに使われ、MD4~3はエリア0のバス幅、MD5はリトルエンディアン/ビッグエンディアンの選択などに使用されます。
これらの設定が間違っていると、CPUは起動しないので、従来のソフトウェア的なデバッグ方法は一切使えません。
JTAGバウンダリスキャンは、たとえCPUが正常に起動していなくても使えますので、組み込みCPUを使った開発でお困りの場合は、是非ともMITOUJTAGをご活用ください。
SLEEPさせてアドレスバスを読む
図12は、CPUがSLEEPモードに入った時のアドレスバスの動作です。SLEEPモードに入るとアドレスバスは停止しますので、そのアドレスを読むことができま
す
図12 SLEEP時のアドレスバスの様子
プログラムにSLEEP命令をいっぱい配置しておき、プログラムの状況に応じてSLEEPさせれば、どこで停止したのかを知ることができます。
まとめ
MITOUJTAGを使うと、このように斬新で効率的な組み込み開発環境が簡単にご利用いただけます。
なお、SH-4のSH7750Sは、バウンダリスキャンに対応していないため、ここで示した方法でデバッグすることはできません。
このWebサイトで紹介したJTAGの応用方法は、特殊電子回路株式会社が独自に研究し、検証したものです。ルネサステクノロジまたはアルファプロジェクトに問い合わせることはおやめください。お問い合わせは下記のアドレスまでお願いします。
特殊電子回路株式会社 JTAG担当 info@tokudenkairo.co.jp



