Перейти к содержанию
    

Решил оживить тему.

После последнего сообщения Езернетом больше не занимался, другие задачи появились.

Сейчас же свободного времени побольше и я хочу добить этот вопрос для себя, т.к. очень много где стал использоваться Езернет для передачи между платой с ПЛИС и ПК.

 

Теперь вопрос к знатокам: я добился того, что пингование платы происходит успешно. Далее я так понимаю нужно передать в плату с ПК что-то определенное, т.е. например передать число 5 или пакет какой-то. Как я могу сформировать необходимый пакет, с помощью какой программы? Или как-то не так это должно быть.

 

Я не системный программист, поэтому не смейтесь над моим незнанием данного вопроса.

 

Можно ссылки на полезную информацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть программа netcat (они есть и для виндоус и для unix) она формирует TCP и UDP пакеты, устанавливает связь и шлет данные.

Уровнем ниже это писать программку самому через виндовые сокеты через IP TCP UDP, слать данные.

 

Как спуститься еще ниже, то есть на уровень драйвера сетевой карты компьютера и слать сырые данные, я не знаю. Очевидно в винде надо писать свой драйвер, в люниксе вероятно тоже.

 

Я так понимаю никакого стека у вас нет, может для тестов прикрутить какой то готовый типа LwIP или подобного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю никакого стека у вас нет, может для тестов прикрутить какой то готовый типа LwIP или подобного?

А что это даст?

Вообще-то у меня имеется наработка с использованием Simple Socket Server. Добился такого же результата, т.е. пинга, и забросил это дело.

 

Я так думаю, что и со стеком на данном этапе нужна какая-то прога, чтобы сформировать правильный пакет и послать его на определенный IP-адрес, хоть по UDP хоть TCP IP.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для написания проги со стороны компа - ключевые слова: BSD socket API.

Оно универсальное для *nix, iNiche TCP/IP, так и весьма похоже в Win32.

При этом на каком языке вы будете писать софт - не так важно, ведь это по сути набор библиотечных функций типа send() и recv().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что это даст?

Вообще-то у меня имеется наработка с использованием Simple Socket Server. Добился такого же результата, т.е. пинга, и забросил это дело.

 

Я так думаю, что и со стеком на данном этапе нужна какая-то прога, чтобы сформировать правильный пакет и послать его на определенный IP-адрес, хоть по UDP хоть TCP IP.

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

 

Если ваша плата умеет принимать и обрабатывать ТСР пакеты, и формировать ответные, поддерживать IP адрес и все служебные обмены обычной компьютерной сети, - что делает например ЛвИП стэк и прочие стэки, то вам он конечно не нужен. Если такого функционала нет, то для подключения к обычному компьютеру это надо будет делать, а это как раз и будет опять этим стэком.

 

Если вам нужна прога со стороны компьютера то я уже написал netcat,

netcat 192.168.0.1 7

она устанавливает соединение с этим айпи по этому порту

дальше все что вы напишите упаковывается в IP пакет и посылается айпишнику, все что он ответил пишется вам на экран. Куда проще то?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы, попробую предложенные программы.

Пока что решил написать простенькое приложение на Qt с использованием UDP.

 

Но на данный момент у меня проблема немного не в этом вопросе:

у меня есть прошивка для кристалла + прога для НИОСа, которые при запросе пинга что-то отвечают, пакеты правильные вроде, если смотреть с помощью wireshark. Недавно начал поднимать этот проект далее. Начал дорабатывать НИОСовый код и заметил такую вещь, если где-нибудь поправить код, даже в той части, которая не участвует в основном процессе работы интерфейса, то пинг перестает проходить полноценно. А если точнее, то пинг начинается с АРП-запроса, а затем уже запрашивает ЭХО, так вот НИОС почемуто не видит этот АРП запрос, как-будто данные попортились и пакет стал битым.

С помощью отладчика не получается этот пакет увидеть так как при подключении платы к ПК в линии довольно много всяких запросов.

В квартусе тайминги нормальные.

 

Как вариант попробую переписать проект заново.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может то что я напишу ниже поможет.

 

 

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

 

В начале я добавил регистры на шину - стало легче, через некоторое время увеличилась нагрузка на программу и снова ошибки, добавили радиатор опять стало легче, повышение нагрузки - опять беда... Потом пересобрал всю систему заново и правильно с клоками и так далее и вроде она стала на порядок устойчивее работать...

 

Проверьте отчеты вашей программы, расчетная частота работы с хорошим запасом превышает рабочую?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Также могут оказаться виноваты свичи, MAC-адреса и ARP. Например после смены MAC в проекте на плисине, на компе надо обязательно вручную сбросить ARP-кэш. иначе придётся несколько минут курить бамбук, пока он про-expire-ится самостоятельно.

 

при подключении платы к ПК в линии довольно много всяких запросов.

win действительно много гадит в линию. Можете попробовать пробросить отдельную сетевуху в виртуалку с *nix и вайршарком

Изменено пользователем krux

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

win действительно много гадит в линию.

Если после заливки программы в ПЛИСину винда начинает выдавать очень плотный поток запросов, причем не связанных с моей платой, адреса не её. Но если подождать около минуты, то потом поток запросов почти до ноля падает, и можно уже свои пинги посылать. Это конечно все муторно, но выбирать не из чего.

на компе надо обязательно вручную сбросить ARP-кэш. иначе придётся несколько минут курить бамбук, пока он про-expire-ится самостоятельно.

есть такое дело. А как его сбрасывать? Если я для пинга использую cmd, то как очистить кэш обмена?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал проект заново, прочитал доки по SG-DMA, переписал код для НИОСа, и вроде заработала система. Сейчас пинги проходят стабильно, тьфу-тьфу.

Данные вроде тоже нормально принимаются.

 

Благодарю всех за ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...