6

私はTMS320C64x + DSP を搭載したビーグルボードを持っています。私は画像処理ビーグルボードアプリケーションに取り組んでいます。仕組みは次のとおりです。

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

手順 1、3、5 のコードは既に作成しています。ステップ 3 + 4 (データの送信) を実行する最も簡単な方法は何ですか? コード例は大歓迎です。

4

2 に答える 2

3

最も簡単な方法は、共有メモリを使用することです。

CMEM カーネル モジュールを使用して、ARM および DSP からアクセスできるメモリのチャンクを ARM に割り当てます。次に、DspBios NOTIFY コンポーネントを使用してポインターを DSP に渡します。

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

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

于 2011-01-15T14:55:22.577 に答える
2

共有メモリは正しいアプローチですが、その方法を学ぶのは大変です。C6Run ツールは、ARM/DSP 通信を抽象化して簡単にすることができます。NOTIFY は実際に使用するのに適切な API ですが、C6Run は古い API を使用して CMEM を利用します。

BeagleBoard で C6Run を試してみたい場合、最も簡単な方法は、Rose-Hulman の Mark Yoder が提供する ECE597 コース用に C6Run をセットアップするための eLinux wiki の指示に従うことです。これらの手順は、Angstrom デモ イメージの実行に依存します(2)。ハードウェアの機能を実証するために使用された安定バージョンも文書化されています(3)。

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

于 2011-01-17T19:48:26.417 に答える