Jump to content

    
Sign in to follow this  
svedach

Портирование lwIP на свой контроллер MAC

Recommended Posts

Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?

Может хоть какой-то опыт есть в данном направлении?

Share this post


Link to post
Share on other sites
Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?

Может хоть какой-то опыт есть в данном направлении?

 

Привет Алексей! Lwip обращается к памяти, куда отмаппирован контроллер МАК. По идее тебе необходимо посмотреть как с памятью работает Lwip (найти где прописаны указатели на буферы приема/передачи, дополнительные регистры, например для Zynq это ДДР, для Микроблейза/ниоса можно назначать) и сообщить указатель на свой мак контроллер. Я решал немного другую задачу: убирал лишние функции из Lwip, чтобы реализовать UDP точка-точка без RTOS, реализованного в Lwip

Share this post


Link to post
Share on other sites

Привет, Алексей!

Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf

По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS :)

я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро...

Но за ответ - спасибо!

Share this post


Link to post
Share on other sites
Привет, Алексей!

Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: 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

 

Share this post


Link to post
Share on other sites

Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!

Share this post


Link to post
Share on other sites
Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!

так и сделайте ещё половину arp, если даже лень руками конфигурировать

а тем более со всей этой ерундой вообще зачем взлетать

 

Edited by Огурцов

Share this post


Link to post
Share on other sites
так и сделайте ещё половину arp, если даже лень руками конфигурировать

а тем более со всей этой ерундой вообще зачем взлетать

 

Извините, слабо понимаю что Вы говорите... Какую половину arp (если делать, то полностью уже), что сконфигурировать, с какой ерундой?

Это все можно конечно (даже без проблем сделаю, уже делал), но зачем? Если это уже все сделано? А потом потребуется ВЕБ-сервер поднять и т.д. и т.п. Тоже в харде писать?

Share this post


Link to post
Share on other sites
Какую половину arp

которая отвечает на входящие запросы

на самом деле это даже не половина, а лишь где-то четверть

 

(если делать, то полностью уже)

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

 

что сконфигурировать

static arp

 

с какой ерундой?

lwip

 

но зачем? Если это уже все сделано?

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

 

А потом потребуется ВЕБ-сервер

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

тем более, что веб-серверу спешить некуда

Edited by Огурцов

Share this post


Link to post
Share on other sites
которая отвечает на входящие запросы

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

 

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

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

 

static arp

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

 

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

 

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

тем более, что веб-серверу спешить некуда

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

 

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

 

В общем-то хотелось бы услышать что-нибудь по теме от Гуру...

Share this post


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

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

 

Девайс - не игрушка на побаловаться

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

 

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

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

 

Но конфигурировать систему будет удобно через WEB-интерфейс, для него естественно удобнее lwIP...

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

 

В общем-то хотелось бы услышать что-нибудь по теме от Гуру...

увы, всех много, а всего - мало

 

Share this post


Link to post
Share on other sites
можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?

Может хоть какой-то опыт есть в данном направлении?

Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output.

Описание и примеры доступны.

Share this post


Link to post
Share on other sites
Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output.

Описание и примеры доступны.

Спасибо!

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.

Sign in to follow this