6

我有一个带有 TMS320C64x+ DSP的beagleboard 。我正在开发一个图像处理 beagleboard 应用程序。以下是它的工作原理:

  1. ARM 从文件中读取图像并将图像放入 2D 数组中。
  2. 手臂将矩阵发送到 DSP。DSP 接收矩阵。
  3. DSP 对接收到的矩阵执行图像处理算法(算法代码使用大约 5MB 的动态分配内存)。
  4. DSP 将处理后的图像(矩阵)发送到 ARM。手臂接收矩阵。
  5. 手臂将处理后的图像保存到文件中。

我已经编写了步骤 1、3、5 的代码。执行步骤 3+4(发送数据)的最简单方法是什么?欢迎使用代码示例。

4

2 回答 2

3

最简单的方法是使用共享内存:

使用 CMEM 内核模块在 ARM 上分配一块可以从 ARM 和 DSP 访问的内存。然后使用 DspBios NOTIFY 组件将指针向下传递给 DSP。

DSP 完成处理后,您可以通过 NOTIFY 通知 ARM。

这样就无需将数据从 ARM 复制到 DSP,反之亦然。您只需确保数据来自 CMEM 组件。这确保了内存是连续的(DSP 不知道 ARM 内存管理器)。

于 2011-01-15T14:55:22.577 回答
2

共享内存是正确的方法,但学习如何去做可能会很痛苦。C6Run 工具可以为您抽象 ARM/DSP 通信,使其更容易。虽然 NOTIFY 确实是使用正确的 API,但 C6Run 使用 CMEM 使用较旧的 API。

如果您想在 BeagleBoard 上尝试 C6Run,最简单的方法是按照eLinux wiki 上的说明为 Rose-Hulman 的 Mark Yoder 提供的 ECE597 课程设置 C6Run。这些说明取决于运行 Angstrom 演示映像 (2)。还记录了用于演示硬件功能的稳定版本 (3)。

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

于 2011-01-17T19:48:26.417 回答