Перейти к содержанию
    

Когда использовать DMA и стоит ли оно того?

Проц у меня TMS320F28335

DMA никогда до этого не юзал, но как-бы не против ))

 

Особо жирных массивов данных копировать вроде не приходится:

1. Из ADC(по McBSP) в кольцевой буфер(160байт)

2. Далее из этого кольцевого буфера данные идут во входной буфер вокодера, там кодируются, в результате чего получаем 20байт которые идут по SCI наружу

И наоборот

1. По SCI приняли 20байт

2. Скопировали их во входной буфер декодера

3. Из выходного буфера декодера, пихаем в кольцевого буфер(160байт)

4. Из этого кольцевого буфера(по прерыванию) скармливаем отсчёты DAC'у

 

Вот по сути и все манипуляции.

Для быстрого копирования я набросал на асме функцию

_fstmemcpy:
    MOVL    XAR7,XAR5;теперь src в XAR7
    MOVL    XAR6,XAR4;dst в XAR6
    SUBB    ACC,#1;al=al-1
    RPT    AL
    ||PREAD *XAR6++,*XAR7 
    LRETR

Мне кажется, что ничего, кроме заморочек с программированием, от использования DMA я у себя в проекте не получу.

Но всё-же хотелось-бы услышать мнение спецов.

 

Единственное, что на мой взгляд можно было-бы как-то оптимизировать - так это пересылку на аудиокодек/с него. Но я пока толком не представляю как это сделать. Там что-то есть про пересылку на McBSP, но как быть с тем, что буфера кольцевые? DMA же может только копировать туда-сюда...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при размере 20+160+160+20 = 360ббайт в секунду, я бы даже не стал TMS320F28335 ставить...

 

разумеется нет смысла в ДМА если процессор простаивает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не так уж он и простаивает.

При выполнении из флэш - производительности для вокодера какраз впритык. Это учитывая то, что 5-7 критических функций вокодера реализованы на асме.

 

Ну и не в секунду, а в 20ms. Вокодер работает с фреймами в 20ms.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всё равно не стоит заморачиваться...

к примеру на задаче где на каждые 40мс приходит 10МБайт данных и их нужно проанализировать, закодировать и отправить, тогда ДА, при копировании DSP простивает чуть меньше чем копирует.

 

Хотя если поразвлекаться то кольцевой буфер можно было бы сделать и на ДМА + пересылку. Но всё равно при таких объемах это увеселительно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В техасовском стандартном DDK был приведён пример драйвера для посылки данных в вокодер через McBSP с использованием DMA. Но буфера там - куски DARAM памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...