реклама на сайте
подробности

 
 
> NXP LPC1778 GPDMA. Проблемы при паралеллельных DMA-транзакциях
jcxz
сообщение Aug 24 2012, 04:13
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Кто-нить работал на LPC1778 с GPDMA параллельно по нескольким каналам (т.е. - одновременно с наложением по времени на разных каналах с разной периферией)?
Такая проблема:
Имеем перекрывающуюся по времени работу по двум SSP-каналам через GPDMA (4 канала - 2TX, 2RX).
Если транзакции по времени не перекрываются - всё работает нормально.
Если происходит наложение (любого типа - или при работающем первом SSP-канале происходит запуск 2-го или при работающем втором - запуск первого, ожидаемое завершение 1го раньше чем 2-го или наоборот - позже), то работа SSP для, которого используются DMA-каналы с меньшим номером завершается нормально (приходит end-interrupt), работа SSP который использует большие номера DMA-каналов останавливается (в битовом поле работающих DMA-каналов, тот канал (RX-канал), по которому ожидается приход события завершения, застревает навечно в состоянии "active"). Соответственно не приходит прерывание о завершении и в регистре DMA.IntTCStat == 0).
Если обменять используемые SSP-каналами DMA-каналы местами, то проблема начинается на другом SSP-канале - всегда отваливается тот, у которого номера используемых DMA-каналов меньше.
Т.е. - как будто любая активность по DMA-каналу с меньшим номером останавливает или целиком работу более старших каналов DMA или останавливает приход end-interrupt по старшим каналам.

Просмотрел еррату - там пусто на этот счёт.
Или может кто сталкивался с подобным на предыдущих LPC17xx?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axel
сообщение Aug 25 2012, 05:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Интересно, поскольку ситуация актуальная... Пытаюсь найти логику, но не получается. Это я ее не вижу, или это натуральный бубен?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 30 2012, 05:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Похоже рано радовался sad.gif((
Вышеописанная проблема решилась, но всё равно перекрывающиеся DMA-транзакции работают нестабильно (если два SSP-канала работают по GPDMA).
В какой-то момент времени при очередном наложении транзакций с двух SSP происходит сбой. Выражается это в порче передаваемых данных. Т.е. - читаю блоки данных по двум SSP с перекрытием по времени и в какой-то момент времени в одной из транзакций получаю искажённые данные, причём после этого не приходит прерывание завершения по более низкоприоритетному из работающих DMA-каналов.
Такое ощущение, что более приоритетный DMA-канал перехватывает запрос от низкоприоритетного DMA-канала (от другого SSP) и выполняет его, передавая или принимая данные к чужому или от чужого SSP.
Бред полный.....

Кто-нить вообще работал на LPC17xx с перекрывающимися по времени GPDMA-транзакциями работающими с разной периферией?
Именно _с_разной_, 2 DMA-канала для одного SSP (ввод/вывод) работают прекрасно. А вот когда их уже 4......

Перепробовал уже всё что возможно (частоты SSP, распределение GPDMA-каналов, управление SSEL(GPIO и автомат) и т.п.). И еррата молчит
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016