ARM7

ARM7のバウンダリスキャン

平成16年12月9日

概要

 組み込み系のCPUには、バウンダリスキャンができるものがあります。

 バウンダリスキャンとはデバッグ用の機能で、そのICの端子の状態を、自由に見たり操作したりすることができる技術です。

 ここで、組み込み系CPUの代表として、ARM社のARM7純正評価ボードを例に、バウンダリスキャンを実践します。

ARM7純正評価ボード

 ARM社純正評価ボードは、下の写真のような外観をしています。


写真1 ARM7評価ボードの外観

CPUには、SAMSUNG社のS3C4510X01と刻印されています。写真1の左下に映っている灰色のコネクタがJTAGコネクタです。パソコンとこのコネクタを、JTAGケーブルで接続します。今回はノートパソコンからUSBで行うため、ナヒテック製のMobile JTAG Cableで接続します。

 

写真2 ARM7評価ボードとノートPCをUSB-JTAGで接続

 ARM用のJTAGコネクタには、14ピンのものと、20ピンのものがあり、信号の配置は図3のようになっています。今回使用するARM7純正評価ボードは20ピンタイプなので、図3の右側のピン配置となっています。

図3 ARM用JTAGコネクタのピン配置

 Mobile JTAG Cableの各信号を次の表のように接続します。

Mobile JTAG ケーブル

ARM7評価ボード

1 黒 GND

20 GND

2 紫 TDO

13 TDO

3 緑 TMS

7 TMS

4 白 TDI

5 TDI

5 黄 TCK

9 TCK

6 赤 Vref

2 Vsup

7 灰 TRST

3 TRST

8 茶 SRST

15 nSRST

9 青 IN

オープン

 MITOUJTAGを起動し、Mobile JTAGを接続すると、ARM7にリセットがかかります。
 ここで、まず、自動認識をしてみてください。ARM7TDMIが認識されるはずです。

 なお、このボードにはCPUの他にRAMとROMが搭載されていて、電源を入れてリセットすると、図4のようにRS232C上で操作できるモニタプログラムが起動します。

図4 モニタプログラムの起動

 さて、ARM7TDMIは、それ自体ではチップの外部の端子をバウンダリスキャンで観察したり操作することはできません。チップの外部の端子のバウンダリスキャンは、そのチップの製造元メーカーが用意したオプション機能になります。今回は、SAMSUNG社のS3C4510X01を使用しているので、バウンダリスキャンはSAMSUNG社のS3C4510X01の機能ということになります。

 この機能を利用するためには、S3C4510X01のBSDLファイルを読み込む必要があります。まず、下の図5のように、BSDLファイルから読み込むためのボタンを押してください。

 

図5 BSDLファイルからの読み込み

 図6のように、ファイル選択ダイアログが開きますので、KS32C50100.BSDを選択します。このBSDLファイルは、SAMSUNG社の当該CPUのデータシートを元に作成しました。

図6 ファイル選択ダイアログで、BSDLファイルを選択

 次の図7のように、ICの外形が表示されますので、まず、Toolsメニューから「Nahitafu ARM Debugger」を起動します。なお、ARM7CPUの特徴により、デバイス追加後すぐにバウンダリスキャンを行うことはできません。一度必ずデバッガを起動させてください。

図7 Nahitafu ARM Debuggerを起動

 デバッガを起動するとCPUはHALT状態になります。緑色の三角のボタンを押せばCPUコアはリスタートします。バウンダリスキャンを行う場合は、リスタートさせてもさせなくても構いません。Nahitafu ARM Debuggerは、何もせずに終了します。

図8 Nahitafu ARM Debuggerが起動し、CPUは停止

 Nahitafu ARM Debuggerを起動し、終了したら、バウンダリスキャンが可能な状態になります。ためしに、メインメニューで「S」と描かれたボタンを押すと、ICの全端子の状態をキャプチャして色分けして表示します。

図9 SAMPLEコマンドの発行

 次の図10は、JTAGロジックアナライザを起動させたときの画面です。
 (図をクリックすると大きくなります)

図10 JTAGロジックアナライザでCPUのアドレス/データバスを観察

 上記の波形を解析したところ、まず始めにnRESET(押しボタンスイッチ)を押下し、Lのパルスが発生しています。その時、すべてのバスが100msほどリセット状態になっています。

 その後、チップセレクト信号やアドレスバスが動作をはじめます。UATXD1からはRS232Cに起動時の文字列が送信されてます。この時、アドレスバスの13番以降は使用されていませんが、リセットから2秒ほど経過すると、次第に高いアドレスが使用されるようになります。これはスタートアップルーチンをフラッシュROMから読み込んでいるためです。P(4)、P(5)、P(6)はLEDの信号で、2秒ほど経過したところで変化しています。

 2.5秒経過すると、チップセレクトのnRCS(2)が動作を開始し、フラッシュROMではなく、DRAM上でプログラムが動作を開始したことを窺わせます。また、2.5秒経過する前は、データバスの[15:0]までしか使用されていませんが、2.5秒経過語はデータバスが[31:0]まですべて変化しています。

 なお、Webに掲載する都合上、いくつかの信号をピックアップして表示させていますが、実際には100数十本のすべての信号が見えています。

 また、ToolsメニューからフラッシュROMライタを起動し、ピン定義の対応ファイルを読み込ませることで、フラッシュROMの内容を自由自在に見ることもできます。

図11 フラッシュROMライターの画面

 もちろん、Nahitech ARMデバッガを使えば、JTAGを経由してARM7CPUのメモリの内容を見たり、レジスタを操作したり、シングルステップ実行させたりと、自由自在にCPUを操作することができます。ARMが現在実行しているプログラムや、ROMの内容には一切影響されずに強制的なデバッグが可能になります。

図12 Nahitech ARM デバッガの操作画面

 MITOUJTAGとMobile JTAG Cableを使うと、このような新しい効率的な発環境がモバイル環境でも簡単にご利用いただけます。

 このWebサイトで紹介したJTAGの応用方法は、特殊電子回路株式会社が独自に研究し、検証したものです。ARM社またはSAMSUNGに問い合わせることはおやめください。お問い合わせは下記のアドレスまでお願いします。

 

特殊電子回路株式会社 JTAG担当 info@tokudenkairo.co.jp