ラベル Network の投稿を表示しています。 すべての投稿を表示
ラベル Network の投稿を表示しています。 すべての投稿を表示

2019年8月16日金曜日

JVS I/O Monitor

しばらく前に海外からionaでマルチクライアントに対応できないかって相談があって。JVSIOってUSBケーブルでSCSIみたいにデイジーチェーン接続できる仕様なんですよね。今作ってる基板的には1台で2P対応できるし、特に必要な機能ってわけじゃないんだけど、コントローラ以外に特殊なI/Oが必要な時もあるかな、って。ソース状は対応しておいて、しばらくテストせずにいたわけですが、SEGA I/Oを1台目、ionaを2台目って構成ならすぐテストできる。というか、ionaの後ろに別のデバイスを接続するのはMP01-IONA-JSを使う限り口がないからできないんですが、こっちならできちゃう。そうなると動作確認はしておかないとまずいかな、と。

で、確認したら2台ともnaomiには認識されて、個別にアドレスは振られた模様。でもなぜかSEGA I/Oはアドレス持って認識されてはいるもののIDも空だし入力も送信できてない。なんか動作してないっぽい感じ。下流にいるionaはきっちり動作してるので電気的な問題じゃなさそう。となるとSEGA I/Oがなんらかの自粛モードに入ってるのか、ionaが通信を邪魔しちゃってるのか。これを調べるとなるとプロトコルアナライザーが必要だなー、と。

そこで作ることにしたのがJVS I/O Monitor。基本、D+に流れる信号をモニタしてやれば良いので難しくはありません。

こいつの出番

去年作った基板を使えばSTM32を使ってお手軽にUSBデバイスが作れますので、D+をモニタして解析した通信内容をログとしてUSBシリアルとしてホストに流してやるデバイスを検討。一晩もあれば作れるだろう……と思っていたのですが。

トラブルいっぱい。

USB側は慣れてたけど、USARTの扱いが色々といけてない。ログ解析をしながらUSBでデータを流しだし、USARTを取りこぼしなく処理する、というのはどうやら無理っぽいです。




という事で悲鳴の声。どうにも処理が安定しないので、デバイス側はログ収集に専念させ、ホスト側で解析をするよう方針を変えました。で、どうせホストでやるならWireshark使うよね?って事でざっくり調べてできそうな事を確認、方針を固めました。



しかしまた、いっきに遠回りに……。ホスト側の処理は正確にはシリアルから読んだ物をpcap形式にして名前付きパイプに書き込むって物でした。Wiresharkはデバイスだけじゃなくパイプを開いてログとる事もできるんですね。Linuxのシリアルも罠いっぱいで初めての人は色々とハマる(主にmodem周りのdaemonさんがATコマンド勝手に投げつけたり、ttyをrawにしなきゃいけなかったり)んだけど、それはまた別の話。慣れないLuaとドキュメント足りてないWiresharkのAPIと戦う事数日、なんとか動くようになるも、なんかまだ取りこぼしがある。リクエストの後にUSBにデータ送り出すと常にレスポンスのデータ間に合わずに見逃してる感じ。



って事でファームウェアをもう少し頑張るわけだけど……なんで取りこぼしなくデータ読むためだけに「俺SUGEEEE」みたいなバッファ回すコードかかなきゃならんのか。

そうこうしてるうちにLuaも少しはわかって来たので全体を少し手直し。綺麗になったのか良くわからないけど、まぁいっか。って事でようやくテスト環境が整ったのでした。


こんな感じに通信内容が赤裸々になってしまうSEGA I/Oさんなのでした。


例によって色々とこちらに。

2012年6月3日日曜日

ネットワーク関連の本、下から上まで


最近、面白そうなネットワーク本を見つけたので、それを含めて蔵書の紹介。どれも名著と呼ばれるものばかりのはずです。ただ、書いてみて気づいたんだけど、ここで一番上のレイヤーって言ってる本ですら、今時のほとんどの人にとっては目に触れる事のない最下層レイヤーかも・・・。それでも気になるって人だけ読んでください。

Principles and Practices of Interconnection Networks

京のネットワークコントローラを設計する際に散々お世話になった教科書。ルーティング、フロー制御、トポロジについて論理からハードウェア設計まで丁寧に説明されています。シミュレーションによる性能評価のノウハウも書かれてるので、この分野(インターコネクトアーキテクチャ)で研究しようと思ったら、これ一冊読むだけでスタート地点まで行けます。

Interconnections

古本が安く出てたので気になって購入。まだ読んでないんだけど、ハードウェアとIPの間を埋めてくれそう。ようするに、ひたすらL2中心の分厚い書籍(笑)。この本でようやく上から下まで繋がる気がします。

詳細TCP/IP (TCP/IP Illustrated, Volume 1: The Protocols)

日本語だと初版しか出てないのかな。SOFTBANK BOOKS版とピアソンの新装版があって、僕は古いSOFTBANK BOOKS版の頃に買って読みました。TCP/IPの基礎がすべて詰まっていて、ソフトの人が必要になるであろう知識としては一番下のレイヤーから書かれてます。たぶん、自作ウェブブラウザーを開発しようと思って買ったんじゃなかったかなぁ? 1997年です・・・。
有名なプロトコルについては簡単に説明が書いてあるのでRFC読むのが面倒な時とか、時々振り返って読んでます。会社の人に2版を進められてるので、そのうち買うかも。現在僕にとって一番勉強しておかないといけないレイヤー。

マスタリングTCP/IP SSL/TLS編

仕事でWebSocketに携わることになって。SPDYとの関係もあったのでSSLの理解は避けて通れない予感がして覚悟を決めて読んだ一冊。すべてを理解したとは言い難いかもしれないけど、だいぶ見通しは良くなったかな。なんだかんだでSSL周りのコードをいじる事もあるんですよね。上記TCP/IP本のセキュリティに関する補遺的な位置づけで読むべき本です。

UNIXネットワークプログラミング第2版 Vol.1 ネットワークAPI: ソケットとXTI

10年以上前に働いてた会社で初版を読みました。当時は会社で唯一のWindowsプログラマだった事もあり、WinSock2の本も読んでましたけど・・・あまり覚えてないなぁ。で、会社を辞めて大学に戻ってから、手元にも一冊ないと不便だなぁ・・・と買ったのが第2版。なので、結構読んでないところもあります。
ソフトウェア屋さんにとっては上の2冊が理論で、この本が実践。やっぱりソフトの方がハードより勉強する事多いのかなぁ。