組み込みLinuxで遅いUSB転送速度を診断するには?

組み込みLinuxで遅いUSB転送速度を診断するには?

私はARM CortexTM-A9 MPCore(シングルコア)を備えたCyclone V SEボードを持っています。このボードでは、BuildrootでビルドされたLinux 4.1.15を実行しています。 USBをテストすると、一括出力転送は約20 MB / sで実行され、大量転送は約10 MB / sで実行されます。この測定のために、デバイスではg_zeroを使用し、ホストでは単純なlibusbベースのプログラムを使用しました。

2番目の測定は、デバイス側でg_mass_storageを使用し、ホスト側でddを使用して実行されます。結果は同じです。

最後のテストは、ConfigFS、FunctionFS、およびRAMからデータを読み取るか、RAMに書き込むユーザー空間アプリケーションの組み合わせを使用して行われました。入力速度は10MB/s、出力速度は最大40MB/sです。速度はほぼ似ていると予想します(少なくともRAMを使用する場合)。

プロトコルで多くの内容を確認しました。簡単に言えばUSBそして、INがOUTよりはるかに遅い理由が何であるかはわかりません。

今、私はこの問題を引き起こすことができるものが多すぎることを知っており、「速度低下の原因は…」という答えを期待しません。しかし、これを追跡するには、どこを掘ってどのツールを使用する必要がありますか?

ベストアンサー1

私は遅い速度があなたが使用しているデバイスに固有のものだと思います。

フラッシュデバイスの特定の要件のためにUSBドングル(= Dを使用します)を使用するとします(私が知る限り、USBアダプタは簡単です)。フラッシュメモリ上部には、単純なブロックデバイスのように見える「翻訳ハードウェア」があります。このデバイスは、シングルビットでも書き込みのためにメモリブロック全体を消去しなければならなかったため、遅くなりました。また、USBフラッシュデバイスの特定のケースでは、速度が大きく違います。

今、あなたの質問に答えてみましょう。まず、私が使用しているデバイスの予想書き込み速度を確認します。次に、USB通信に使用できるDMAオプションがあることを確認するために、プロセッサのユーザーガイドとカーネルオプションを見てみましょう。

おすすめ記事