встроенная система: чтение одного и того же блока памяти с двумя разными DMA

Я новичок в программировании встроенных устройств. У меня есть задача, которая считывает блок данных из адреса памяти DSP и копирует его на другие адреса (где отображаются другие периферийные устройства). процесс копирования осуществляется путем программирования одного из каналов DMA в устройстве. Я хотел бы, чтобы копия этих данных была скопирована в другом месте в дополнение к первой копии.

теперь мой вопрос: если я использую второй канал DMA и запускаю его операцию копирования сразу после того, как первый DMA начинает выполнять свою работу, будут ли две операции DMA каким-то образом конфликтовать друг с другом?


person Eli    schedule 23.12.2009    source источник
comment
какой DSP вы используете? я подозреваю, что ответ зависит от цели...   -  person Adrien Plisson    schedule 23.12.2009


Ответы (1)


Зависит, я уверен, от того, что вы делаете, но нет, каналы DMA вряд ли будут «сталкиваться», хотя один может вытеснить другой.

Если вы используете это на одном из устройств Microchips dsPIC33F, точка прямого доступа к памяти заключается в том, что доступ не зависит от процессора. Если вы правильно рассчитаете время, то сможете сопоставить синхронизацию DMA с синхронизацией часов и получить атомарное чтение или запись. Кроме того, у вас может быть до 8 однонаправленных каналов, упорядоченных по приоритету.

На этой платформе, я полагаю (я не знаю), что два канала DMA не будут работать одновременно, они будут работать один за другим, исходя из приоритета этих конкретных каналов. Канал с более высоким приоритетом завершится первым, даже если первым начнется канал с более низким приоритетом.

Итак, да, вы можете скопировать свою информацию в два разных места, не используя тактовые частоты ЦП, но это займет в два раза больше времени.

person ArielP    schedule 23.12.2009