Beagleboard:如何向DSP发送数据/从DSP接收数据?

时间:2011-01-15 10:14:09

标签: image-processing arm signal-processing sendmessage beagleboard

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

  1. ARM从文件中读取图像并将图像放入2D数组中。
  2. 手臂将矩阵发送到DSP。 DSP接收矩阵。
  3. DSP对接收到的矩阵执行图像处理算法(算法代码使用大约5MB的动态分配内存)。
  4. DSP将处理后的图像(矩阵)发送给ARM。手臂接收矩阵。
  5. 手臂将处理过的图像保存到文件中。
  6. 我已经编写了步骤1,3,5的代码。执行步骤3 + 4(发送数据)的最简单方法是什么?欢迎使用代码示例。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

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

如果您想在BeagleBoard上尝试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