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

发布于 2024-10-12 07:14:20 字数 390 浏览 6 评论 0原文

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

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

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

I have a beagleboard with TMS320C64x+ DSP. I'm working on an image processing beagleboard application. Here's how it's going to work:

  1. The ARM reads an image from a file and puts the image in a 2D array.
  2. The arm sends the matrix to the DSP. The DSP receives the matrix.
  3. The DSP performs the image processing algorithm on the received matrix (the algorithm code uses about 5MB of dynamically allocated memory).
  4. The DSP sends the processed image (matrix) to the ARM. The arm receives the matrix.
  5. The arm saves the processed image to a file.

I'v already written the code for steps 1,3,5. What is the easiest way to do steps 3+4 (sending the data)? Code examples are welcome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

生寂 2024-10-19 07:14:20

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

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

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

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

The easiest way is to use shared memory:

Use the CMEM kernel module to allocate a chunk of memory on the ARM that can be accessed from ARM and DSP. Then pass the pointer down to the DSP using the DspBios NOTIFY component.

Once the DSP is done with processing you can notify the ARM via NOTIFY.

This way there is no need to copy the data from the ARM to the DSP or vice versa. All you have to make sure is, that the data comes from the CMEM component. This makes sure the memory is contiguous (the DSP does not know about the ARM memory manager).

庆幸我还是我 2024-10-19 07:14:20

共享内存是正确的方法,但学习如何做到这一点可能会很痛苦。 C6Run 工具可以为您抽象 ARM/DSP 通信,使其变得更容易。尽管 NOTIFY 确实是正确的 API,但 C6Run 使用旧 API 来利用 CMEM。

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

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

Shared memory is the right approach, but learning how to do it can be a pain. The C6Run tool can abstract the ARM/DSP communications for you making it easier. Although NOTIFY is really the right API to use, C6Run utilizes CMEM using an older API.

If you want to try C6Run out on the BeagleBoard, the easiest way is by following the instructions on the eLinux wiki for setting up C6Run for the ECE597 course given by Mark Yoder at Rose-Hulman. These instructions depend on running the Angstrom demo image(2). A stable version that was used to demonstrate functionality of the hardware is documented as well(3).

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文