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

HTTP-сервер. Vivado 2019.1

Всем привет!

Библиотека LwIP предлагает для сборки несколько приложений которые находятся в директории apps.
Каким способом можно собрать http-сервер? Где-то нужно указать http-сервер в качестве таргета.
Xilinx SDK предлагает только TCP Echo Server.
Может быть кто-нибудь уже решал этот вопрос ?
 

XSDK.png

Изменено пользователем Jetrano

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


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

On 4/28/2024 at 1:21 PM, Jetrano said:

Всем привет!

Библиотека LwIP предлагает для сборки несколько приложений которые находятся в директории apps.
Каким способом можно собрать http-сервер? Где-то нужно указать http-сервер в качестве таргета.
Xilinx SDK предлагает только TCP Echo Server.
Может быть кто-нибудь уже решал этот вопрос ?

Убедитесь (по выводу в консоль Eclipse IDE) , что файл httpd.c у вас компилируется.
В main добавьте вызов функции httpd_init();

И все.
Страничка, отображаемая в браузере, лежит в папке http/fs

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


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

В 28.04.2024 в 13:43, dimka76 сказал:

Убедитесь (по выводу в консоль Eclipse IDE) , что файл httpd.c у вас компилируется.
В main добавьте вызов функции httpd_init();

И все.
Страничка, отображаемая в браузере, лежит в папке http/fs

Именно это было сделано в первую очередь.
Сообщение от линкера:
main.c:244: undefined reference to `httpd_init'.
Т.е. файлы находящиеся в папке http IDE не компилирует.

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


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

On 4/28/2024 at 6:05 PM, Jetrano said:

Т.е. файлы находящиеся в папке http IDE не компилирует.

Значит вам надо настроить IDE так, чтобы она компилировала эти файлы.

Видимо не достаточно просто их добавить в проект.

Может у вас makefile project ? Тогда надо сделать соответствующие записи в  makefile.

Еще.
У вас в том файле, в котором вы вызываете httpd_init, добавлен заголовочный файл #include "lwip/apps/httpd.h" ?

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


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

В 28.04.2024 в 18:41, dimka76 сказал:

Значит вам надо настроить IDE так, чтобы она компилировала эти файлы.

Видимо не достаточно просто их добавить в проект.

Может у вас makefile project ? Тогда надо сделать соответствующие записи в  makefile.

Еще.
У вас в том файле, в котором вы вызываете httpd_init, добавлен заголовочный файл #include "lwip/apps/httpd.h" ?

Заголовочный файл #include "lwip/apps/httpd.h" добавлен.
Вот с соответствующими записями в makefile придётся разбираться.

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


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

Откровенно блажная идея с веб-мордой в цинке доела не только мой мозг, но и мозги "начальства" - решение сделать было принято окончательно и бесповоротно. Само собой лвип с примерами был в первых рядах, т.к. поднимать линукс только ради этого не хотелось совсем. Учитывая динамический характер "сайта" и гемор со сборкой от виртуального диска тут же отказался. Файлы из примера были перенесены в проект и сделано динамическое формирование страниц в коде. Язык Си и работа со строками это отдельно-жутко-печальная песня. Желанный и никому не нужный на поверку результат был получен довольно быстро. Из подводных камней оказалось что разные браузеры шлют GET по разному, например, опера разбивает его на 2 tcp пакета которые лвип не склеивает хз почему - с эджем такой проблемы нет. Учитывая отсутствие с этим проблем у "больших" веб-серверов недоработка скорее всего в лвипе, включая и последние версии, из за упрощенной реализации.

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


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

В 01.05.2024 в 11:16, fguy сказал:

Откровенно блажная идея с веб-мордой в цинке доела не только мой мозг, но и мозги "начальства" - решение сделать было принято окончательно и бесповоротно. Само собой лвип с примерами был в первых рядах, т.к. поднимать линукс только ради этого не хотелось совсем. Учитывая динамический характер "сайта" и гемор со сборкой от виртуального диска тут же отказался. Файлы из примера были перенесены в проект и сделано динамическое формирование страниц в коде. Язык Си и работа со строками это отдельно-жутко-печальная песня. Желанный и никому не нужный на поверку результат был получен довольно быстро. Из подводных камней оказалось что разные браузеры шлют GET по разному, например, опера разбивает его на 2 tcp пакета которые лвип не склеивает хз почему - с эджем такой проблемы нет. Учитывая отсутствие с этим проблем у "больших" веб-серверов недоработка скорее всего в лвипе, включая и последние версии, из за упрощенной реализации.

В какой версии Vivado вы это всё выполнили? В той версии использовалась система сборки Cmake ?
Файлы примера копировали в проект или где-то указывали путь к папке http ?
Если я не ошибаюсь, Cmake исходя из настроек собирает библиотеку liblwip4.a и если предварительно где-то сформулировать требуемый таргет (web-морда), то в этой библиотеке будут все необходимые объектные файлы.

Изменено пользователем Jetrano

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


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

9 часов назад, Jetrano сказал:

В какой версии Vivado вы это всё выполнили? В той версии использовалась система сборки Cmake ?

Под проц цинка проект собирался под виндой в SDK 2018.3, косяк лвипа со склейкой пакетов проверял еще и в Vitis (ex SDK) 2023.1.

При сборке оболочка запускает разные тулзы - cmake это или что другое я не вникал - и так работает.

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


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

9 часов назад, Jetrano сказал:

Файлы примера копировали в проект или где-то указывали путь к папке http ?

В 01.05.2024 в 11:16, fguy сказал:

Файлы из примера были перенесены в проект и сделано динамическое формирование страниц в коде.

 

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


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

В 03.05.2024 в 20:36, fguy сказал:

 

Попробую повторить, спасибо!
А зачем браузер разбивает пакет с GET-запросом если размер этого запроса меньше размера MSS ?

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


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

13 часов назад, Jetrano сказал:

А зачем браузер разбивает пакет с GET-запросом если размер этого запроса меньше размера MSS ?

ХЗ, возможно особенности реализации и самого tcp то же - вы и сами будете отправлять страницу по частям через  tcp_write.

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


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

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

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

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

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

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

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

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

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

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