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

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

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

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

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


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

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

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

 

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

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


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

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

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

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

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

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

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


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

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

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

 

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


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

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

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


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

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

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

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

 

Изменено пользователем Огурцов

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


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

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

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

 

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

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

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


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

Какую половину arp

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

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

 

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

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

 

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

static arp

 

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

lwip

 

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

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

 

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

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

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

Изменено пользователем Огурцов

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


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

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

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

 

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

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

 

static arp

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

 

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

 

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

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

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

 

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

 

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

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


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

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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


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

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

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

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

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

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


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

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

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

Спасибо!

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


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

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

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

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

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

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

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

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

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

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