« WDMコントローラをリリースしました | トップページ | MITOUJTAGのページをリニューアルしています »

2009.05.03

Ajax版のMITOUJTAG開発つづき

今日はAjax版のMITOUJTAGの開発を続けています。
Webブラウザの中でMITOUJTAGが動くというものです。

ローカルPCの中ではInternetExplorerを立ち上げておいて、サーバから送られてきた指示にしたがってローカルPCのUSBにつながったJTAGケーブルの信号を操作します。各種シーケンスやJTAG信号の解釈等はすべてクラウドの中のサーバが行い、ローカルPCは画面の表示とJTAG信号の操作のみを行うという構想です。

これを開発するには、
・JavaScriptを使ってUSBの通信をし、JTAGを操作する
・サーバとクライアントPCがAjaxで通信して、JTAGの各種シーケンスやりとりする
・画面を動的に作成して、クライアントのPC上に描画する
という、課題があります。

まず、サーバとクライアントPCの中でJTAGの通信を行う件ですが、これは
 画面を開く
 →サーバ接続
 →JTAGデバイス検出
 →バウンダリスキャン SAMPLE
 →連続サンプリング・・・

という一連の操作がうまくいくようになりました。
Mja_1_2

JTAGケーブルには、トラ技78Kマイコンで作るUSB-JTAGを使っています。
まだグラフィカルな表示はできていなくて、ピンの状態をHやLの文字で表示するのみです。
サンプリング速度は、毎秒20回程度といったところでしょうか。サーバはインターネットの向こう側にあるので、10~数十msの遅延があるはずです。

描画のほうも少し手がけてみました。
サーバ上でGDやlibpngを動かしてPNGのファイルを動的に生成し、インターネット上で通信してみたところ、次のような絵を100枚送るのにだいたい5秒かかりました。
Mja_2
(この絵は乱数で適当に作ったもので、実際のデバイスのピンの状態を見ているものではありません。あくまでも画像生成と送信試験のためのものです。)

PNGファイルは圧縮がかかっているので、生成するのに意外と時間がかかるようです。しかし、圧縮のアルゴリズムはかなり賢いようで、見事に小さなファイルサイズにしれます。
サーバで圧縮して送るか、それとも圧縮せずに通信に負担をかけて大きなファイルを送るか、悩むところです。
とにかく、毎秒20回といったところでしょうか。

インターネット越しに、バウンダリスキャンと画面描画ができたので、これらをつなげれば、それなりに遊べるものが作れそうです。画面の更新速度がどの程度出るかは未知数で、今後の楽しみにとっておきます。

これが完成すれば、Webの画面を通じてCPLDやFPGAやROMに書き込みしたり、回路のデバッグできるようになります。日本中のいろんなところにいる人が、ネットを通じて1台の基板の動作を見ながらわいわいと意見を述べ合って、自分の回路を書き込んだりできるのって、素晴らしいと思いませんか?

今日分かってきたのは、意外とサーバに負荷がかかるということです。1台のサーバに10人くらいのユーザが同時ログインできるかと思ったのですが、実際はどうなるか、やってみないとなんともいえません。

この構想に基づくWebアプリケーションはIPAX2009に間に合わせたいと思っています。

|

« WDMコントローラをリリースしました | トップページ | MITOUJTAGのページをリニューアルしています »

コメント

いつも勉強させてもらってます.
アマチュアの通りすがりです.

最近,精力的に開発なさっておられるAjax版のJTAGですが,
実はあまり期待していません.

というのは,AjaxだとサーバとHTTPプロトコルで通信しなければ
ならないために,どうしても通信の遅延が起こるからです.
これは高速な回路の動作をスキャンする用途には致命的な可能性が
あります.また,今のところjavascriptにはIE向けのデバッグ環境
が存在せず,開発効率もかなり悪いです.他にも,javascriptは
ブラウザごとに実装が異なるため,複数ブラウザで動作する
アプリケーションを作成するのが大変だったり,そもそも
javascriptの動作速度が他の言語に比べてかなり遅かったりと,
自分としては,趣味ならいいけど仕事では絶対に触りたくない
言語の一つです.

ブラウザ上で動作するアプリケーションと言えば,javascriptの
他にもFlashやJava Appletなどがありますが,そちらを
選択しなかった理由は何でしょう?
Flashであれば,TCP通信を直に叩けるので速度の向上が見込めます.
また,ブラウザに組み込まれたFlashエンジン上で動作するので,
ブラウザが異なっても,同じ挙動をします.Flashはもともと
画像などのメディアを操作するために開発された言語なので,
今回のように最終的に画像を出力するアプリケーションには
向いているかもしれません.
Java Appletであればこれらに加えて,UDP通信ができるので,
さらなる動作の向上が見込めます.
こちらも画像などのメディアを扱うのは得意です.

どの環境でも,ローカルのファイルにアクセスできないため,
アプリケーションの設定などをユーザ毎に保存するためには,
サーバ側で処理してやる必要があることに注意してください.

水を指すようで悪いのですが,ちょっと気になったので
コメントしました.
ただのアマチュアの戯れ言です.もしかしたら,
私の知らないさらに良い方法があるのやも知れません.
長文になってしまい申し訳ありませんでした.

投稿: 通りすがり | 2009.05.16 11:48

長文のコメントありがとうございます

JavaScriptにはおっしゃるとおりのデメリットはございます。ただし、Java Appletはご承知のとおり流行しませんでした。Flashは動画再生やゲームなどによく使われておりますが、。
しかし、Google mapに代表されるように、やはりAjaxにはそれらを上回る魅力があるのでしょう。

スキャンの高速性を重視するならば、ブラウザの中で動く必要はありません。ローカルのアプリケーションにするか、ActiveXにすればよいのです。

通信の高速性よりも、Webページを開くだけで誰もが気軽にバウンダリスキャンを楽しめて、意見を交換できるような、そういう環境を作りたいと思っています。

投稿: なひたふ | 2009.05.21 11:33

コメントを書く



(ウェブ上には掲載しません)




« WDMコントローラをリリースしました | トップページ | MITOUJTAGのページをリニューアルしています »