billidean 0 31 июля, 2013 Опубликовано 31 июля, 2013 · Жалоба Решил оживить тему. После последнего сообщения Езернетом больше не занимался, другие задачи появились. Сейчас же свободного времени побольше и я хочу добить этот вопрос для себя, т.к. очень много где стал использоваться Езернет для передачи между платой с ПЛИС и ПК. Теперь вопрос к знатокам: я добился того, что пингование платы происходит успешно. Далее я так понимаю нужно передать в плату с ПК что-то определенное, т.е. например передать число 5 или пакет какой-то. Как я могу сформировать необходимый пакет, с помощью какой программы? Или как-то не так это должно быть. Я не системный программист, поэтому не смейтесь над моим незнанием данного вопроса. Можно ссылки на полезную информацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 31 июля, 2013 Опубликовано 31 июля, 2013 · Жалоба есть программа netcat (они есть и для виндоус и для unix) она формирует TCP и UDP пакеты, устанавливает связь и шлет данные. Уровнем ниже это писать программку самому через виндовые сокеты через IP TCP UDP, слать данные. Как спуститься еще ниже, то есть на уровень драйвера сетевой карты компьютера и слать сырые данные, я не знаю. Очевидно в винде надо писать свой драйвер, в люниксе вероятно тоже. Я так понимаю никакого стека у вас нет, может для тестов прикрутить какой то готовый типа LwIP или подобного? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 31 июля, 2013 Опубликовано 31 июля, 2013 · Жалоба Я так понимаю никакого стека у вас нет, может для тестов прикрутить какой то готовый типа LwIP или подобного? А что это даст? Вообще-то у меня имеется наработка с использованием Simple Socket Server. Добился такого же результата, т.е. пинга, и забросил это дело. Я так думаю, что и со стеком на данном этапе нужна какая-то прога, чтобы сформировать правильный пакет и послать его на определенный IP-адрес, хоть по UDP хоть TCP IP. Просто я не знаю какую прогу использовать для этого, и вообще, думаю многие уже через это прошли, поэтому прошу у них помощи и подсказки для упрощения жизни. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 31 июля, 2013 Опубликовано 31 июля, 2013 · Жалоба для написания проги со стороны компа - ключевые слова: BSD socket API. Оно универсальное для *nix, iNiche TCP/IP, так и весьма похоже в Win32. При этом на каком языке вы будете писать софт - не так важно, ведь это по сути набор библиотечных функций типа send() и recv(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 2 августа, 2013 Опубликовано 2 августа, 2013 · Жалоба А что это даст? Вообще-то у меня имеется наработка с использованием Simple Socket Server. Добился такого же результата, т.е. пинга, и забросил это дело. Я так думаю, что и со стеком на данном этапе нужна какая-то прога, чтобы сформировать правильный пакет и послать его на определенный IP-адрес, хоть по UDP хоть TCP IP. Просто я не знаю какую прогу использовать для этого, и вообще, думаю многие уже через это прошли, поэтому прошу у них помощи и подсказки для упрощения жизни. Если ваша плата умеет принимать и обрабатывать ТСР пакеты, и формировать ответные, поддерживать IP адрес и все служебные обмены обычной компьютерной сети, - что делает например ЛвИП стэк и прочие стэки, то вам он конечно не нужен. Если такого функционала нет, то для подключения к обычному компьютеру это надо будет делать, а это как раз и будет опять этим стэком. Если вам нужна прога со стороны компьютера то я уже написал netcat, netcat 192.168.0.1 7 она устанавливает соединение с этим айпи по этому порту дальше все что вы напишите упаковывается в IP пакет и посылается айпишнику, все что он ответил пишется вам на экран. Куда проще то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 4 августа, 2013 Опубликовано 4 августа, 2013 · Жалоба Спасибо за советы, попробую предложенные программы. Пока что решил написать простенькое приложение на Qt с использованием UDP. Но на данный момент у меня проблема немного не в этом вопросе: у меня есть прошивка для кристалла + прога для НИОСа, которые при запросе пинга что-то отвечают, пакеты правильные вроде, если смотреть с помощью wireshark. Недавно начал поднимать этот проект далее. Начал дорабатывать НИОСовый код и заметил такую вещь, если где-нибудь поправить код, даже в той части, которая не участвует в основном процессе работы интерфейса, то пинг перестает проходить полноценно. А если точнее, то пинг начинается с АРП-запроса, а затем уже запрашивает ЭХО, так вот НИОС почемуто не видит этот АРП запрос, как-будто данные попортились и пакет стал битым. С помощью отладчика не получается этот пакет увидеть так как при подключении платы к ПК в линии довольно много всяких запросов. В квартусе тайминги нормальные. Как вариант попробую переписать проект заново. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 5 августа, 2013 Опубликовано 5 августа, 2013 · Жалоба Может то что я напишу ниже поможет. у меня было подобное на микроблайзе от ксалинкса. Был проект который работал, но при изменении кода даже в других частях отваливался езернет или начинал глючить, убивало то что можно добавить функцию которую ни разу не вызываю, а код падал. Проблема была в следующем, неправильные клоки внешней памяти (сделать не от отдельного источника клоков синхронного) в результате при работе программы в зависимости от ее вида и размера кешировались разные блоки, иногда они кишировались удачно, иногда с ошибками и так далее... Потому то работало, то нет, то с ошибками. В начале я добавил регистры на шину - стало легче, через некоторое время увеличилась нагрузка на программу и снова ошибки, добавили радиатор опять стало легче, повышение нагрузки - опять беда... Потом пересобрал всю систему заново и правильно с клоками и так далее и вроде она стала на порядок устойчивее работать... Проверьте отчеты вашей программы, расчетная частота работы с хорошим запасом превышает рабочую? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 5 августа, 2013 Опубликовано 5 августа, 2013 (изменено) · Жалоба Также могут оказаться виноваты свичи, MAC-адреса и ARP. Например после смены MAC в проекте на плисине, на компе надо обязательно вручную сбросить ARP-кэш. иначе придётся несколько минут курить бамбук, пока он про-expire-ится самостоятельно. при подключении платы к ПК в линии довольно много всяких запросов. win действительно много гадит в линию. Можете попробовать пробросить отдельную сетевуху в виртуалку с *nix и вайршарком Изменено 5 августа, 2013 пользователем krux Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 6 августа, 2013 Опубликовано 6 августа, 2013 · Жалоба win действительно много гадит в линию. Если после заливки программы в ПЛИСину винда начинает выдавать очень плотный поток запросов, причем не связанных с моей платой, адреса не её. Но если подождать около минуты, то потом поток запросов почти до ноля падает, и можно уже свои пинги посылать. Это конечно все муторно, но выбирать не из чего. на компе надо обязательно вручную сбросить ARP-кэш. иначе придётся несколько минут курить бамбук, пока он про-expire-ится самостоятельно. есть такое дело. А как его сбрасывать? Если я для пинга использую cmd, то как очистить кэш обмена? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 6 августа, 2013 Опубликовано 6 августа, 2013 · Жалоба ну в wireshark есть еще фильтры, можно и по МАК и по IP фильтровать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 7 августа, 2013 Опубликовано 7 августа, 2013 · Жалоба Создал проект заново, прочитал доки по SG-DMA, переписал код для НИОСа, и вроде заработала система. Сейчас пинги проходят стабильно, тьфу-тьфу. Данные вроде тоже нормально принимаются. Благодарю всех за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 7 августа, 2013 Опубликовано 7 августа, 2013 · Жалоба Если я для пинга использую cmd, то как очистить кэш обмена? arp -d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться