6

私はbeagleboardとTMS320C64x + DSPを持っています。私は画像処理ビーグラーアプリケーションに取り組んでいます。Beagleboard:DSPとの間でデータを送受信するにはどうすればいいですか?

  1. ARMはファイルから画像を読み取り、画像を2次元配列に置きます。
  2. アームは行列をDSPに送ります。 DSPは行列を受信します。
  3. DSPは、受信した行列に対して画像処理アルゴリズムを実行します(アルゴリズムコードは約5MBの動的に割り当てられたメモリを使用します)。
  4. DSPは、処理された画像(マトリックス)をARMに送信します。アームはマトリックスを受け取ります。
  5. アームは処理されたイメージをファイルに保存します。

私は既にステップ1,3,5のコードを書いています。ステップ3 + 4(データ送信)を行う最も簡単な方法は何ですか?コード例は大歓迎です。

は、ARMとDSPからアクセス可能なアーム上にメモリのチャンクを割り当てるCMEMカーネルモジュールを使用する:

答えて

3

最も簡単な方法は、共有メモリを使用することです。その後、DspBios NOTIFYコンポーネントを使用して、ポインタをDSPに渡します。

DSPが処理されたら、NOTIFYを介してARMに通知できます。

このように、ARMからDSPへ、またはその逆にデータをコピーする必要はありません。確かめなければならないのは、データがCMEMコンポーネントから得られることだけです。これにより、メモリが連続していることが確認されます(DSPはARMメモリマネージャについて認識しません)。

2

共有メモリは適切なアプローチですが、それを行う方法を学ぶことは苦しいことがあります。 C6Runツールは、ARM/DSP通信を抽象化して、より使いやすくすることができます。 NOTIFYは本当に適切なAPIですが、C6Runは古いAPIを使用してCMEMを利用しています。

ビーグルボードでC6Runを試してみたい場合、最も簡単な方法はinstructions on the eLinux wiki for setting up C6Run for the ECE597 course given by Mark Yoder at Rose-Hulmanです。これらの手順は、Angstromデモイメージの実行に依存します(2)。ハードウェアの機能を実証するために使用された安定版も同様に文書化されています(3)。

(2):www.angstrom-distribution.org/demo/beagleboard (3):code.google.com/p/beagleboard/wiki/BeagleBoardDiagnosticsNext

関連する問題