DASM 0 16 апреля, 2019 Опубликовано 16 апреля, 2019 · Жалоба Собсно и весь вопрос. без прерываний на каждое слово или разборкой ручками. Чет ни настроек ни у дма ни у спорта не нашел Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 53 16 апреля, 2019 Опубликовано 16 апреля, 2019 · Жалоба в DMA 2D по X выставить инкремент N (размер буфера, ну или расстояние между началами буферов, если они не подряд) и количество 2, а по Y поставить инкремент 1-N, он тогда будет туда-сюда скакать раскладывая данные в два буфера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба Осталось найти в adsp21489 dma2d :( Кажется про BF я зря спросил. Вырезали это Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 53 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба ну не знаю тогда, натравить ещё один dma чтобы четные/нечетные данные раскидал по разным буферам из одного? а вообще чем плохо, что данные перемешанные в буфере лежат? брать их с инкрементом адреса 2 с четного/нечетного адреса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба так все библиотеки на асме под fft заточены на рядом лежащие данные, я их на асме пока что точно переписывать не осилю Eще один дма не выйдет, в адсп вообще не понял что с дма типа память-память, она вроде есть, но какая-то на 64 бита(!) зачем нужна непонятно. Видимо можно сделать массив дескрипторов для chain dma, каждый дескриптор описывает прием двух слов с инкреметом адреса на разницу адресов буферов, и он же указывает на следующий дескпитор, где то же самое, но адреса следущие и так далее, если сделаю к примеру 64 таких дескриптора, то 64 выборки стерео оно сделает, потом прерывание и корректировать дескрипторы. Ужас какой-то если честно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 53 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба тогда проще, наверное, распараллелить приём на два (две половины) порта, и настроить синхронизацию так, чтобы один хватал только левые, а другой - только правые данные. ну и ещё там у контроллера внешней памяти dma вроде умеет данные собирать/разбирать как попало. так что если протащить через буфер во внешней памяти, можно и силами дма управиться, без создания дескрипторов на каждый сэмпл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 1 hour ago, _pv said: тогда проще, наверное, распараллелить приём на два (две половины) порта, и настроить синхронизацию так, чтобы один хватал только левые, а другой - только правые данные. ну и ещё там у контроллера внешней памяти dma вроде умеет данные собирать/разбирать как попало. так что если протащить через буфер во внешней памяти, можно и силами дма управиться, без создания дескрипторов на каждый сэмпл. так мне же еще и передача, с теми же проблемами. Не, похоже куча дескрипторов только вариант. Ну конечно можно и вовсе по перываниям на каждое слово, но это уже атас. Чего то они там недоработали походу с железом этого Шарка Синхронизацию то куда настраивать, в режиме i2S там настраивать нечего, большинство хитрых битиков в нем ставятся сами и менять их нельзя (бесмысленно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 4 часа назад, DASM сказал: Видимо можно сделать массив дескрипторов для chain dma, каждый дескриптор описывает прием двух слов с инкреметом адреса на разницу адресов буферов, и он же указывает на следующий дескпитор, где то же самое, но адреса следущие и так далее, если сделаю к примеру 64 таких дескриптора, то 64 выборки стерео оно сделает, потом прерывание и корректировать дескрипторы. Ужас какой-то если честно. Зачем так делать? И какой от этого выигрыш? Проще по завершению приёма блока войти в прерывание и переложить данные программно как надо во всём блоке сразу. А лучше - изучить асм и допилить библиотеки, если уж они на асме. 1 час назад, DASM сказал: Ну конечно можно и вовсе по перываниям на каждое слово, но это уже атас. О таком ногодрыжном варианте лучше забывать сразу как слезли со всяких AVR. А тем более если взялись за DSP. На котором один только вход/выход в/из ISR может занимать столько же времени, сколько программная сортировка всего блока. Ну или выкинуть шарк, взять например C6745 (который вы активно обсуждали) - его EDMA3 умеет 3х-мерные пересылки, и разложить такие данные как надо - не составит труда на нём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 2 minutes ago, jcxz said: Зачем так делать? И какой от этого выигрыш? Проще по завершению приёма блока войти в прерывание и переложить данные программно как надо во всём блоке сразу. А лучше - изучить асм и допилить библиотеки, если уж они на асме. 2 minutes ago, jcxz said: А лучше - изучить асм У меня время стоит значительно дороже, чем изучение асма ADSP. И хоть проект и хоббийный, я предпочитаю тратить его на "вечное", то бишь на свертки, фурье лапласы и прочее, а мне мнемоники отдельно взятых процессоров о которых потом никто не вспомнит. А еще похоже проще взять нормальный проц о 8 ядрах и парой гигагерц, и на сях можно тогда свертки считать с той же производительностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 53 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 1 hour ago, DASM said: так мне же еще и передача, с теми же проблемами. Не, похоже куча дескрипторов только вариант. Ну конечно можно и вовсе по перываниям на каждое слово, но это уже атас. Чего то они там недоработали походу с железом этого Шарка Синхронизацию то куда настраивать, в режиме i2S там настраивать нечего, большинство хитрых битиков в нем ставятся сами и менять их нельзя (бесмысленно) у шарка там этих спортов, как говна за баней, 8(16) штук (половинок), ну займёте 2(4) для нормального двунаправленного общения с кодеком. я не знаю что там у вас за кодек, но насколько понимаю в multichannel режиме sport умеет брать только данные с определённым оффсетом от начала синхронизации. с передачей, правда, может оказаться сложнее, просто так запараллелить возможно не получится. так что либо руками массив перелопачивайте, тоже не велика потеря, полтакта/такт на отсчёт потратить. либо отправьте во внешнюю память, там scatter/gather DMA вроде умеет, но имхо быстрее будет руками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 10 minutes ago, _pv said: у шарка там этих спортов, как говна за баней, 8(16) штук (половинок), ну займёте 2(4) для нормального двунаправленного общения с кодеком. я не знаю что там у вас за кодек, но насколько понимаю в multichannel режиме sport умеет брать только данные с определённым оффсетом от начала синхронизации. с передачей, правда, может оказаться сложнее, просто так запараллелить возможно не получится. так что либо руками массив перелопачивайте, тоже не велика потеря, полтакта/такт на отсчёт потратить. либо отправьте во внешнюю память, там scatter/gather DMA вроде умеет, но имхо быстрее будет руками. самый обычный аудиофильский PCM1798 DAC и такие же АЦП той же конторы. Плата у меня 6 OUT 4 IN так что уже сложнее. О запараллеливании думал, и тоже споткнулся с передачей. А что со scatter ? Там в даташите вообще очень мало о Mem2Mem DMA - два канала, никакого скаттера и вообще о 64 битах речь. Придется видимо все же массивом дескрипторов, это мне видится минимально элегантным в разрезе такого корявства железа. Дергать проц на каждые две выборки в прерывании нафик нафик. Разбирать весь массив - ну тоже вариант, но хочется хоть такое ДМА задействовать. Они по-моему проц делали для обработки многоканальных телефонных линий с TDM каналами, все эти стерео им пофигу. "в multichannel режиме " да этот i2S хитровыпендриный смещением на один клок данных относительно FS - похоже не получится из других режимов его сэмулировать. Было бы с нуля все - я лучше б Техасовски 6745 поставил, но у меня готовая хорошая плата с отличной аудиобвязкой уже есть, и с АДСП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 17 апреля, 2019 Опубликовано 17 апреля, 2019 (изменено) · Жалоба У меня была аналогичная проблема с I2S на McASP в C6745. Нужно было избавиться от 32-битных пересылок - просто оттюнинговал оффсет в EDMA3 на значение =2 вместо 4, в итоге DMA стал отправлять в порт McASP 16-битные данные. Затем я избавился от второго канала и превратил I2S в I1S (просто надо MONO было, а не Stereo) - задал только один тайм-слот. Теперь память на второй канал не расходуется и он молчит (что и требовалось). EDMA3 настроил так: первое измерение ACNT=2 или 4 (размер семпла в байтах), второе измерение BCNT=64 (максимальный размер Audio FIFO), и наконец третье измерение = число кусков Audio FIFO в семплах. Качает до 16 МБ памяти в звук разом! В прерывании по окончанию DMA пересылки перезагружаю дескрипторы EDMA (PaRAM). Всё! Такого замечательного DMA я ещё нигде не встречал! АRМ-ы со своими 64K-DMA давятся в сторонке! =) Да, пришлось потрахаться с мануалами, порой даже на другие процессоры этого семейства, читать e2e, форумы, пережевывать китайские исходники, и.т.п. За 4 дня разобрался Изменено 17 апреля, 2019 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 53 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 1 hour ago, DASM said: А что со scatter ? Там в даташите вообще очень мало о Mem2Mem DMA - два канала, никакого скаттера и вообще о 64 битах речь. Разбирать весь массив - ну тоже вариант, но хочется хоть такое ДМА задействовать. Не, не отдельный мем2мем, а тот дма который в external port (стр. 4-125), он во внешнюю память вроде умеет читать/писать с какими попало смещениями. Но я мануал сильно по диагонали поглядел, просто интересно стало чем отличаются. А для обычного дма массивы дескрипторов под каждый отсчёт заготавливать дольше будете, что просто по всем данным пройтись и четные/нечетные данные в отдельные буфера раскидать. Да и памяти это сожрёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 17 апреля, 2019 Опубликовано 17 апреля, 2019 · Жалоба 5 hours ago, __inline__ said: У меня была аналогичная проблема с I2S на McASP в C6745. Нужно было избавиться от 32-битных пересылок - просто оттюнинговал оффсет в EDMA3 на значение =2 вместо 4, в итоге DMA стал отправлять в порт McASP 16-битные данные. Затем я избавился от второго канала и превратил I2S в I1S (просто надо MONO было, а не Stereo) - задал только один тайм-слот. Теперь память на второй канал не расходуется и он молчит (что и требовалось). EDMA3 настроил так: первое измерение ACNT=2 или 4 (размер семпла в байтах), второе измерение BCNT=64 (максимальный размер Audio FIFO), и наконец третье измерение = число кусков Audio FIFO в семплах. Качает до 16 МБ памяти в звук разом! В прерывании по окончанию DMA пересылки перезагружаю дескрипторы EDMA (PaRAM). Всё! Такого замечательного DMA я ещё нигде не встречал! АRМ-ы со своими 64K-DMA давятся в сторонке! =) Да, пришлось потрахаться с мануалами, порой даже на другие процессоры этого семейства, читать e2e, форумы, пережевывать китайские исходники, и.т.п. За 4 дня разобрался У всех свои заморочки. У ADI есть нелохая Sigma Studio, графический редактор звуковых систем для их серии ADAU dsp, adsp21489 тоже туда цепляется. У техаса такого нет. Зато есть крайне сомнительная политика снимать с производства интересные вещи, с омар уже так пролетел, sitara туда же, msp ходячее недоразумение итп. Но с ADI тож как то невесело вышло. Ну ладно, проблему то я решу, просто как то чувство прекрасного страдает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба 6 hours ago, DASM said: Зато есть крайне сомнительная политика снимать с производства интересные вещи А не пофиг ли, если для хобби (насколько я понял из этой темы "про вечное")? sitara туда же Честно говоря, мне непонятна озабоченность техасцев индусской стилистикой - в техподдержке у них почти все индусы. Вот докатились, что имена процессорам тоже дают индусские. У меня при слове "sitara" вот такая картинка в голове сразу рисуется: Эдакий, гуру микроконтроллеров, освоивший ситары ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться