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

 
 
 
Reply to this topicStart new topic
shurikman
сообщение Dec 7 2016, 14:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808



Добрый день. Есть задача поднять на этом ките TSE под управлением HPS без Linux. Реализация стека TCP/IP не обязательна, достаточно прием/передача буфера, соединение точка-точка. Вкачестве отправной точки воспользовался похожей темой, но про Nios. С уважаемым vadimuzzz уже обсудили кое какие детали реализации задуманного. Для тех кто поднимал TSE схема вроде как понятная: TSE + 2xmSGDMA (один на прием, другой на передачу) + прерывание при приёме. Со стороны HPS добавляется LWH2F AXI мост для доступа к регистрам TSE и mSGDMA. Если есть кто прошёл этот путь, отписывайтесь, приоритет данной задачи пока высок. Постараюсь тему не бросать, а довести до конца с выкладыванием всех исходников.
Go to the top of the page
 
+Quote Post
shurikman
сообщение Jan 10 2017, 11:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808



В качестве кода для копипаста были выбраны исходники Linux для TSE и mSGDMA, а также исходники Modular SGDMA с altera wiki. Были перепилены функции записи/чтения в регистры под HPS. Пока работает только передача, приём будет, но позже. Особенность данной реализации подразумевает использование обоих портов(система с двумя TSE). Для теста были сгенирированы два UDP пакета с соответствующими (разными) заголовками и правильными чек суммами. Далее всё это соединил простеньким свичём с компом. Так вот, оба порта инитятся нормально, но передача идёт только с первого порта, при этом светодиод передачи на втором порту мигает, но в вайшарке пусто. Пробовал инитить только второй порт, таже ерунда(в вайшарке пусто). Пробовал без свича, напрямую в комп, тоже самое. Может есть кому что сказать? Спасибо.

Прикрепленный файл  hps_2x_tse.rar ( 301.42 килобайт ) Кол-во скачиваний: 39


Сообщение отредактировал shurikman - Jan 10 2017, 11:36
Go to the top of the page
 
+Quote Post
shurikman
сообщение Jan 10 2017, 14:59
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808



Поставил на тест погонять. Всё таки за час в вайшарке около 20 пакетов накопилось со второго порта.
Go to the top of the page
 
+Quote Post
shurikman
сообщение Jan 19 2017, 14:22
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808



Добавлен приём пакетов и прерывания. Немного причёсан код и разложено всё по папкам. Приём кстати работает на обоих портах, а вот отсылка только с TSE0. Будем разбираться дальше.
Прикрепленный файл  hps_tse.rar ( 1.27 мегабайт ) Кол-во скачиваний: 55
Go to the top of the page
 
+Quote Post
smersh
сообщение Mar 18 2017, 18:58
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 33
Регистрация: 19-06-04
Пользователь №: 64



Привет!
Занимаюсь примерно тем же, только NIOS на Cyclone IV. Хочу прикрутить именно mSGDMA, на старом SGDMA все работает.
Заметил такую штуку: если попытаться прочитать

IORD_ALTERA_MSGDMA_RESPONSE_ACTUAL_BYTES_TRANSFERRED(rx_msgdma_dev->response_base);

когда Response CSR FIFO пусто, NIOS виснет наглухо! В Сигналтапе - response_read и response_waitrequest оба активны.

Еще странно, трансфер запускается даже если не производить write_extended_descriptor(). Т.е. достаточно construct_extended_st_to_mm_descriptor(), и трансфер запускается по приходу SOP от TSE. Почему - неясно совершенно. Паркинг, естественно, отключен. Соврал это я, виноват...



QUOTE (shurikman @ Jan 19 2017, 18:22) *
Добавлен приём пакетов и прерывания. Немного причёсан код и разложено всё по папкам. Приём кстати работает на обоих портах, а вот отсылка только с TSE0. Будем разбираться дальше.
Прикрепленный файл  hps_tse.rar ( 1.27 мегабайт ) Кол-во скачиваний: 55
Go to the top of the page
 
+Quote Post
shurikman
сообщение Apr 28 2017, 12:19
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808



Столкнулся со следующей проблемой. Для приема/отправки данных со стороны HPS используются соответствующие глобальные буферы. Для начала необходимо было организовать поддержку сети на уровне ответов на ARP запросы. Так вот, после формирования ARP ответа, я копирую эти данные в выходной буфер, используемый mSGDMA для отправки, но в вайшарке 0. Тормозил дебагером, буфер заполнен тем что надо. Смотрел примеры для ниоса, там обычно буфера в кеше защёлкиваются, а что в HPS делать в этом случае???
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 01:56
Рейтинг@Mail.ru


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