Здравствуйте,
Плата EVMDM6437.Возможна ли организация четырех независимых каналов QDMA по схеме два ping-pong(а). Т.е. данные одновременно передаются по одной схеме пинг-понг из DDR2 в L2SRAM, там обрабатываются и по другой схеме пинг-понг возвращаются обратно в DDR2. На мой взгляд наиболее оптимальная по быстродействию организация получается.
Спасибо,Игорь.
А зачем вам использоваь 4-канала? Достаточно и двух для вашей задачи!
Не согласен.
Думаю, что наиболее оптимальный способ с точки зрения быстродействия, это использование DMA как для приходящих данных, так и для уходящих. Приход хорошо описан в примерах, но там использован ANY_CHANNEL. Хочу попробовать использовать конкретные каналы для приема и передачи данных. Оттестирую, напишу. Полагаю, результаты должны получится хорошие. По крайней мере, это логично. Вопрос только в загрузке процессора, из-за чего и возник этот пост. Кстати, АУ-АУ, где ответы спецов от ТИ?
1. А при чем при передаче данных по EDMA3 загрузка процессорра? Он нужен только для настройки параметров транзакции и для самого старта DMA пересылки.
2. Количество каналов для Ping-Pong схем может быть и не равным числу буферов. Можно использовать всего 1 канал. Для передачи с помощью одного канала используются свободные наборы PaRams (НЕ DMA - каналы)которые можно объединять вместе (linking and/or chaining). В описании на EDMA3 у TI есть вполне понятный пример. Примеры этого есть и в PSP.
3. Кстати мне приходилось использовать DMA передачи для приема-отправки данных на McBsp. Например для отправки данных на McBsp использовал один DMA канал переключаемый по соответствующему событию (event). Использовал ping-pong схему (4-буфера src, 1-буфер dst) и задействовал механизмы linking and chaining. Настраиваешь процессором параметры передачи и стартуешь и больше процессор не является причастым к этой DMA - пересылке. Все за него делает контроллер DMA.
при реализации схемы ping-pong для пути DDR2->L2SRAM->DDR2, скорее всего самым скоростным вариантом будет использование одного перестраиваемого канала DMA, который будет перетаскивать данные из DDR2->L2SRAM, а затем наоборот. Схему 4 буферов можно сохранить для удобства. Подтверждение - смотрите временные диаграммы работы процессора с DDR2. Хаотическое обращение к памяти чревато латэнтностью переключения, а как следствие уменьшение скорости обмена. (документ SPRU986B от TI)
С уважением Алексей.
Здравствуйте Alexey, использование одного DMA канала действительно возможно для пересылок больших кусков данных. А как поступать при непрерывном обмене данными с последовательным портом (McBsp). Например прием и одновременная передача данных. Ведь DMA - контроллер выполняет передачу по событиям, поступающих от McBsp (одно событие на каждый отсчет).
Представьте себе что во время того как вы переконфигуряете DMA для следующей передачи у вас случилось прерывание, которое переключит ресурсы процессора на выполнение задачи с более высоким приоритетом. В результате этого может нарушаеться непрерывность передачи приема данных по McBsp.
А если вы используете linking and chaining механизмы. То DMA контроллеру нет никакого дела что там делает процессор, а данные спокойно принимаются либо передаются в то время как проц занят чем то другим (кстати я использую пересылки McBsp->L1D, L1D->McBsp).
Что касается к примеру видеоданных, то такая схема использования одного канала для ping-pong пересылок возможна. Но из-за больших пачек данных можно немного забивать на задержки при обращении к DDR и использовать более одного канала для нескольких ping-pong схем. Я так делал в ряде видеокодеков и все работает очень неплохо.
Сдается мне, мы о разных вещах говорим. Правильно Аркадий говорит, речь идет о непрерывном объеме данных. Давайте не забывать, речь идет о видео. Т.е. 720*576*2*60=49.766.400 байт в секунду надо принять, обработать, сжать и передать. Причем судя по примерам, на сжатие по Н264 уходит более 50 процентов времени, времени на обработку остается с гулькин х., менее 7 мсек. За это время надо слить данные из DDR во внутреннюю, собрать необходимую статистику, на основе ее создать нужный алгоритм преобразования, опять слить данные из DDR (так как невозможно держать весь фрейм в памяти целиком), преобразовать данные, и закачать обратно в DDR, как фрейм. Затем сжать по кодеку Н264 и передать. Во, блин. Задача, как говорил Ленин, архисложная, с точки зрения быстродействия. Один канал, мне думается, не катит. Вот как его, ядрена мать, успеть все сделать. Нужна жесткая синхронизация всех этапов. Подскажите, может разбить на таски (отдельные задачи). Может, кто решал. Вот поэтому и необходима непрерывная передача данных туда и обратно с минимальнейшей задержкой. Аркадий, я неправильно выразился про загрузку процессора - это я имел ввиду. Вот и возникла идея - пинг-понг туда, пинг-понг обратно и почти одноврменно с задержкой на прием одного пинга(понга) на прием и обработку.
Any idea?
Спасибо, Игорь.
Для организации пинг-понга достаточно одного канала. Создаете две таблицы - одна для одного буфера и одна для другого. Линкуете их друг на друга и всё.
Один канал на прием и один на передачу получается.
Большое спасибо всем участвовавшим!
Игорь.
Igor при реализации кодеков, в том числе и h264, по моему лучше следовать XDAIS (xDM). А для DMA пересылок использовать ACPY3 (вроде он реализован с использованием QDMA). Реально меньше заморочек с особенностями EDMA3. В быстродейтсвии вы потеряете совсем чуть чуть, зато ваш кодек будет xDM compliant.
Кстати TI сменил свою политику отностиельно кодеков и они теперь открыты (в том числе .h264).
Аркадий, спасибо.
С ACPY3 пока не разбирался. Спасибо за наводку.
В отношении кодеков действительно царский подарок. Еще недавно стоили 20к$ за видео и звук и 10к$ за NDK. Вот только энкодера H264 для DM6437 я не нашел. Только evalution с логотипом. Декодер есть, а энкодера не знаю. Не подскажете?
Спасибо.
Для dm6437 h264 encoder без логотипа вроде нет, попробуйте обратиться в представительство, либо спросити у здешних представителей TI.
Спасибо за ответ.
ВСЕ СОДЕРЖИМОЕ И ВСЕ МАТЕРИАЛЫ ЭТОГО САЙТА ПРЕДОСТАВЛЯЮТСЯ "КАК ЕСТЬ". КОМПАНИЯ TI И ЕЕ СООТВЕТСТВУЮЩИЕ ПОСТАВЩИКИ НЕ ДЕЛАЮТ НИКАКИХ ЗАЯВЛЕНИЙ О ПРИГОДНОСТИ ЭТИХ МАТЕРИАЛОВ ДЛЯ КАКИХ-ЛИБО ЦЕЛЕЙ И ОТКАЗЫВАЮТСЯ ОТ ЛЮБОЙ ОТВЕТСТВЕННОСТИ В ОТНОШЕНИИ ЭТИХ МАТЕРИАЛОВ, ВКЛЮЧАЯ (НО НЕ ОГРАНИЧИВАЯСЬ) ВСЕ КОСВЕННЫЕ ГАРАНТИИ И УСЛОВИЯ О ПРИГОДНОСТИ ЭТИХ МАТЕРИАЛОВ ДЛЯ ПРОДАЖИ, ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ, ПРАВООСНОВАНИЕ И СОБЛЮДЕНИЕ ПРАВ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ ЛЮБОЙ ТРЕТЬЕЙ СТОРОНЫ. КОМПАНИЯ TI НЕ ПЕРЕДАЕТ НИКАКИХ ЛИЦЕНЗИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВОЗНИКАЮЩИХ В СИЛУ ЛИШЕНИЯ ПРАВ ВОЗРАЖЕНИЯ ИЛИ НА ИНЫХ ОСНОВАНИЯХ. ДЛЯ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИИ, РАЗМЕЩЕННОЙ НА ЭТОМ ВЕБ-САЙТЕ, МОЖЕТ ПОТРЕБОВАТЬСЯ ЛИЦЕНЗИЯ ОТ ТРЕТЬЕЙ СТОРОНЫ ИЛИ ОТ КОМПАНИИ TI. Содержимое этого сайта может содержать или подпадать под указания или ограничения на использование. Все постинги и использование содержимого этого сайта подпадают под Условия использования сайта; сторонние лица, использующие данное содержимое, соглашаются соблюдать любые ограничения или указания и соблюдать Условия использования сайта. Компания TI и ее поставщики оставляют за собой право делать исправления, удаления, изменения, доработки, улучшения и другие изменения содержимого и материалов, своей продукции, программ и услуг в любое время или удалять или прекращать публикацию (выпуск) любого содержимого, продукции, программ или услуг без уведомления.