Beagleboard: Как я могу отправлять/получать данные в/из DSP?

У меня есть beagleboard с TMS320C64x+ DSP. Я работаю над приложением для обработки изображений. Вот как это будет работать:

  1. ARM считывает изображение из файла и помещает изображение в двумерный массив.
  2. Рука отправляет матрицу в DSP. DSP получает матрицу.
  3. DSP выполняет алгоритм обработки изображения на полученной матрице (код алгоритма использует около 5 МБ динамически выделяемой памяти).
  4. DSP отправляет обработанное изображение (матрицу) на ARM. Рука получает матрицу.
  5. Рука сохраняет обработанное изображение в файл.

Я уже написал код для шагов 1,3,5. Как проще всего выполнить шаги 3+4 (отправка данных)? Примеры кода приветствуются.


person snakile    schedule 15.01.2011    source источник


Ответы (2)


Самый простой способ — использовать разделяемую память:

Используйте модуль ядра CMEM, чтобы выделить часть памяти на ARM, к которой можно получить доступ из ARM и DSP. Затем передайте указатель DSP с помощью компонента DspBios NOTIFY.

Как только DSP завершит обработку, вы можете уведомить ARM через NOTIFY.

Таким образом, нет необходимости копировать данные из ARM в DSP или наоборот. Все, что вам нужно сделать, это убедиться, что данные поступают из компонента CMEM. Это гарантирует, что память непрерывна (DSP не знает о диспетчере памяти ARM).

person Nils Pipenbrinck    schedule 15.01.2011

Общая память — правильный подход, но научиться этому может быть непросто. Инструмент C6Run может абстрагировать связь ARM/DSP, упрощая ее. Хотя NOTIFY действительно является правильным API для использования, C6Run использует CMEM, используя более старый API.

Если вы хотите попробовать C6Run на BeagleBoard, проще всего следовать инструкциям на вики eLinux по настройке C6Run для BeagleBoard. Курс ECE597, проведенный Марком Йодером в Rose-Hulman. Эти инструкции зависят от запуска демонстрационного образа Angstrom(2). Также задокументирована стабильная версия, которая использовалась для демонстрации функциональности оборудования(3).

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

person Jason Kridner    schedule 17.01.2011