問題タブ [dma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1205 参照

linux-kernel - X86プラットフォームでは、DMA操作はMMIOアドレススペースとシステムメモリアドレススペースの間でデータを移動することを意味しますか?

最新のX86/X86_64プラットフォームでは、MMIOメカニズムにより、DMA操作はMMIOアドレス空間とメモリアドレス空間の間でデータを移動しますか?dma_addr_tLinuxカーネルには、定義があることがわかります。このタイプはMMIOアドレスに使用されますか?

0 投票する
1 に答える
2087 参照

x86 - DMA コントローラで RAM メモリにアクセスする方法は?

フラッシュメモリからRAMにデータをコピーしたい。それで、DMAコントローラーでRAMの宛先メモリアドレスを設定して、そのチャネルを使用してソースアドレス(フラッシュメモリ内)からRAMメモリにデータをコピーできるようにするにはどうすればよいですか。

私は x86 arch でそれをやっていて、それは 8237 DMA です。

0 投票する
1 に答える
583 参照

linux-kernel - Linux で DMA にアクセスする方法

を実装する必要があるデバイス ドライバーを Linux で作成していますDMA

DMAへの呼び出しによってバッファを割り当てることができることは明らかですpci_alloc_consistent()。しかし、ユーザーレベルからこれらのバッファにコマンドを書き込むにはどうすればよいでしょうか?

タスクには特定のレジスタへの値の書き込みが含まれますが、これらはDMAコマンドを使用してどのように実装されますか?

0 投票する
1 に答える
3641 参照

linux - PCIE Linux カーネル ドライバーでのストリーミング DMA

Linuxカーネル用のFPGAドライバーに取り組んでいます。コードは x86 では問題なく動作するようですが、x86_64 ではいくつか問題があります。ストリーミング DMA を実装しました。だからそれは次のようになります

しかし、pci_map_sg返された のようなアドレスは0xbd285800によって整列されていPAGE_SIZEないため、最初のページ全体を送信できません。PCIE 仕様によると

「要求は、メモリ空間アクセスが 4 KB 境界を越える原因となるアドレス/長さの組み合わせを指定してはなりません。」

アラインされたアドレスを取得する方法はありますか、それとも重要なことを見逃しただけですか?

DMA のソースコード

0 投票する
2 に答える
369 参照

c - DMA ありまたは DMA なしで ARM9 s3c2440 のメモリにデータ フォーム io を転送する方法

IO からメモリに 8 ビットのパラレル データを転送したい。データは約 5 Mhz の速度で非常に高速に転送されます。どこから始めればよいか教えてください。データは ADC からのビデオ信号です。DMA を使用してこれを行うことができるとインターネットで読みましたが、開始が必要です ...

0 投票する
2 に答える
2092 参照

linux - Linux で 4 ~ 8 MB のアライメントされた DMA を割り当てる方法

私は Fedora 14 を使用しており、PCI スイッチ用のドライバーを構築しています。そのスイッチには、8MB の DMA メモリを割り当てる必要があります (2*4MB を処理できます) が、メモリ サイズに合わせる必要があります。たとえば、8MB の場合、ベース アドレスの最初の 23 ビットは 0 にする必要があります。

それ、どうやったら出来るの?

0 投票する
1 に答える
3466 参照

network-programming - マルチスレッドアプリケーションでのダイレクトメモリアクセス(DMA)スケジューリング

DMAを使用してネットワークI/O(インターネットを介した集中的なディスク読み取りと出力)を高速化したいと思います。各スレッドがDMA転送を発行するマルチスレッドアプリケーションがあるのだろうか?ディスクI / OとDMA転送はOSによってどのようにスケジュールされますか?

私が理解している限り、カーネルはユーザープログラムなしでディスクからRAMにデータの必要な部分をロードし、DMA転送を発行します。したがって、ディスクスケジューラはあまり役に立ちません(単一のカーネルプロセスのみが常にディスクにアクセスします)。また、メモリにロードされたデータに対してDMA転送をスケジュールするカーネル内機能があることを期待できますか?

0 投票する
1 に答える
1124 参照

linux - ユーザーメモリへの同時DMA

このことを考慮

ユーザープログラムのスレッド1:

ユーザープログラムのスレッド2:

ドライバーの読み取り:

7ページは両方の転送で使用されることに注意してください。これは大きな問題であり、データが不良になることがありました(0xeeは1つのbufの最後にあります)。明確にするために、2つの読み取りは異なるDMAチャネルで実行されるため、同時に実行できます。

私の解決策は、2つのドライバーDMAが同じページの一部を共有しないように、ユーザープログラムのバッファーをページアラインすることでした。

これに対する別の解決策があるのだろうか?また、なぜこれが大きな問題だったのか疑問に思います。

0 投票する
3 に答える
6106 参照

caching - DMAとキャッシュの違い

DMAとキャッシュを知っているほとんどの人にとっておそらくばかげた質問です...キャッシュはメモリをアクセスできる場所に近い場所に格納するので、I/Oにそれほど多くの時間を費やす必要はありません。

しかし、DMAはどうですか?それはあなたがより少ない遅延でそのメインメモリにアクセスすることを可能にしますか?

誰かが違い、両方、またはなぜ私が混乱しているのかを説明できますか?

0 投票する
3 に答える
28435 参照

c - mmap() がシーケンシャル IO よりも速いのはなぜですか?

重複の可能性:
mmap() と読み取りブロック

mmap()シーケンシャルIOよりも速いと聞きました(インターネットのどこかで読んだ) 。これは正しいです?はいの場合、なぜ速いのですか?

  • mmap()シーケンシャルに読み取っていません。
  • mmap()と同じようにディスク自体から取得するread()必要があります
  • マップされた領域はシーケンシャルではないため、DMA はありません (?)。

それで、実際にはファイルからmmap()よりも遅くなるはずですか?read()上記の私の仮定のどれが間違っていますか?