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

 
 
> DMA. Потери данных внутри пакета, Проблемы с инициализацией транзакции?
Nedd
сообщение Aug 10 2015, 11:31
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 5-08-15
Пользователь №: 87 854



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

Были обнаружены потери данных внутри одной транзакции (данные передаются, но теряются некоторые посылки, зависимости установить не удалось).
Причем, потери возникают в том месте, где устанавливается стартовый бит (младший бит в регистре 0хс0000000) в единицу внутри программы. Если же программу поставить на паузу и вручную установить младший бит в регистре 0хс0000000 в единицу, потерь нет (так как описано в статье, утилиты mem и phys_addr).

Программный код обоих вариантов инициализации идентичен. Signal Tap потерь не видит, данные передаются соотетствующим образом.
Такое чувство, что я не замечаю какой-то нюанс, может кто-нибудь подсказать, в чем дело?


P.S. Cyclone V, de1-soc. Был бы рад руководству (документации), по написанию программ для sgdma ядра.
Слева изображение с потеряными посылками (№1,8,9), справа без потерь. Во вложении программный код.

Сообщение отредактировал Nedd - Aug 10 2015, 11:34
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  dma_test.rar ( 23.99 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post



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

 


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


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