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

 
 
> Обращение к AXI_DMA приводит к зависанию, Zynq на плате HW-Z7-ZC702
Nivovod
сообщение Mar 2 2018, 12:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 16-06-10
Пользователь №: 57 971



Нужно мне гнать поток данных из своей логики через AXI4-Stream. Написал я интерфейсный блок AXI4-Stream, добавил к своей логике, сделал ядро. Подключил к AXI_DMA. Взял драйвер отсюда https://github.com/Xilinx/embeddedsw/blob/m...e_simple_poll.c
Проходит инициализация DMA и виснет проц на строке
XAxiDma_IntrDisable(&AxiDma, XAXIDMA_IRQ_ALL_MASK, XAXIDMA_DEVICE_TO_DMA);
то есть ровно в том месте где идет попытка записи в регистры DMA.

Ну думаю - накосячил где-то со своим IP. Нашел пошаговую инструкцию подключения и работы с AXI_DMA
http://www.fpgadeveloper.com/2014/03/using...dma-engine.html
Там и vhdl код ядра взял, там и драйвер взял. Все по инструкции сделал. Снова виснет в ТОМ ЖЕ МЕСТЕ. Если закоментировать запрет прерываний, то виснет на строке
XAxiDma_SimpleTransfer(&AxiDma,(UINTPTR) RxBufferPtr, MAX_PKT_LEN, XAXIDMA_DEVICE_TO_DMA);
то есть опять в том месте где идет запись в DMA.

Понимаю что проблема элементарная и кроется в мелочи, но осилить не могу уже несколько дней. Прошу помощи.

P.S. Использую ISE 14.5, XPS, SDK.

Сообщение отредактировал Nivovod - Mar 2 2018, 12:59
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nivovod
сообщение Mar 15 2018, 17:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 16-06-10
Пользователь №: 57 971



Проблему удалось временно отодвинуть. Установка ISE 14.7 конечно ничего не изменила.
Мне удалось достать другую отладочную плату с тем же цинком, а именно TE0720-02. Собрал абсолютно тот же проект на ней, только подгрузил соответствующий xml файл. И произошло чудо - проц успешно проскочил запрет прерываний и пр. команды работы с DMA и вошел в бесконечный цикл ожидания завершения приема данных. Значит проблема в AXI. По описанной выше проблеме чипскопом через XPS посмотреть ничего не смог. И тогда я сделал ход конем - создал буферное ядро которое пропускает через себя все линии AXI4-Stream на уровень логики ПЛИС. И уже в ISE я вставил текст ядра, указанный во 2-м посте. И все заработало сразу и без зависаний. Причем чипскоп подключенный в ISE работал странно - он показывает правильную времянку, потом все сигналы становятся на время =1, а потом снова правильную времянку. Пришлось смотреть сигналы осциллографом - все сигналы в точности такие как и должны быть. Чипскоп врет или виснет на время.

ИТОГ: абсолютно рабочие коды из второго поста, абсолютно рабочий проект...НО на одной отладочной плате не работают вообще, на другой код ядра работает только если его из XPS перенести в ISE. В общем МРАК!!! Я всегда был за идею объединения плис с процом, но то как это реализовано у Xilinx вызывает грусть и апатию, если не сказать хуже.
Go to the top of the page
 
+Quote Post



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

 


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


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