2009年2月27日のブックマーク (1件)

  • すzのAVR研究: Linux CDC-ACM ドライバの性能

    いままで、AVR-CDC の性能を調べてきたが、Windows に比べて Linux が遅い場合が多かった。単に Linux のマシンのスペックが悪いからだと思っていたのだが、どうも違うらしい。 USB162 を動かしてみると、Windows に比べて Linux が圧倒的に遅い。どうもドライバの作り自体に問題がありそうだ。 ちょっと、Linux ドライバのソースを眺めてみた。 linux-2.4 ACM ドライバ urb というデータ構造を使って、I/O を行っている。その urb は read/write に1つづつアロケートし、バッファのサイズは エンドポイントの パケットサイズ。 要するに、read/write ともに 32バイト単位で I/O を行い、それらの I/O が完了しないと、次の I/O ができない。 USB は、1ms 毎に処理を行うようだ。そのようなデータ構造だと、

    banauo
    banauo 2009/02/27
    LinuxのCDCドライバチューニング。 CDCは使い勝手がいいと思うんだ。