Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с lwIP на microblaze
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Чиповод
Здравствуйте,

работаю с lwIP v.1.3.0, из примера XAPP1026. Проект standalone, режим RAW_API. Передача от платы в сторону PC идет отлично, поток 75МБит/c, который мне и нужен синими TCP пакетиками ниагарским потоком льется в окне WireShark.

А вот при попытке передачи от PC к плате lwIP захлебывается через некоторое время. Без каких-либо видимых причин через секунд 10 lwIP перестает отвечать на приходящие пакеты. PC пытается делать retransmition и через несколько таких попыток делает вывод, что серверъ умер.

Что интересно, если искусственно снижать скорость посылки пакетов с PC, то система начинает работать стабильнее, и на скорости ~300килобит/c вылетов замечено не было в пределах 30 мин. Но 300К это маловато.


Не встречался ли кто с подобными проблемами в lwIP?
Чиповод
Вот здесь: http://lists.gnu.org/archive/html/lwip-use...5/msg00062.html у человека тоже была проблема с lwIP, немного по другому поводу правда.

Народ тамошний ему советует: перекинь lwIP с 1.3.0 на 1.4.0 - делов, мол, на один день, а работает намного стабильнее. И еще выкинь из системы таймеры (NO_SYS_NO_TIMERS=1) и будет тебе полное счастье. Еще и скорость на 20% поднимется.

Человек тот внял совету, портанул свой lwIP (на 1.3.2 правда), таймеры выкинул и действительно счастье к нему пришло.

С ходу проапргейдить lwIP до 1.4.0 не удалось. Структурки lwIP, которые использует netif от Xilinx'а изменились, не могу найти толковый список изменений.

Кто-нибудь апгрейдил lwIP для Микроблейза до 1.4.0?? И как вообще его апргейдить, врукопашную разбирать новый код и сравнивать со старым?
Чиповод
Ух, я подстрелил кабанчика!

Портировал lwip 1.3.2, боролся врукопашную с netifом, изменений было немного. Разрывы соединения исчезли! Но до конца разобраться не удалось по какой причине они возникали.

В 1.4.0 ввели очень много новшеств, и говорят работает стабильнее, так, что если кто может - поделитесь инфой как его обновить на MicroBlaze.

P.S. На прямо поставленный вопрос есть ли продвижение у Xilinx в обновлении lwIP ответа не последовало.

http://forums.xilinx.com/xlnx/board/crawl_...message.id=3996

Xilinx дает возможность разработчикам повышать свой скилл.
Дмитрий Мазунин
Используете MAC-контроллер с DMA ?
Кэш проца включен ?
Чиповод
Цитата(Дмитрий Мазунин @ Aug 3 2011, 14:22) *
Используете MAC-контроллер с DMA ?

Ага, c DMA. MAC корка - axi_ethernet, DMA - axi_dma

Цитата(Дмитрий Мазунин @ Aug 3 2011, 14:22) *
Кэш проца включен ?
Ага, включен.
Дмитрий Мазунин
Тогда - читайте про кэш-когерентность !

В описании процессора, про MB не скажу, не работал, а для PPC - PowerPC Processor Reference Guide, Chapter 5: Memory-System Management, Software Management of Cache Coherency.
То же самое должно быть описано для MB, да это верно и для любого процессора с кэш в системе с ДМА.

Добавлю - необходимо просмотреть Xilinx-овский NETIF, там не очень аккуратно сделаны FLUSH/INVALIDATE (по крайней мере, так было в EDK 9.1). Кроме этого, была несовместимость с кэш-когерентностью в самом стеке LWIP - Xilinx не правит стек (видимо, принципиально), мы правили сами. Это относится также к версии 9.1, LWIP 1,2,0

Пока не вычистите все это, так и будет при вкл. кэш данных - то работает, то нет, чуть код или данные поменялись - другая ситуация...
Для контроля, что это именно эта проблема, откл. кэш данных.

Версию LWIP, думаю, менять не надо, используйте пока ту, которая в комплекте и разбирайтесь с кэш-когерентностью.

Успехов.
Чиповод
Вон оно как оказывается. Спасибо за наводку, буду разбираться дальше.
Чиповод
Кстати, сообщаю что в BSP ISE 13.4 обновился lwIP до 1.4.0
rezuk
Цитата(Чиповод @ Jan 27 2012, 13:25) *
Кстати, сообщаю что в BSP ISE 13.4 обновился lwIP до 1.4.0

Вы уже опробовали 13.4 с LwIp 1.4.0? Стабильнее работает?
Чиповод
Цитата(rezuk @ Feb 2 2012, 19:03) *
Вы уже опробовали 13.4 с LwIp 1.4.0? Стабильнее работает?
Я только проверил, что оно компилируется и запускается - соеднинение есть. Однако, кажется не все настройки lwIP 1.4.0 были перенесены в BSP Xilinx. По крайней мере NO_SYS_NO_TIMERS я там не нашел. IP core axi_ethernet и драйвер для нее тоже надо обновлять до последней версии в ISE 13.4.

А по поводу стабильности, как выяснилось, сильно влияют настройки lwIP. По крайней мере, я подобрал такие, при которых 1.3.2 работает у меня стабильно. Наверно и 1.3.0 тоже бы так работало.
knirti
Цитата(Чиповод @ Feb 3 2012, 18:47) *
Я только проверил, что оно компилируется и запускается - соеднинение есть. Однако, кажется не все настройки lwIP 1.4.0 были перенесены в BSP Xilinx. По крайней мере NO_SYS_NO_TIMERS я там не нашел. IP core axi_ethernet и драйвер для нее тоже надо обновлять до последней версии в ISE 13.4.

А по поводу стабильности, как выяснилось, сильно влияют настройки lwIP. По крайней мере, я подобрал такие, при которых 1.3.2 работает у меня стабильно. Наверно и 1.3.0 тоже бы так работало.

Не подскажите что за настройки, интереса ради?

Вопрос к тем, кто реализовывал Eth в XPS-SDK на плис. Замеряли ли Вы как быстро данные посланные с компьютера в плату с реализованным Eth вернутся обратно? У меня получалось на спартане 6 (speedgrade -2) со встроенным примером на С в SDK чуть больше 1 мс, если не превышать размер окна пакета. Замерял Wiresharkом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.