Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Портирование lwIP на свой контроллер MAC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
svedach
Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?
Может хоть какой-то опыт есть в данном направлении?
Alexey_Rostov
Цитата(svedach @ Nov 15 2017, 14:33) *
Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?
Может хоть какой-то опыт есть в данном направлении?


Привет Алексей! Lwip обращается к памяти, куда отмаппирован контроллер МАК. По идее тебе необходимо посмотреть как с памятью работает Lwip (найти где прописаны указатели на буферы приема/передачи, дополнительные регистры, например для Zynq это ДДР, для Микроблейза/ниоса можно назначать) и сообщить указатель на свой мак контроллер. Я решал немного другую задачу: убирал лишние функции из Lwip, чтобы реализовать UDP точка-точка без RTOS, реализованного в Lwip
svedach
Привет, Алексей!
Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf
По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS sm.gif
я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро...
Но за ответ - спасибо!
Alexey_Rostov
Цитата(svedach @ Nov 15 2017, 20:53) *
Привет, Алексей!
Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf
По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS sm.gif
я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро...
Но за ответ - спасибо!


А для чего тебе Lwip? Как я понял у тебя свое IP ядро, которое ты прикрутил к TriState Ethernet и получаешь обмен данными. Lwip запускал на Stratix, там полный UDP/ARP/TCP/IP на ртосе. У ксайлинка полнгая аналогия
https://www.xilinx.com/support/documentatio...es/xapp1026.pdf
svedach
Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!
Огурцов
Цитата(svedach @ Nov 15 2017, 19:18) *
Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!

так и сделайте ещё половину arp, если даже лень руками конфигурировать
а тем более со всей этой ерундой вообще зачем взлетать
svedach
Цитата(Огурцов @ Nov 15 2017, 21:39) *
так и сделайте ещё половину arp, если даже лень руками конфигурировать
а тем более со всей этой ерундой вообще зачем взлетать


Извините, слабо понимаю что Вы говорите... Какую половину arp (если делать, то полностью уже), что сконфигурировать, с какой ерундой?
Это все можно конечно (даже без проблем сделаю, уже делал), но зачем? Если это уже все сделано? А потом потребуется ВЕБ-сервер поднять и т.д. и т.п. Тоже в харде писать?
Огурцов
Цитата(svedach @ Nov 15 2017, 19:52) *
Какую половину arp

которая отвечает на входящие запросы
на самом деле это даже не половина, а лишь где-то четверть

Цитата(svedach @ Nov 15 2017, 19:52) *
(если делать, то полностью уже)

делайте, зависит лишь от количества ресурсов чипа и вашего времени

Цитата(svedach @ Nov 15 2017, 19:52) *
что сконфигурировать

static arp

Цитата(svedach @ Nov 15 2017, 19:52) *
с какой ерундой?

lwip

Цитата(svedach @ Nov 15 2017, 19:52) *
но зачем? Если это уже все сделано?

не знаю, как вам, а мне нужно высокоскоростное решение, а не самолёт с бассейном

Цитата(svedach @ Nov 15 2017, 19:52) *
А потом потребуется ВЕБ-сервер

не, вам надо сразу определиться, ибо если вам уже сейчас потенциально нужен веб сервер, то на самом деле в харде - это тупиковый путь
тем более, что веб-серверу спешить некуда
svedach
Цитата
которая отвечает на входящие запросы

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

Цитата
делайте, зависит лишь от количества ресурсов чипа и вашего времени

Не хочу - в lwIp это уже сделано...

Цитата
static arp

Девайс - не игрушка на побаловаться... Должна быть полноценная сеть, скорее всего будет DHCP.

По поводу самолета: всегда хочется комфорта....

Цитата
не, вам надо сразу определиться, ибо если вам уже сейчас потенциально нужен веб сервер, то на самом деле в харде - это тупиковый путь
тем более, что веб-серверу спешить некуда

Так я и определился... По этому и спрашиваю!

Девайс очень специфичный - есть очень нагруженные потоки данных, под них сделан собственный хардовый UDP (даже несколько каналов с настройкой IP, MAC и т.д.). Но конфигурировать систему будет удобно через WEB-интерфейс, для него естественно удобнее lwIP...

В общем-то хотелось бы услышать что-нибудь по теме от Гуру...
Огурцов
Цитата(svedach @ Nov 16 2017, 06:15) *
В практике столкнулся с тем, что некоторые версии Linux не шлют ARP-запросы после загрузки... и таким образом не видят девайса. Приходится самому слать первым...

это должна быть опция, но не обязанность

Цитата(svedach @ Nov 16 2017, 06:15) *
Девайс - не игрушка на побаловаться

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

Цитата(svedach @ Nov 16 2017, 06:15) *
По поводу самолета: всегда хочется комфорта....

я вам про это и намекаю: самолёт всегда должен _летать_

Цитата(svedach @ Nov 16 2017, 06:15) *
Но конфигурировать систему будет удобно через WEB-интерфейс, для него естественно удобнее lwIP...

тогда логично ловить на входе udp, а остальное отдавать в lwip

Цитата(svedach @ Nov 16 2017, 06:15) *
В общем-то хотелось бы услышать что-нибудь по теме от Гуру...

увы, всех много, а всего - мало
aaarrr
Цитата(svedach @ Nov 15 2017, 14:33) *
можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?
Может хоть какой-то опыт есть в данном направлении?

Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output.
Описание и примеры доступны.
svedach
Цитата(aaarrr @ Nov 16 2017, 13:44) *
Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output.
Описание и примеры доступны.

Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.