sigmaN 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба Проц у меня 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 же может только копировать туда-сюда... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rokhan 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба при размере 20+160+160+20 = 360ббайт в секунду, я бы даже не стал TMS320F28335 ставить... разумеется нет смысла в ДМА если процессор простаивает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба Ну не так уж он и простаивает. При выполнении из флэш - производительности для вокодера какраз впритык. Это учитывая то, что 5-7 критических функций вокодера реализованы на асме. Ну и не в секунду, а в 20ms. Вокодер работает с фреймами в 20ms. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rokhan 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба всё равно не стоит заморачиваться... к примеру на задаче где на каждые 40мс приходит 10МБайт данных и их нужно проанализировать, закодировать и отправить, тогда ДА, при копировании DSP простивает чуть меньше чем копирует. Хотя если поразвлекаться то кольцевой буфер можно было бы сделать и на ДМА + пересылку. Но всё равно при таких объемах это увеселительно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба Ну так я и думал. :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evg123 0 22 декабря, 2008 Опубликовано 22 декабря, 2008 · Жалоба В техасовском стандартном DDK был приведён пример драйвера для посылки данных в вокодер через McBSP с использованием DMA. Но буфера там - куски DARAM памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться