EM-ONE: 自作USBドライバ
EM-ONE用のUSBドライバは、既に存在しています。
http://sourceforge.jp/projects/emoneusbmac/
USBで使う時にはこれを使わせていただいていたのですが
Windows版と比べてパフォーマンスが出ないのが悩みでして
BTと比べてもあまり違いがない。
せっかく線で繋いでるのだから、もっと出ないものか、と煩悶しました。
ただこちらのリポジトリにはソースコードがなく、Macで使えそうな
USBスニッファもよく解らないということで、Windows上でUSBドライバの挙動を追っていたのですが
これならなんとか作れそうだということで、自分でW-ZERO3のドライバをベースに書き換え
テストをしてみました。
結論は
Windows版でも1.2Mbpsを大きく超える値は見たことがないです。
何か間違っているんじゃないかと疑う程。
(emobileの名誉のために言っておくとCFスロット版は普通に出てるそうです)
まだ調整中なので細かい値は書けませんが、パフォーマンスが出ない第一の理由は
(endpoint毎のパイプの設定が違うとかではなくて)
どうやらカーネルにmapするバッファのサイズではないかと思っています。
そこを調整したらこのスピードが出るようになりました。
これが小さすぎると割り込みが激しくなり、CPUも食うしパフォーマンスも出ないという
悲劇的な事態を起こすのでしょう。
darwinのことは良く知らないのですけどページサイズ(おそらく64KBくらい?)を
超えるような設定しても副作用があるのかないのかが気になるところ。
まぁ、カーネルモジュールとして常駐する以上、小さければ小さいほうがいいのでしょうけど
極端に小さくてもメモリ管理的には影響がないでしょうから、
ページを超えないギリギリが望ましいのではないかと。
とはいえ他にロードしたいカーネルモジュールがあるわけではないので、パフォーマンス優先で
試しております。
しかしながらさすがに、このタイミングで妙なカーネルモジュールを配ってしまうのは
後々恐ろしいものがあるので、今回は「一報」ということで。
(emoneusbmacプロジェクトの方、もしこちらに気付かれましたらsourceforgeにソースを上げていただけると
非常に嬉しいです)
とりあえず、Macで使える良いUSBスニッファって何かないものですかねぇ。