1

組み込み機器のプログラミングは初めてです。DSPメモリアドレスからデータのブロックを読み取り、それを他のアドレス(他の周辺機器がマップされている場所)にコピーするタスクがあります。コピープロセスは、デバイスのDMAチャネルの1つをプログラムすることによって実行されます。最初のコピーに加えて、そのデータのコピーを他の場所にコピーしてもらいたいのですが。

ここで私の質問は、2番目のDMAチャネルを使用し、最初のDMAがジョブを開始した直後にそのコピー操作をトリガーした場合、2つのDMA操作が何らかの方法で互いに衝突するかどうかです。

4

1 に答える 1

4

確かに、これを何で行うかによって異なりますが、一方が他方をプリエンプトする可能性はありますが、DMAチャネルが「衝突」する可能性はほとんどありません。

Microchips dsPIC33Fデバイスの1つでこれを使用している場合、DMAのポイントは、アクセスがCPUから独立していることです。適切なタイミングで、DMAタイミングをクロックタイミングに一致させ、アトミック読み取りまたは書き込みを取得できます。また、優先順位が付けられた最大8つの単方向チャネルを持つことができます。

そのプラットフォームでは、2つのDMAチャネルが同時に動作するのではなく、特定のチャネルの優先度に基づいて次々に動作すると思います(わかりません)。優先度の低いチャネルが最初に開始された場合でも、優先度の高いチャネルが最初に終了します。

したがって、はい、CPUクロックを使い切ることなく、情報を2つの異なる場所にコピーできますが、2倍の時間がかかります。

于 2009-12-23T14:06:49.803 に答える