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

STM32f401 + uIPv 1.0 + Web Server

Добрый день.

Собрал систему из  Nucleo STM32f401 и Enc28j60 шилда. Использую FreeRtos и uIP v 1.0.

Система завелась, работает DHCP и одно клиентское подключение по TCP.

Адаптировал пример веб сервера с uIP стека. Добавил туда свои веб странички. На страничках подключено несколько изображений и скриптов. Соответственно когда браузер это все начинает тянуть вместе - не все ресурсы страницы подгружаются. 

Если кто то работал с uIP и этим примером веб сервера, у вас наблюдались такие проблемы? Может ли этот веб сервер асинхронно обрабатывать запросы?

Буду благодарен если поделитесь своим опытом 

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


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

А может быть физика плохо работает? Погоняйте пакеты на канальном уровне. Может быть он банально данные теряет. Настройки стека тоже имеют значение. Я, правда, использовал lwIp. Подобных проблем не наблюдал. Что вас сподвигло на F401 использовать uIP, а не lwIP?

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


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

3 minutes ago, haker_fox said:

А может быть физика плохо работает? Погоняйте пакеты на канальном уровне. Может быть он банально данные теряет. Настройки стека тоже имеют значение. Я, правда, использовал lwIp. Подобных проблем не наблюдал. Что вас сподвигло на F401 использовать uIP, а не lwIP?

Физика, думаю, нормально работает, так как тот же веб сервер с примера - работает. Но там очень простой сайт. uIP взял чтоб сэкономить RAM память ))

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


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

/**

* The maximum number of simultaneously open TCP connections.

*

* Since the TCP connections are statically allocated, turning this

* configuration knob down results in less RAM used. Each TCP

* connection requires approximatly 30 bytes of memory.

*

* \hideinitializer

*/

#ifndef UIP_CONF_MAX_CONNECTIONS

#define UIP_CONNS 10

#else /* UIP_CONF_MAX_CONNECTIONS */

#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS

#endif /* UIP_CONF_MAX_CONNECTIONS */

оно?

 

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


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

56 минут назад, Kalyan сказал:

Буду благодарен если поделитесь своим опытом 

Поставить Wireshark и посмотреть что он выдаёт. Так же полезно сделать сниффер пакетов/состояний сокетов/HTTP/etc. на устройстве.

9 минут назад, esaulenka сказал:

оно?

 

И как работа web-сервера может зависеть от макс. числа разрешённых одновременно открытых TCP-сокетов?

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


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

4 hours ago, jcxz said:

И как работа web-сервера может зависеть от макс. числа разрешённых одновременно открытых TCP-сокетов?

Во-первых, там написано не "socket", а "connection".

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

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


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

13 минут назад, esaulenka сказал:

Во-первых, там написано не "socket", а "connection".

Во-первых: TCP-сокет == TCP-connection.

Цитата

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

Во-вторых: у ТС-а проблемы не со скоростью, а с недозагрузкой контента страниц. Такого не должно быть даже при всего одном доступном TCP-соединении. Не при Connection=close не при Connection=keep-alive.

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


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

#define UIP_CONNS 15

Этого количества хватает на все соединения которые идут от браузера.

Посмотрел загрузку самого жирного файла через Wireshark. Идут ре-трасмиты со стороны железки. Но документ оно загружает.

На сколько это нормально?

Безымянный.png

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


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

17 минут назад, Kalyan сказал:

Посмотрел загрузку самого жирного файла через Wireshark. Идут ре-трасмиты со стороны железки. 
На сколько это нормально?

Почитайте про работу TCP-стека. Чтобы его запустить, недостаточно просто передрать пример из инета.

Проблемы у вас уже на уровне TCP, ещё до HTTP. В 7-м кадре уже начинаются. Комп вашей железке присылает 678 байт, а она подтверждает только 624 из них. Поэтому комп потом начинает делать повтор в 10-м кадре.

Также непонятно по какой причине ваша железка в 9-м кадре начинает повтор 7-го кадра. Без запроса со стороны компа. Зачем?

Такое ощущение, что между 7-м и 9-м кадрами ваша железка обнаруживает таймаут связи и поэтому начинает перезапрос. Хотя между ними всего 10 мсек разницы. 

 

PS: Вы вроде писали что проблемы у вас с недозагрузкой контента web-страниц. А на самом деле у вас проблемы уже с работой TCP.

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


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

1 hour ago, jcxz said:

Во-первых: TCP-сокет == TCP-connection

Прошу прощения. Читаю "сокет", пишу "сокет", думаю "порт".

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


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

36 минут назад, esaulenka сказал:

Прошу прощения. Читаю "сокет", пишу "сокет", думаю "порт".

Порт обычно для web один открывают. Может можно и больше, но не знаю зачем?

Вобщем там у ТСа явно на уровне TCP какие-то проблемы.

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


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

9 hours ago, jcxz said:

Вобщем там у ТСа явно на уровне TCP какие-то проблемы.

Интересно, а этот uIP вообще развивается... по-мне для такого камня, как у автора, нужно lwIP взять. Он точно рабочий. 

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


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

5 hours ago, haker_fox said:

Интересно, а этот uIP вообще развивается...

Рекомендую сначала задавать подобные вопросы в гугл. Очень много интересного вылезает.

https://github.com/contiki-os/contiki/tree/master/core/net/ip

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


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

8 minutes ago, esaulenka said:

Рекомендую сначала задавать подобные вопросы в гугл. Очень много интересного вылезает.

Ну это был вопрос риторический. Смысла не ощущаю сейчас в uIP, PetitFs... всё это писалось во времена AVR.

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


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

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

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

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

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

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

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

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

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

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