svedach 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)? Может хоть какой-то опыт есть в данном направлении? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)? Может хоть какой-то опыт есть в данном направлении? Привет Алексей! Lwip обращается к памяти, куда отмаппирован контроллер МАК. По идее тебе необходимо посмотреть как с памятью работает Lwip (найти где прописаны указатели на буферы приема/передачи, дополнительные регистры, например для Zynq это ДДР, для Микроблейза/ниоса можно назначать) и сообщить указатель на свой мак контроллер. Я решал немного другую задачу: убирал лишние функции из Lwip, чтобы реализовать UDP точка-точка без RTOS, реализованного в Lwip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба Привет, Алексей! Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS :) я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро... Но за ответ - спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба Привет, Алексей! Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS :) я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро... Но за ответ - спасибо! А для чего тебе Lwip? Как я понял у тебя свое IP ядро, которое ты прикрутил к TriState Ethernet и получаешь обмен данными. Lwip запускал на Stratix, там полный UDP/ARP/TCP/IP на ртосе. У ксайлинка полнгая аналогия https://www.xilinx.com/support/documentatio...es/xapp1026.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 (изменено) · Жалоба Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь! так и сделайте ещё половину arp, если даже лень руками конфигурировать а тем более со всей этой ерундой вообще зачем взлетать Изменено 15 ноября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 · Жалоба так и сделайте ещё половину arp, если даже лень руками конфигурировать а тем более со всей этой ерундой вообще зачем взлетать Извините, слабо понимаю что Вы говорите... Какую половину arp (если делать, то полностью уже), что сконфигурировать, с какой ерундой? Это все можно конечно (даже без проблем сделаю, уже делал), но зачем? Если это уже все сделано? А потом потребуется ВЕБ-сервер поднять и т.д. и т.п. Тоже в харде писать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 15 ноября, 2017 Опубликовано 15 ноября, 2017 (изменено) · Жалоба Какую половину arp которая отвечает на входящие запросы на самом деле это даже не половина, а лишь где-то четверть (если делать, то полностью уже) делайте, зависит лишь от количества ресурсов чипа и вашего времени что сконфигурировать static arp с какой ерундой? lwip но зачем? Если это уже все сделано? не знаю, как вам, а мне нужно высокоскоростное решение, а не самолёт с бассейном А потом потребуется ВЕБ-сервер не, вам надо сразу определиться, ибо если вам уже сейчас потенциально нужен веб сервер, то на самом деле в харде - это тупиковый путь тем более, что веб-серверу спешить некуда Изменено 15 ноября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 16 ноября, 2017 Опубликовано 16 ноября, 2017 · Жалоба которая отвечает на входящие запросы В практике столкнулся с тем, что некоторые версии Linux не шлют ARP-запросы после загрузки... и таким образом не видят девайса. Приходится самому слать первым... делайте, зависит лишь от количества ресурсов чипа и вашего времени Не хочу - в lwIp это уже сделано... static arp Девайс - не игрушка на побаловаться... Должна быть полноценная сеть, скорее всего будет DHCP. По поводу самолета: всегда хочется комфорта.... не, вам надо сразу определиться, ибо если вам уже сейчас потенциально нужен веб сервер, то на самом деле в харде - это тупиковый путь тем более, что веб-серверу спешить некуда Так я и определился... По этому и спрашиваю! Девайс очень специфичный - есть очень нагруженные потоки данных, под них сделан собственный хардовый UDP (даже несколько каналов с настройкой IP, MAC и т.д.). Но конфигурировать систему будет удобно через WEB-интерфейс, для него естественно удобнее lwIP... В общем-то хотелось бы услышать что-нибудь по теме от Гуру... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 16 ноября, 2017 Опубликовано 16 ноября, 2017 · Жалоба В практике столкнулся с тем, что некоторые версии Linux не шлют ARP-запросы после загрузки... и таким образом не видят девайса. Приходится самому слать первым... это должна быть опция, но не обязанность Девайс - не игрушка на побаловаться не согласен, тут чем проще, тем надёжнее, если ваши пользователи серьёзные люди, а не юзеры, то с настройкой справятся легко По поводу самолета: всегда хочется комфорта.... я вам про это и намекаю: самолёт всегда должен _летать_ Но конфигурировать систему будет удобно через WEB-интерфейс, для него естественно удобнее lwIP... тогда логично ловить на входе udp, а остальное отдавать в lwip В общем-то хотелось бы услышать что-нибудь по теме от Гуру... увы, всех много, а всего - мало Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 16 ноября, 2017 Опубликовано 16 ноября, 2017 · Жалоба можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)? Может хоть какой-то опыт есть в данном направлении? Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output. Описание и примеры доступны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 16 ноября, 2017 Опубликовано 16 ноября, 2017 · Жалоба Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output. Описание и примеры доступны. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться