реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Портирование lwIP на свой контроллер MAC
svedach
сообщение Nov 15 2017, 11:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Добрый день! Кто-нибудь решал задачу портирования lwIP на свой контроллер MAC? Т.е. у меня есть свое IP-ядро, формирующее пакет для отправки через Tri Mode Ethernet MAC (Xilinx), там есть UDP-каналы самопальные и буфферы приема и передачи, к которым имеет доступ процессор, можно ли "сказать" lwIP, что тот пакет, который он сформировал нужно уложить в буффер и соответственно с приемной частью - получил прерывание - читай пакет из буффера, парсь и делай, все что положено... (ARP и т.д.)?
Может хоть какой-то опыт есть в данном направлении?
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Nov 15 2017, 17:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



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


Привет Алексей! Lwip обращается к памяти, куда отмаппирован контроллер МАК. По идее тебе необходимо посмотреть как с памятью работает Lwip (найти где прописаны указатели на буферы приема/передачи, дополнительные регистры, например для Zynq это ДДР, для Микроблейза/ниоса можно назначать) и сообщить указатель на свой мак контроллер. Я решал немного другую задачу: убирал лишние функции из Lwip, чтобы реализовать UDP точка-точка без RTOS, реализованного в Lwip
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 15 2017, 17:53
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Привет, Алексей!
Это я понимаю, хочется конкретики... Нашел кстати кое-что в тему: http://www.atmel.com/Images/Atmel-42233-Us...ote_AT04055.pdf
По поводу RTOS и lwIP ты что-то путаешь... нету там RTOS sm.gif
я кстати lwIP использую в бареметал. А для нагруженного потока UDP как раз и писал свое ядро...
Но за ответ - спасибо!
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Nov 15 2017, 18:14
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(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
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 15 2017, 18:18
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 15 2017, 18:39
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(svedach @ Nov 15 2017, 19:18) *
Да хочу получить плюшки lwIP и при этом оставить свой стек UDP - он аппаратный и может забить хоть весь канал... С lwIP такой трюк не проделаешь!

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


Сообщение отредактировал Огурцов - Nov 15 2017, 18:41
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 15 2017, 18:52
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



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


Извините, слабо понимаю что Вы говорите... Какую половину arp (если делать, то полностью уже), что сконфигурировать, с какой ерундой?
Это все можно конечно (даже без проблем сделаю, уже делал), но зачем? Если это уже все сделано? А потом потребуется ВЕБ-сервер поднять и т.д. и т.п. Тоже в харде писать?
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 15 2017, 21:58
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(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) *
А потом потребуется ВЕБ-сервер

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

Сообщение отредактировал Огурцов - Nov 15 2017, 22:03
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 16 2017, 06:15
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



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

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

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

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

Цитата
static arp

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

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

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

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

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

В общем-то хотелось бы услышать что-нибудь по теме от Гуру...
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 16 2017, 10:30
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(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) *
В общем-то хотелось бы услышать что-нибудь по теме от Гуру...

увы, всех много, а всего - мало
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 16 2017, 10:44
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Можно. Достаточно написать свою обертку ethernetif.c, содержащую всего три функции: init, input, output.
Описание и примеры доступны.
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 16 2017, 11:17
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



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

Спасибо!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016