Jump to content
    

как лучше/проще решать задачу для Zynq - данные из PL передать на хост (GbE)

то есть из логики поступают отчеты, их хорошо бы DMA + AXI MASTER засовывать в память цинка, а может лучше обеспечить доступ PS к памяти в PL через Slave?

ну а потом этот буфер выпихивать по сети (GbE) в ПК

============================

вопросы - может есть какой-то готовый хелп/пример все сразу?

я пока думаю FreeRTOS + LWIP на цинке, передавать UDP (допустима потеря пакетов, но без злоупотреблений). компьютер (линукс) стоит рядом с цинком.

то есть Linux или baremetal кажутся мне сложнее.

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

=============

вначале хочу потренироваться с ZEDBOARD - Zynq7000, затем "боевой вариант" на ZynQ Ultrascale (плата ZCU102) - предполагаю, что софт для цинка и для хоста менять не придется (ну и AXI / DMA тоже, в PL источник отсчетов только поменяется - в Z7000 какой-нибудь PRN, а в ZCU102 сигнал из боевого проекта)

-----------------------

передавать надо 80 / 40 / 20 МБ/с - то есть 80 это совсем хорошо, но для первого приближения 20 сойдет

-----------------------

вопрос - посоветуйте флоу и хелп, задача - сделать это просто (для себя), с минимизацией трудозатрат (витис я посмотрел - "хело ворд" запустил, следующее, наверно собрать какой-то "блок дизайн" - то есть генерация системы для софта, раньше не использовал, и собрать какое-то мигание светодиодом, потом lwip и для хоста передачу по эзернету, ну а потом AXI и собственно решение задачи)

ну и вообще - может я что-то упускаю?

 

 

Share this post


Link to post
Share on other sites

15 часов назад, yes сказал:

то есть из логики поступают отчеты, их хорошо бы DMA + AXI MASTER засовывать в память цинка, а может лучше обеспечить доступ PS к памяти в PL через Slave?

ну а потом этот буфер выпихивать по сети (GbE) в ПК

Если бы у вас была своя плата с физикал эзернета на плис, то задача прекрасно решается в плис - укладываете логи в udp-пакеты и отправляете мультикастом. Но у вас штатные доски и все придется передавать в проц - что бы облегчить нагрузку на проц можно так же формировать пакеты логов в плисе, загружать готовые пакеты в ддр проца и ему останется только отправить его лвипом. После загрузки данных в ддр по дма не забывайте сбрасывать кэш проца, а то данных можно и не увидеть. На 102 конечно можно поднять езернет и через sfp, но на зедборде это не возможно.

15 часов назад, yes сказал:

предполагаю, что софт для цинка и для хоста менять не придется (ну и AXI / DMA тоже, в PL источник отсчетов только поменяется

К сожалению придется учесть переход проца с 32 бит на 64 - в ультрацинке у проца все указатели будут 64 бита, ну и шина адреса для процессорных AXI то же станет шире - 48 бит.

Edited by fguy

Share this post


Link to post
Share on other sites

20 hours ago, RobFPGA said:

Приветствую!

А  GbE сделан в PS или будет в PL части.

 

Удачи! Rob.

в PS - мне кажется, что передать буфер памяти, тем более на на небольшой скорости, справится и процессор, и работать с ним проще.

5 hours ago, fguy said:

Если бы у вас была своя плата с физикал эзернета на плис

да, тут и вопроса нет.

но даже если бы и свою плату делал - кажется, что для такого случая проще (меньше времени на разработку, проще отладить, гибчее :) решение ) использовать процессор.

----------

пока не понятен выбор софта - стоит ли взять линукс и переложить трудность на разбирательство работы с железом/драйверами и "плохой" реалтаймовости, но получить весь изернет из коробки, или брать freertos и там иметь какие-то недостатки встроенного lwip (мне вариант freertos кажется лучше). c бареметалом кажется все однозначно - чтобы lwip и мой код крутились в одном цикле придется сильно постараться, то есть не вариант.

???

Share this post


Link to post
Share on other sites

Для 20-80 Mbit/s через 1G Ethernet за глаза хватит DMA+Linux. Если проц не на 100% нагружен и пакеты большого размера. Наверное, проще всего, взять отладку и поэксериментировать.

Share this post


Link to post
Share on other sites

10 minutes ago, nice_vladi said:

Для 20-80 Mbit/s через 1G Ethernet за глаза хватит DMA+Linux.

 

У ТС'а МегаБайты:

21 hours ago, yes said:

передавать надо 80 / 40 / 20 МБ/с

80 МБ/с на Zynq-7000 через 1G Ethernet и DMA+Linux не передать: MacbDriver-Zynq

 

Максимум: 455/8 = 56 МБ/с

Share this post


Link to post
Share on other sites

25 минут назад, blackfin сказал:

80 МБ/с на Zynq-7000 через 1G Ethernet и DMA+Linux не передать

На цинке 7015 передавал лвипом 70 Мбайт/с на ПК - данные приходили по каналу 1 Гбит через GT, парсились в плис и записывались в ддр проца, а он уже оттуда по прерыванию готовности данных отсылал пачку udp-пакетов (1500).

Имхо линукс в цинках нужен только когда используется периферия для которой писать драйвер очень сложно и долго, например, диски с sata и m.2 nvme, внешние устройства на usb и т.п.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...