MicroBlazeのデバッグプロトコルを解析
XILINXのSpartan3AN評価ボードでMicroBlazeを動かしてみようと思い、FoundationとEDKの評価版をインストールしました。バージョンは10.1です。
EDKを触るは6か7の頃以来なので、全く使い方がわかりません。
PlatformStudioとPlatformStudio SDKのどちらを起動したらよいかが分からないくらいです。
PlatformStudioを起動すると新規プロジェクトの作成画面になりました。どうやらEDKにはSpartan3AN評価ボード用のサンプルがあらかじめ用意されているようなので、マウスでOK、OKと押していくだけで、なにやらBitStreamファイルが生成されました。
とにかく、凄そうなツールなので、どこをどうやって触ったらよいかさっぱりわかりません。

さて、MicroBlazeには、XMD( XILINX Microprocessor Debugger )というJTAGデバッグ用の機能があります。
これを使うとJTAG-ICEができるのですが、その詳細仕様は公開されていません。(たぶん)
XMDのプロトコルは解析可能か、そしてMicroBlaze用のJTAG-ICEを自作できるかどうかを探るのが今回の実験の目的です。
昔作ったJTAG信号解析装置を引っ張り出してきて、Spartan3AN評価ボードにつないでみます。

Spartan3AN評価ボードには、XC3S700AとXCF04Sが載っています。
まずは、手始めにiMPACTを使ってIDCODEとUSERCODEを取得したときの波形を解析してみます。

良い感じでJTAGの命令が見えました。
次に、iMAPCTを使って、コンフィグROMのERASEを行ってみます。

なるほど。まずはISPEN命令を送ってからデータに0x37を送り、次にFADDR命令を送ってからデータに0001を送り、5秒ほど待つ。そして、ISCTESTSTATUS命令を送って、最後にNORMRST命令を送るというわけですね。
消すのは簡単です。
では、本題のXMDのデバッグプロトコルの解析を行います。まずメインメニューのDebugから「Launch XMD」を起動します。

DOSプロンプトらしきものが立ち上がります。

このとき早速JTAGの通信が行われ、JTAG解析装置は信号を解析してくれました。

GDBのコンソールから、ステップ実行させたりレジスタを書き換えたりする際のデータを読むうちに、だいたいの感触がつかめてきました。今しばらくはやるつもりはありませんが、2日間くらいかけて本気で解析すればMicroBlaze用のシンプルなJTAG-ICEが作れるかもしれないというレベルです。(実際にやるつもりはありません)
CPUに任意の命令を送り込む方法や、CPUの実行・停止設定、データ読み出しポートなどの使い方は簡単にわかってしまいました。さすがに公開するとやばそうなので、本日のレポートはここまでにしておきます。
| 固定リンク


コメント
う゛~ん、凄い。さすがはなひたふさんだ!!
是非とも詳しく公開して頂けると楽しいのですが...
投稿: kantaro | 2008.11.18 14:26
ET2008疲れで返事が遅くなり申し訳ございません。
Kantaroさんは、MicroBlazeユーザですか?
私は使ったことはないのですが、デバッグ環境が不便という声が多いならば今後の予定に入れたいと思います。
ただ、タスク的にはちょっと後回しになってしまいそうです。
投稿: なひたふ | 2008.11.25 11:48