JTAG小冊子発送3日目
今日、ET2009で3日目にお越しいただいた方の分のJTAG小冊子を発送しました。
3日間あわせて、100冊以上になりました。
多くの皆様のご来場、本当にありがとうございました。
今週の中旬になっても届かないという方、いらっしゃいましたらご連絡ください。
今日、ET2009で3日目にお越しいただいた方の分のJTAG小冊子を発送しました。
3日間あわせて、100冊以上になりました。
多くの皆様のご来場、本当にありがとうございました。
今週の中旬になっても届かないという方、いらっしゃいましたらご連絡ください。
特電Spartan-6評価ボードで、MicroBlazeを動かしてみたくなりました。
ハードウェア屋としてはキビキビと動くロジックがたまらなく好きなのですが、今日は軟弱なCプログラミングに身をゆだねてみたくなりました。
さて、Spartan-6とMicroBlazeで検索してみたところ、まだEDKはSpartan-6をサポートしていないようです。
検索しても「Spartan-6とMicroBlazeでやりたいんだけど・・」という外人の嘆きがいくつかみつかる程度で、結局のところできるのかできないのかはよくわかりません。
それに、SP601というXILINX純正のSpartan-6評価ボードのデモアプリでも、MicroBlazeを使わずにやっています。
それなら、自分でやってみましょう。まず、EDK11.3を用意します。
すると、いきなりBase System Builderの最初の画面でつまづきます。
Architectureの選択箇所でSpartan-6やVirtex-6がありません。
そのため、Architectureの選択の画面ではSpartan-3Eや3ANなど適当なやつを選んでおいて、とりあえずプロジェクトを作ります。
そして、XPS(Xilinx Platform Studio)の画面になったら、Project Optionのところで右クリックして、FPGAのデバイスをSpartan-6に変更します。これで、Spartan-6が選択できます。
プロジェクトのオプション設定画面では、Spartan-6がサポートされています。
これで、プロジェクトをSpartan-6にすることができます。
しかし、Spartan-3の場合のIPコアがこれだけ(↓)たくさんあるのに対して、
Spartan-6のIPコアはこれだけ(↓)しかありません。
GPIOとかもありません。そのため、MicroBlazeを使ったシステムを構成する際には、いったんSpartan-3で作ってから、最後にアーキテクチャをSpartan-6に変更するという荒業を使わなければなりません。
なにはともあれ、こうすることで論理合成は最後まで通ります。
このようにして、Spartan-6向けに、8bitのLED出力ポートと、1個のスイッチ入力ポートを入れたシステムを作りました。
論理合成の結果(重要なところのみ)を見ると、
Number of occupied Slices 479 2,278 21%
Number of RAMB16BWERs 4 32 12%
Number of DSP48A1s 3 32 9%
となっていました。Sliceは21%消費し、メモリは4個消費します。DSP48ブロックも3個使われています。
MicroBlazeのサイズをマイクロとみるかビッグとみるかは人それぞれでしょう。
そして、XPSのApplicationタブの中の、目的のプロジェクトに、Mark Initialize BRAMのチェックをつけて、[Device Configuration]->[Update Bitstream]を行い、[Device Configuration]->[Download Bitstream]を行うと、作ったプログラムが動きます。
デバッガ(XMD)を起動すると、Spartan-6は「EARLY ACCESS」だと言って無数の警告を出してきますが、なんとか動作してくれてはいるようです。
InsightっぽいGUIのデバッグツールも、ちゃんと動いています。
(UARTを作っていないので、サンプルプログラムにあるprintとかいう関数をコメントアウトしてやらないと、とまってしまう)
こんな感じで、Spartan-3でプロジェクトを作ってからSpartan-6に移行するというやりかたで、Spartan-6に無理やりMicroBlazeを実装できることはできました。
EDK11.3ではまだSpartan-6は正式に対応されているわけではありませんので、ご注意ください。
この検証結果が皆様の何かのお役に立てば幸いです。
本日、ET2009 2日目にお越しいただいた方の分の小冊子を発送しました。
三十数冊ありました。
クロネコのメール便です。おそらく、この土日か来週早々には届くと思います。
3日目の発送は、住所の入力が間に合わず、来週月曜日になりました。
お待たせしてしまって申し訳ございません。
ET2009の特電ブースでは、アンケートにお答えいただいた方に、小冊子を後日発送するということにしておりました。本日、1日目の分+α の小冊子の発送を行いました。39名分あります。
書類送付のご案内という1枚の案内状と、小冊子だけ封筒に入れて送りました。広告やパンフレットは入れていません。
明日、2日目と3日目の分の発送を行います。
住所がわからなかった方はメールで問い合わせさせていただきました。しかし、記名もメールアドレスの記載もなく、お名刺も貼っていただかなかった方には、できる限り解析していますが、残念ながら最後まで誰かわからないものは発送できません。ご了承ください。
お名刺記載の住所や、アンケートに手書きされた住所を1件1件パソコンに入力して発送していますので、もしかしたら間違いがあるかもしれません。アンケートに名前と住所を書いたのに、届かないという方はご連絡ください。
1台のパソコンでMITOUJTAG Proを複数立ち上げて、複数のラインの基板の検査をしたいというお客様がいらっしゃいました。
MITOUJTAGを複数起動できるようにするのは難しくないのですが(逆に今はミューテックスで複数起動しないようにしている)、複数のMITOUJTAGが1つのPocket JTAG Cableをアクセスすると良くないので、デバイスドライバ部分で排他制御しようと考えました。
まず、CreateFileの各種フラグを設定しても効果はありません。
なので、カーネルモードプログラムの中で何かをしてやらねばなりません。CreateFileでデバイスドライバをオープンした際、ドライバの中ではIRP_MJ_CREATEのディスパッチルーチンが呼び出されますが、このディスパッチルーチンは戻り値でSTATUS_UNSUCCESSFULを返しても、CreateFileは失敗しないようです。
つまり、CreateFileはINVALID_HANDLE_VALUEを返さずに、ドライバは正常にオープンできてしまいます。これはハマりました。
簡単に排他制御するならば、DEVICE_OBJECTにDO_EXCLUSIVEというフラグがあるので、これを設定すればよいようです。しかし、2回目以降のCreateFileで必ず失敗し、1回目は成功するので、きめ細かい制御はできません。
いろいろ試行錯誤した結果、CreateFileを失敗させるには、IRP_MJ_CREATEのディスパッチルーチンの中で、
Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
Irp->IoStatus.Information = 0;
IoCompleteRequest (Irp,IO_NO_INCREMENT);
と、IoStatus.StatusにSTATUS_UNSUCCESSFULを設定すればよいようです。
あとは、DEVICE_EXTENSIONに、現在のこのデバイスがオープンしているかどうかを保持するフラグを持たせて、オープンしていたらIRP_MJ_CREATEを失敗させれば排他制御が実現できます。
これで、きめ細かく状況に応じてオープンさせないということができるようになります。
いまは先にオープンしたPocket JTAG Cableが0番、次にオープンしたPocket JTAG Cableが1番、としていますが、シリアル番号か何かでオープンするのを制御できるようにすれば、使い分けができるようになるはずです。
DellのVostro 220sと、特電PCI Express評価ボードの相性がいまいちよくありません。
まず、パソコンが動作中に(荒っぽいですが)、特電PCI Expressボードをいきなり差し込んでも、普通のパソコンなら全然大丈夫なのですが、Vostro220sの場合は画面が崩れてハングアップします。特電PCI Expressボードを差し込んだ状態でPCの電源をONした場合、正常に認識される確率は10%程度しかありません。
FPGAのコンフィギュレーションを短い時間で済ませるため、CCLKの周波数を上げても改善なし。
External Cabling接続でPCとボードをつないでFPGAをあらかじめ起動させておけば、ほぼ確実にPCI Expressは認識されます。しかし、通信させてみると、エラーが頻発。
これは落ち込みました・・
当コアは確かにエラー検出や再送はしてませんが、こんなにエラーが起きるとは・・
しかし、他のPCにさしてみると、全く問題ありません。
3mのケーブルでも問題なく通信できます。
120Gバイトくらいの乱数列を読み書きしてもノーエラー。
他のPCIに夜、仕掛けて、朝まで通信エラーが起きていないのを見たら、落ち込みから回復しました。
さて、Vostro220sには、いったいどういう問題が隠れているのでしょうか。
MITOUJTAG Version 2.xへのJTAGフラッシュROMライタの移植が完了しました。
この機能は、FPGAやCPLD、CPUの端子をバウンダリスキャンで操作して、それらのJTAGデバイスに接続されたフラッシュROMに間接的に書き込むというものです。
MITOUJTAG 2.xの子ウィンドウの1つにフラッシュROMライタが統合できました。
JTAGフラッシュROMライタの設定ファイルが、プロジェクトツリーに登録できるようになり、プロジェクトツリーから右クリックで起動したり、書き込みシーケンスを開始できたりします。
また、次のチェックボックスをONにすると、JTAGフラッシュROMライタ実行中に、どのようなピンが動作しているのかを、バウンダリスキャン可視化ウィンドウでリアルタイムに見ることができるようになります。ただし、この機能をONにすると遅くなるので、デフォルトでは使わないようになっています。
さらに、MITOUJTAGのメインツールバーの、「書き込み」や「ベリファイ」のボタンとも連動しました。このボタンは、FPGAやCPLD,コンフィグROMに書き込むものですが、JTAGフラッシュROMライタの画面が起動しているときには、フラッシュROMへの書き込みが行われるようになります。
ただし、ツールバーまでマウスを毎回移動させるのも面倒なので、JTAGフラッシュROMライタの子ウィンドウで右クリックするとプルダウンメニューが開き、その中から書き込み指令を出すこともできるようにしました。
さて、フラッシュROMの消去アルゴリズムには、セクタ消去とチップ消去があります。
ツールバーの「消去ボタン」を押した場合には、どちらのタイプの消去を行うかを選択するダイアログを出すようにしました。チップ全体消去は分単位の時間がかかりますが、セクタ消去は1セクタあたり1~2秒です。なお、Intel系のコマンドを持つフラッシュROMには、チップ消去はありません。
ブランクチェックも2つのモードを用意しました。
1つは詳細チェックモードです。これは選択された領域をすべて読み出して、FFFF・・・・になっているかどうかをしらべるものです。時間はかかりますが、確実です。
もうひとつは、領域検索モードです。このモードは、フラッシュROM全体の中を粗くスキャンして、データが書き込まれている領域を探す場合に使います。詳細がよくわからないROMがあって、どの場所にどんなデータがあるかを調べたい場合などに使うと便利です。
動作もMITOUJTAG BASIC 1.xの旧バージョンに比べて2倍以上高速化されています。
この機能を内蔵したMITOUJTAG BASIC Version 2.1とMITOUJTAG Pro Version2.1は、11月中にはリリースを開始する予定です。
次は、SVFプレイヤーの移植を行います。
MITOUJTAGはこれからも、ますます進化していきます。
お客様から、特電PCIeがDellのVostro220sで動かないというご連絡をいただきました。
メールで状況をやりとりしていてもなかなか難しいので、Vostro220sを1台購入してみました。
で、今、箱を開けてVostroを取り出し、試してみました。
新品で何もインストールされる前に、いきなり特電PCIeなんて怪しいものを挿される可愛そうなVostro・・・
すると、確かに動いたり動かなかったり。
Vostro220sは、起動時にPCI Expressカードがスロットにささっていないと判断すると、そのスロットは二度と探しにいってくれないようなので、ブランクのFPGAのPCI Expressカードを挿しておいて、後からコンフィギュレーションするというわけにはいきません。
SPI ROMにデータを書き込んで電源ONすると、10回に1回くらい動きます。
この確率の低さがやばい。
しかし、起動時に認識されたら後は、問題なく動きます。
今日分かったことは、特電PCI ExpressボードはWindows7 Professional(32bit版)上でもデバイスドライバはちゃんとインストールできて、動作するようです。
うーん、Vostro220sの起動時の相性が悪い。
何が原因なんだろう。
じっくり調べてみましょう。
今夜もMITOUJTAG 2.0用のフラッシュROMライタの移植に励んでいます。
メインのツールバーとの連動や、プロジェクトツリーへの「フラッシュROM設定ファイル」の登録、子ウィンドウの中でのダンプや読み書き、セクタ調査などができるようになり、かなり便利になりました。
さて、ALTERAのDE0のフラッシュメモリで実験していて、変な現象に遭遇しました。
フラッシュROMのセクタ消去を実行しようとしても、消去できないのです。
実は、今までのMITOUJTAGフラッシュROMライタのプログラムに問題があったようです。このプログラムは、フラッシュROMのCFIコードを読んでセクタ構成を調べるようにしています。CFIの規格によれば、CFIコード中に記述されているセクタ(消去ブロック)の構成は、「何キロバイトのセクタが何個並んで、次に何キロバイトのセクタが何個並んで、その何キロバイトのセクタが何個並んで、・・」という形の情報で記述されています。しかし、その並びの順序を最終アドレスから数えるか、それともアドレス0から数えるかは決まっていないようなのです。
どうやら、この順序はボトムブートの場合は先頭から、トップブートの場合は最終アドレスから数えるのが一般的のようです。(ただし、この数え方が厳密な規格かどうかは不明)
つまり、CFIコードを見る限りでは、そのデバイスがボトムブートなのかトップブートなのかを判別できません。CFIの拡張領域(PRIと書かれた場所)の、バージョンが1.1以降なら、P+0x0f番地に、ブートセクタの情報が書かれているというわけです。しかし、書かれていないものもあります。
いま、SpansionやAMD,Intel,numonyxなどのデータシートを読み漁っていますが、古いデバイスとか含めると、なかなか厄介かもしれません。
例えば、numonyxのM29W320DT/M29W320DBはPRIのバージョンは1.0ですが、ブートセクタ判別フラグ(P+0x0f番地)が存在します。
旧Intel系か、旧ST系か、とかそういうのもあまり関係ないようです。
自動でセクタ構成を完璧に把握するのは難しそうです。これは困った。
セクタ構成を手動で選択するか、自動認識するかを設定できるほうがよさそうな気がしてきました。
18日から20日の3日間、ET2009に出展しました。
この3日間、とても多くのお客様がいらっしゃいました。おそらく、特電ブースとしては過去最高の入りだった気がします。3日間、ほとんどひっきりなしにお客様がいらっしゃっていました。
たいていのブースでは「●●ありま~す」「●●いかがですか~」「●●のパンフレットをどうぞ~」、と通りかかる人を無理やり呼び止めて配っています。うちも去年までそうでした。
しかし、これははっきり言って逆効果。
お客様はみんな身構えて逃げてしまいますし、配っているスタッフの方も拒絶された感じが溜まって、どんどん気分が落ち込んできてしまいます。正直言って、無理やりパンフレットを渡されるのは迷惑だし、紙の資源の無駄ででしょう。だから、今回は「展示会場では、呼び止め・声かけ・パンフレット配り」は絶対にしない、という固い決意のもと企画を練りました。
さて、設営に関することはこのくらいにして、今回の特電ブースの様子を紹介させていただきます。
まず、ブースはいつもと同じく畳一畳くらいの広さのミニブースでした。
机の上にところ狭しといろんなグッズが並んでいます。
最初は時分割多重で入れ替えしようと思っていたのですが、ずっとお客様がいらっしゃっていたので、結局のところ、終日、すべての作品をごちゃっと展示していました。
今回の目玉は、Spartan-6評価ボード。
おそらく、ET2009の会場で、実際に動いていたSpartan-6は、ここだけだったと思います。
実は、このボードのパンフレットの裏には、「Spartan-6評価ボード 開発趣意書」という、私がSpartan-6ボードにこめた思いを書いております。X社某代理店が見たら怒り出しそうな内容なので、とてもWebやブログには書けません。会場にお越しいただいた方だけのお楽しみにしておいてください。
まさにチラシの裏です。
次の写真は、LED光センサアレイのデモンストレーションです。手をかざして遊んでくれた方が多く、うれしかったです。
それから、LED光センサアレイ第二号機。
この第二号機は、ET2009の前日の朝(17日)にP板から基板が届いて、その日のうちにバイト君に実装してもらいました。そして、私が手にしたのがET2009の初日(18日)の朝10時10分。10時30分からはIPAのプレゼンでこのボードをデモしなければなりません。実質わずか5分で、プレゼンのためFPGAアプリをつくらなければなりません。そこで、Spartan-6の中身を動かすのではなく、パソコンからバウンダリスキャンでFPGAのI/Oだけを操作するという方法で、IPAのプレゼンを乗り切りました。
あと、お客様の声のパネル。
中には、じーっと真剣に見入ってくれる方もいらっしゃいました。お客様の声は特電スタッフにとっても励みになります。
それから、JTAG小冊子の無料配布は大変好評で、とても多くの方からお申し込みをいただきました。
アンケート用紙に添えられた住所のほうへ、来週、郵送させていただきます。
あと、電子系のブログをされているという方、MITOUJTAGをすでに使われているという方も大勢お越しいただき、たっぷりお話できました。Simさんは2日目にいらっしゃいました。朝、昼、夕と3回くらいいらっしゃいまして、NECエレでもらったLED照明を見せてくださいました。欲しくなって私もNECエレのセミナー受けてLED照明をもらってきました。
2日目のETフェスタでは皆々様に電氣ブランをふるまわせていただきました。電気の展示会なのだから、やっぱり電氣ブランですよね。
私も少しのみましたが、ほんの少し飲んだだけなのに、ふらふらします。アルコールの度数以上に何かありそうです。
チップコンデンサクッキーを見たいと尋ねて来られた方には大変申し訳ございませんでした。自作の菓子を不特定多数の方に提供すると、食品衛生法がどうのということで厳しく罰せられるかもしれないので、今回は自粛させていただきました。
アンケートを見てみると、特電ブースにお越しいただいたお客様は、趣味でも電子工作をされている方が意外と多いようです。特電は、産業用だけではなく、趣味の方にも楽しんでいただけるような製品を今後も作り続けて行きたいと決意を新たにしました。
何はともあれ3日間、ありがとうございました。
ご来場いただいたお客様、そして、出展を支えてくれた特電のスタッフの皆様、本当にありがとうございました。
とても楽しい展示会でした。
MITOUJTAG BASIC Version 1.5にはフラッシュROMライタがありましたが、2.xにはまだありません。
そこで、MITOUJTAG BASIC 2.1やPro 2.1に、フラッシュROMライタを移植しようとしています。
アクセス速度は、BASIC1.5と比べると、約2~3倍に速くなっています。
また、フラッシュROMに書き込む際のシーケンスがバウンダリスキャン可視化ウィンドウで見えます。書き込みや例えば、フラッシュROMのダンプを行うと、アドレス信号の端子がチカチカと点滅します。しかし、リアルタイムに画面更新をやると当然ながら遅くなるので、どうするか微妙です。
上の図の動作は、Spartan-3ANスタータキットで試していますが、Spartan-3ANスタータキットのBPIフラッシュROMは一癖ありそうです。なぜだかFPGAがコンフィギュレーションされていない状態にしないと、うまくいきません。デフォルトのアプリケーションとJTAGバウンダリスキャンがぶつかってしまうのでしょうか!?
MITOUJTAG BASIC Version 1.5のフラッシュROMライタプログラムは約4200行ありました。
BASIC 1.5の頃は関数ポインタを使いまくって分かりにくいプログラムだったので、せっかくだから、やりたいこと(フラッシュROMに対する各種操作)をクラスにまとめて、関数ポインタのかわりに仮想関数を使って書き直し、見通しをよくしています。見通しはよくなりましたが、行数はほとんど削減できていません。CからC++に移っても、それほど記述量が減るわけではないようです。
この新しい機能も、近いうちにリリースできるでしょう。
今日は、クッキーで食べられる電子回路(の模型)に挑戦です。
まず、いろんな部品を作りました。
(チップ部品の出来は昨日のほうが良かったです。材料をいろいろ変えたら生地が柔らかくなったため)
プリント基板の緑色は抹茶の色です。いちおう多層基板にしてみたのですが、全くわからなかったです。
チップ抵抗(のつもり)の灰色は、黒胡麻を擦って練りこんでます。
チップコンデンサは、前回と同じく、ココアです。
BGAのICらしきものは、黒胡麻を擦ったものを練りこんで、四角くカットして、アラザンを並べました。
基板の上に部品をそれとなく置き、オーブンで焼結します。使わなかった部品たちは基板の周囲に置いて一緒に焼き上げます。
いったい何を焼いているのか。妙な光景ですね。
温度が高かったので、ちょっと焼きすぎた感じになりましたが、プリント基板らしくなりました。
もっと直角が出せればいいのですが・・これはこれでかわいいので、この路線でいくかも。
さて、チップコンデンサを外して、BGAのICの足の部分を横から覗いてみると、一部のピンが溶けてショートしていました。BGAの実装不良が起きないように、こんどはもうちょっとオーブンの温度を下げて再挑戦してみます。
みんな、はっぴはっぴはっぴー
これなんでしょう?
チップコンデンサ?
いいえ、クッキーです。もちろん鉛フリーです。
今日、生まれて初めてクッキーを焼いてみました。電子部品型にしてみました。
10mm×6mm×6mmくらいのサイズで、真ん中はココア入りで違う色です。
どうやって作ったかというと、5mmくらいの厚さに延ばしたココア入りのクッキー生地を、2mmくらいの厚さの普通の生地でサンドイッチして、包丁で5mm×5mmくらいのサイズにカットして、分離し、整形します。黄色いほうのクッキー生地はどこのレシピにもある普通のやつです。
ちっこいクッキーがゴロゴロとたくさんできます。端っこの部分は全部無駄になりますので、できるだけ四角く均一に延ばすのがコツです。まだまだ歩留まりは悪いですが、改善できるでしょう。
電極の部分を後からくっつけるのではなく、大きな板から切り出すことによって電極-誘電体-電極という構造に見えるクッキーを大量に作るというわけです。
生地に混ぜるものを工夫すればいろいろな色が作り出せるはずです。
きっと、抹茶を混ぜれば基板の緑が。胡麻を混ぜれば灰色が。
こんどは、チップ抵抗とBGA、多層基板にも挑戦してみます。
今回、はじめてということもあって、1cmくらいのサイズになってしまったので、実物の6倍くらいのサイズになりました。もっと微細に作りたいですね。
材料の比率や、混ぜるときの温度、焼結の温度など、いろいろ研究しがいがありそうです。
お菓子作りがこんなに楽しいものだとは思ってもいませんでした。
みんなも作ってア・ラ・モード
こんな感じで波形をキャプチャしているときに、
JTAGアナライザを使ったら、SignalTap2のシーケンスが丸見えだ。
やばい・・やばすぎる。
この得られたデータを元に、ALTERAでのJTAG通信のやり方を研究していきたいと思う。
それにしても、SignalTap2の使い方になれるまで苦労した。
TalkBackを有効にするのはすぐに対応方法がわかったが、IncrementalCompileの無効化は正直わからなかった。SignalTAP2への観測信号の追加方法とかも、まさかそこをダブルクリックするとは思わなかった。
なんだか、SignalTAP2を使っていると、自分のBLOGANAに自信が持てるようになってきた。がんばってBLOGANAを改良してALTERAに対応させようと思うようになってきた。
ET2009にはJTAG解析装置も持っていこうと思います。展示物として表には出さないので、お問い合わせいただいた方にこっそりお見せいたします。ご興味おありの方は、あらかじめご来訪時刻をお知らせください。
ArriaGXのJTAG書き込みにも成功しました。
使用したボードは、CQ出版のArriaGX評価キットで、EP1AGX20CF484C6Nが乗ったものです。
まず、コンフィギュレーション前の状態でバウンダリスキャンしてみたところ、すべてのI/Oピン(B10とF12を除く)が入力状態になっていて、クロックの入力などが確認できます。B10とF12は何かのコンフィギュレーション関連ピンなのでしょうか、信号が出力されています。ArriaGXには高速シリアルトランシーバが内蔵されていますが、やはりバウンダリスキャンではそのあたりの端子(画面左のほうの灰色が多い部分)は見えないようです。
ArriaGXに対しても、コンフィギュレーションプログラムを開発しました。まだ完璧ではありませんが、一応、書き込めているようです。コンフィギュレーションした後では、LEDチカチカしているのが画面上で確認できます。
B10とF12は入力状態に変わりました。
実は、今日この評価ボードのCD-ROMを会社に忘れてきてしまって手元に回路図がなかったのですが、バウンダリスキャンでぽちぽちとEXTESTすることで、LEDがつながっているピンの配置やクロックの場所をみつけることができ、コンパイルするためのピン定義をつくることができました。
バウンダリスキャンって便利だな、とあらためて思いました。
ところで、上の図を見て分かるとおり、使用していないI/Oピンが、なぜか出力状態として認識されてしまっています。Spartan-6のバウンダリスキャンの問題と同じような現象が、ArriaGXでも起こっています。
これはあまりにもマイナーなバグなので、バウンダリスキャンをデバッグに活用しようとする人を除いて、世界中の誰もが気づかず、ArriaGXを普通に使うことができてしまっているでしょう。しかし気がついてしまうと、気になります。
ALTERAよお前もか。なぜICメーカーはJTAGをちゃんとつくらないのでしょう。FPGA関連は結構大丈夫だと思ったのですが、やはりJTAGの便利さがまだ十分に認識されていないようですね。
このバグがQuartusIIのソフトに起因するものなのか、ArriaGXのシリコンに起因するものなのかは分かりませんが、さすがにもうALTERAに報告して修正してもらうという気力までは出ません・・ふぅ・・
とりあえず、来週中には、J-WriterとMITOUJTAG Ligh用の、ArriaGX、Cyclone3対応パッチをリリースしようと思います。
LED光センサアレイ実験用試作機2号機を出図しました。
今回は、秋葉原で入手できる部品ではなく、Digikeyで集められる部品で固めて見ました。
ピンヘッダにはSpartan-6 FPGAボードが乗ります。
1号機ではLEDとFPGA間が直結でしたが今回はバッファを入れました。このことによって、LED内の容量に溜まった電荷が抜ける時間が長くなるので、感度が良くなるのではないかと期待しています。
また、コンパレータを使って、電荷が抜けたことを判断する閾値を自由に可変できるようにしました。(今まではFPGAのデフォルトの入力閾値で判断)
LED光センサはアナログ回路です。予期しないLEDが導通することで、縦や横の行や列の分離精度が悪くなります。LED素子を増やしても動作するのかは分かりません。
基板が手元に届くのは火曜日とのことです。実験するのが楽しみです。
さて、来週からET2009が始まります。
特電もIPA情報処理推進機構内のミニブースで出展することになりましたが、従来どおり出展していてもマンネリになってきたので、今年は少し変化をつけようと思います。
今年の展示はココが違う
アンケートにお答えいただいた方の中から抽選で3名様に、以下の賞品をプレゼントいたします。
① 特電Spartan-6評価ボード
② PCI Express評価ボード
③ MITOUJTAG Light(J-Writer付き)
また、残念ながら抽選にもれてしまった方にも、「JTAG小冊子」を差し上げます。
□■□■□■□■□■□■□■□■□■□■□■□■□■□■
今年の展示はココが違う
特電は、展示会のポリシーとして、普通のお客様には決して売り込みをいたしません。
通りがかる人のカバンに無理矢理パンフレットをねじ込むようなこともいたしません。
そういうのは逆効果だとわかっているからです。
展示会って、ブースの前で見ているだけで、中から人が出てきて「いかがですか[」と声をかけられる怖い場所というイメージがありましたよね!?
だから、特電ブースは決して売り込みをいたしません。興味のない方に無理やり興味をもたせようとするしつこいトークも決して行いません。興味のない製品のパンフレットの束を渡すこともいたしません。
興味のない方はスルーしてくださって結構ですし、
興味をお持ちの方は心ゆくまで安心してMITOUJTAGやSpartan-6をご覧になって、触れてみてください。
□■□■□■□■□■□■□■□■□■□■□■□■□■□■
今年の展示はココが違う
それから、今までに出た展示会では、狭いところにいろんな製品を所狭しと並べていたので、ゴチャゴチャしていました。今回も特電ブースは畳一畳くらいの狭いスペースしかありません。
そこで、今回は時分割多重化によって複数の製品を出展しようと思います。つまり、時間によって出展する製品を変えるというわけです。
例えばこんな感じです。
11:00~11:30 MITOUJTAG Proのデモンストレーション
11:30~13:00 休み
13:00~13:30 Spartan-6のデモンストレーション
13:30~14:00 休み
14:00~14:30 MITOUJTAG Proのデモンストレーション
14:30~15:00 休み
15:00~15:30 Spartan-6のデモンストレーション
16:00~ 撤収して静展示へ
本来、ET2009の会場は10:00~17:00まで開いていますが、特電がブース内でデモをする時間はこの2時間に絞らせていただきます。デモをしていない時間はどうしているのかというと、プレゼンしていたり、ブースの展示内容を入れ替えたり、他のブースを見に行ったりしています。
逆に、私もこの2時間に集中してデモをしたいと思います。
期間中はいつでもオープンしているというのが展示会の常識でしたが、これを覆してみせます。
□■□■□■□■□■□■□■□■□■□■□■□■□■□■
プレゼンのテーマは、
まだムダな苦労を続けますか!?
組込み開発で楽をする「JTAG活用」5つのノウハウ
です。新ネタをご用意して皆様をお待ちしております。
時間は下記のとおりです。
・11月18日(水)11:30~11:50
・11月19日(木)11:30~11:50
・11月20日(金)10:30~10:50
ほかにも、いろんな意味で一皮むけた企画を考えていますので、特電にご興味のある方は、ぜひとも当社ブースにお越しください。
皆様のお越しを心よりお待ちしております。
以前、Spartan-6のバウンダリスキャンの問題を発見!の記事で、Spartan-6のバウンダリスキャンに問題があるということを書きました。
その後、XILINXのWebCaseに連絡し、検証用のデザインなどと共に送ったら、米国のXILINXにまで伝わって、ようやく、トラブルとして認識されました。
問題の核心を要約すると、データシート図10-3の配線がちゃんとつながっていないのではないかということです。
これを送ったら、指摘したBSCANの接続が正しくされておらずTristateの値が正しく表示されていないようだという回答が帰ってきました。
超マイナーな(普通に論理合成して書き込んで使っている限りでは決して遭遇しない)不具合ですが、ツールの改善に貢献できてなんだか嬉しいです。
将来のISEのバージョンで修正されるかもしれません。
とりあえずは、Spartan-6のI/Oは双方向端子として宣言して、問題を回避してくださいとのことでした。
なお、この問題の概要を送るときに、「この問題のためMITOUJTAGでデバッグできない」と、MITOUJTAGの画面も添付して送ったので、きっと米国XILINXの中のコアな人が一度はMITOUJTAGの画面を見て、MITOUJTAGの存在を知ってくれたのではないかと期待しています。
Cyclone3の書き込みが安定してできるようになってきました。
いままでALTERA DE0でのJTAG書き込みがうまくいったり、いかなかったりしていたのですが、その原因がわかってきました。
まず、DE0には、RUN-PROGと書かれたスイッチがあります。
Cyclone3が起動するにはnCE端子はLレベルでなければならないようなのですが、このスイッチをPROG側にするとFPGAのnCE端子がHレベルになるため、FPGAは起動できないようです。
ただ、私はALTERAに詳しくないので、このあたりの真相はわかりません。
それから、まだ未確認なのですが、書き込みに要する総時間がある程度長くないと、書き込みに失敗するようです。TCKの速度を速くして短い時間でコンフィギュレーションデータを送り込むと失敗します。逆に、TCKが速くても間に休みを入れて間欠的に送れば成功します。このあたりは謎です。
また、JTAGのシーケンスがどうなっているのか調べたくて、JTAGアナライザをつないでみました。
(携帯のカメラで撮ったので画質は荒いです)
そして、QuartusIIで書き込んだときの波形をキャプチャして調べてみました。
この解析ソフトにはまだバグがあるようで、シーケンスが100%正しく解読できていませんが、確実にいえることは、QuartusIIのProgrammerが出力するSVFファイルの内容とはかなり異なっていそうだということでした。
QuartusIIで出力できるSVFファイルよりも、QuartusIIのJTAG Programmerが発行するJTAGシーケンスのほうがずっと高度なようです。解析したところ、どうやらACTIVE_DISENGAGEという名前のJTAG命令を発行しています。
データシートによれば、ACTIVE_DISENGAGEというのはCyclone3に存在する命令で、ActiveSerialやAvtiveParallelのコントローラをアイドル状態にするものだそうです。なるほど、つまりJTAGコンフィギュレーション中にこれらのコントローラが悪さをしないようにしているものなのですね。(XILINXのSpartan-3では同様の機能がJTAGコンフィギュレーション中に悪さをすることがあった。)
この命令も発行してやる必要がありそうです。
CycloneIIIのJTAG書き込みアルゴリズムの開発をしようとして、2ヶ月ほど前に購入したまま放置されていたTerasicのDE0をいまさらながら引っ張り出してきて、再び開発をはじめました。
DE0は、基板上にFTDIの石とMAX2が乗っていて、USB-Blasterの互換品が基板上に搭載されている形になっています。しかし、Cyclone3のJTAG信号はすべてオンボードのMAX2につながっていて、JTAG端子が基板の外に出ていません。
このため、外付けのJTAGケーブルを使用することができません。
そこで、MAX2の中身を消去して、チップ抵抗R35~R37をはずし、JTAG信号を引き出しました。TDOの信号はMAX2の端子から直接出しています。
MITOUJTAG Lightで、デバイスの自動認識に成功。
デフォルトで登録されているデバイスの一覧の中に、CycloneIIIはちゃんと入っていました。
バウンダリスキャンすると、LEDがワキワキうごいているのが見えます。
次は、CycloneIIIの書き込みアルゴリズムをつくりたいと思います。
お楽しみに。
MITOUJTAG BASICやLight、Pro・・。
今回は、これらのバージョンがどういう過程で進化してきたのかを書きたいと思います。
最初は0.01からはじまり、0.16になって、0.31というバージョンになりました。
この0.31を継ぎ足し継ぎ足し改良していったのが、現在のMITOUJTAG BASIC 1.5の系統です(緑色の線)。
これとは別に、当初はJTAG-ICEも作っていました。最初は単体のアプリケーションでした(NJARM7)が、ARM7だけ統合されるようになりました。その後、JTAG-ICEは、雑誌付録用のSH-7144やV850用として発展してきました。SH7750R用、MIPS32用もありましたが、これらは結局リリースはされませんでした。
AJFG1.0というのは、Advanced JTAG Function Generatorで、受託開発で作ったバージョンです。これは、後のMITOUJTAG Proに取り入れられました。
MITOUJTAG Proの系統は、BASIC1.5の系統とは別に全く新規に開発したものです。2008年ごろに開発をスタートしました。見た目の特徴はマルチウィンドウです。各モジュールの結合が疎なので、DLLを入れ替えたり追加したりすることで、機能をカスタマイズしたりプラグインを作りやすくしました。
2009年夏には、MITOUJTAG Proから一部の機能を抽出したMITOUJTAG Lightをリリースしました。
そして、今後は、ベース部分はMITOUJTAG 2.0の路線に統合していく予定です。バイナリが共通になるので、MITOUJTAG BASIC、Light、Proの開発とバージョンアップが一緒に行えるようになります。
子ウィンドウの中でいろんな機能が動くようになるので、使いやすさも格段に向上する(はず)です。お楽しみに。
現在、MITOUJTAG BASICのメジャーバージョンアップにむけて鋭意開発中です。
今日は、そんな新しいMITOUJTAG BASIC 2.1をご希望されていたお客様に、先行リリース版を発送いたしました。
MITOUJTAG BASIC1.5から2.1への進化は、とても大きな進化を伴います。
まず、MDIアプリケーションとしてユーザインタフェースが洗練されました。
ユーザインタフェースの改良とともに、JTAGロジックアナライザとバウンダリスキャン可視化の同時動作が可能になり、また、複数のバウンダリスキャン可視化ウィンドウを開くこともできるようになりました。
ロジアナや信号ウォッチウィンドウなどのツールは、子ウィンドウのひとつとして開くようになります。
次に、プロジェクトツリーを用意しました。
JTAGチェーンにどのようなデバイスがつながっているかが一目でわかります。各種デバイスへの操作は、プロジェクトツリーからでも、バウンダリスキャン可視化ウィンドウからでも行えます。また、プロジェクトごとに関連ファイルをまとめるフォルダを作成することができるようになりました。
他のPCにプロジェクト一式を持って行きたいという場合でも、bitファイルやUCFファイルを忘れた・・ということがないようになりました。
これまでのMITOUJTAG BASICでは、インストール後に「BSDLファイルを探してください」とお願いをしていました。Version2.1からは、各社のBSDLファイルから抽出したJTAGデバイス情報をデーターベースとして内蔵するようにいたしました。
このJTAGデバイスデータベースは、ほとんどの現行メーカーのFPGA、CPLD、CPUを網羅しているため、使う前にわざわざBSDLファイルを探したり、ハードディスク内をスキャンしたりしていただく必要はございません。登録されたデバイスはおよそ4000種類です。
さらに、パッケージ形状を自動推定できるようになり、どんな複雑な形状の(BGA)パッケージでも、形状を自動的に推測できるようにしました。BGAのピンが途中で抜けているようなデバイスでも、正しく表示できます。
もう、パッケージファイルを探したり、作ったりする必要はありません。MITOUJTAG開発当初からの積年の課題がひとつ解決されました。
それから、困ったときにいつでも、F1キーですぐに開けるオンラインヘルプを用意しました。
そして、MITOUJTAG1.5(サービスパックなし)の頃と比べて、以下のデバイスの書き込みに対応しました。
ALTERA Cyclone2、Flex10K、ACEX、MAX2
XILINX Spartan-6、Virtex5LXT、XCF**P、CoolRunner2
Lattice XP2
現在はまだBASIC Version2.11βという弱気なバージョンですが、あとは、JTAGフラッシュROMライタと、SVFプレイヤーを統合して、完成です。
正式版のMITOUJTAG BASIC Version2.11は、来週あたりには出荷したいと思います。
現在MITOUJTAG BASICをご利用中で、サポート期間中の方は無償でバージョンアップできますので、詳しくはお問い合わせください。
大変お待たせいたしました!
MITOUJTAG Lighのサービスパック1をリリースしました。
http://www.tokudenkairo.co.jp/jtag/sp.html#light21
今回の更新内容の主なものを紹介します。
●パッケージの形状を自動的に推測するようにした。
どんな複雑な形状の(BGA)パッケージでも、形状を自動的に推測するようにしました。MITOUJTAG開発当初からの積年の課題がひとつ解決されました。
●デバイスを左右反転させて画面の端によせた場合、ピンが欠ける現象を修正した。
左右反転というのは、BottomViewとTopVireを切り替えるためにあるのですが、これをやって画面の端っこのほうにもっていくと、MITOUJTAG ProやLightでは、ピンが欠けてしまいます。
この問題を修正しました。
●ユーザが定義したBSDLファイルから取り込んだデバイスの情報をデータベースに登録できるようにした。
MITOUJTAG Lightでは、ユーザがBSDLファイルを集めてこなくてもいいように、あらかじめ4000種類くらいのデバイスのデータを登録しています。もし、ユーザが、このデータベースに入っていないデバイスのBSDLファイルを開いたら、それをデータベースに追加登録できるようにしました。(BASIC版、Pro版にはもともとあった機能です)
●プロジェクトに登録されているファイルのディレクトリの不具合を修正した。
これが一番大きな改善だったかもしれません。プログラムのいたるところで、絶対パスや相対パスの扱いを見直したので、かなりすんなりと動くようになりました。
●デバイスプログラミングに関するもの
お約束のSpartan-6対応のほか、Cyclone2、ACEX、FLEX10Kに対応しました。また、2009年製のXC9500にも書き込みできるようにしました。
●一部のUCFファイルで、ピン名が正常に読み込まれない不具合を修正した。
いままで、XILINXのUCFファイルを読み込むところに問題がありました。「ピン番号が行の最後にあって、ピン番号が"で囲まれていない場合」に、読み込めないというものでした。このようなUCFファイルは、PACEが自動的に生成したり、リファレンス・デザイン・ボードに含まれていることがありました。そのようなUCFファイルでも正常に読み込めるようにしました。
最後は、
●一部のBSDLファイルを読み込んだ際に、ハイインピーダンスにできないはずの 端子を操作できるように認識してしまう問題を修正した。
これまた一部のデバイス(SystemACEのTQ144など、かなりマイナー系のデバイスに偏っているが・・)で、ハイインピーダンスにできないはずの出力専用ピンが、ハイインピーダンスにできる端子であるかのように認識されていた問題を修正しました。
BSDLファイルを用いて読み込んだ場合は、この問題が起こらないように修正しました。
ディレクトリ関係のバグが解消されたことと、Spartan-6をはじめ新規デバイスに対応したことによって、かなり素直に動くようになりました。
ダウンロードページはこちらにございます。
http://www.tokudenkairo.co.jp/jtag/sp.html#light21
ますます進化したMITOUJTAGをご堪能ください。
最近のコメント