LINUX.ORG.RU

минималистичные реализации TCP

 , ,


2

4

Как-то так получилось, что имея железку с 256 килобайтами памяти, захотелось мне ее конфигурировать через веб-морду. Ну там светодиодами мигать, режимы работы uart переключать, да мало ли. Т.е. запустить на ней какой-никакой, но tcp-стек и натянуть на него еще какой-нить минимальный веб-сервер.

Сама железка — это девайс на основе fpga. Процессор, ethernet mac — реализованы в ней, соответственно. Беда только в том, что в такой объем памяти никакие не то, что линуксы, но и rtems толком не влезает.

Из проектов, работающих на bare metal, нашел только заброшенный uIP. Есть, конечно, последователь в виде lwIP, но этот гад хочет динамическое выделение памяти, а мне уж очень хочется все сделать в статике.

Короче говоря, подскажите, есть ли активные (или достаточно зрелые) проекты, которые бы позволили такую задачу решить.

---

UPD: забыл написать, что оно портабельным должно быть. Т.е. по минимуму всякого хардкора с ассемблером. В идеале весь стек должен дергать фунции типа hal_send() и hal_receive() для отправки «сырых» данных драйверу.

★★★★★

минималистичные реализации рабочего стола по рдп

необучаемые

anonymous ()

а что-там у ардуин? посмотрите у них как реализовано

int13h ★★★★★ ()

Посмотри микрочиповский TCP/IP стек для 8-миразрядных PIC. Оно страшное, зато маленькое.

Stanson ★★★★★ ()
Ответ на: комментарий от int13h

погляжу, спасибо. Надеюсь, что они там не все на ассемблере для AVR написали.

demidrol ★★★★★ ()

Embox

https://github.com/embox/embox

-- на stm32f4 discovery (192kb RAM) делали httpd. Есть порт под microblaze, должно помочь быстрее затащить на FPGA

anonymous ()

Вопрос: а какие задачи будет решать железяка? Может проще свой накатать? Для UDP я так и сделал, может TCP сильно сложнее, не пытался... (а в ПЛИС вообще свою простейшую UDP принималку-отправлялку делал, без процессора и какого-либо стороннего MAC-а...)

Просто uIP и lwIP всё же с прицелом на некоторую универсальность сделаны, а своё велосипед можно заточить максимально под задачу и будет в статике всё.

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Задача тривиальная — конвертировать UDP-пакеты в Spacewire, данные на один порт, таймкоды — на другой.

Http — это я жирую. Хочется всякую статистику смотреть не какой-то самописной программой, общающейся с железкой по непонятному протоколу, а натурально веб-браузером.

demidrol ★★★★★ ()
Ответ на: комментарий от demidrol

Ясно. Припоминаю web-сервера на AVR-ках, они же как-то туда их запихнули, и видимо написать самому обрубок минимально-достаточно совместимый с HTTP вполне реально.

I-Love-Microsoft ★★★★★ ()

я бы забил болт и слал бы UDP. Это очень популярное решение, но сделай по уму: номера пакетов, какую-нибудь авторизацию.

Будет удобнее, чем TCP, потому что парсить пакеты проще, чем поток.

max_lapshin ★★★ ()

Поищи в гугле по «unsigned int ISNGenHigh; // upper word of our Initial Sequence Number» , фик знает откуда это изначально взялось.

ilovewindows ★★★★★ ()
Последнее исправление: ilovewindows (всего исправлений: 1)
Ответ на: комментарий от demidrol

Хочется всякую статистику смотреть не какой-то самописной программой, общающейся с железкой по непонятному протоколу, а натурально веб-браузером.

Решение тривиальное: самописную программу, «общающуюся с железкой по непонятному протоколу», научить отдавать красивую картинку в браузер.

kawaii_neko ★★★ ()

Да, на Embox это сделать довольно просто. Кроме веб-морды на 192 кБ (наверное, то что хочется) на этот же контроллер уместили и sip-телефон. Плюс, у нас можно спросить если что:)

anonymous ()

Fuzix OS. Ядро потребляет 32 Кбайт ОЗУ.

Deathstalker ★★★★★ ()
Ответ на: комментарий от anonymous

embox - это интересно, уже хотя бы потому что на леоне работает

demidrol ★★★★★ ()
Ответ на: комментарий от demidrol

Да, мы довольно плотно работали с fpga-шниками. Результат поддержка leon и microblaze, ну и по их просьбе затащили tcl, с возможностью прямого обращения к памяти. Правда в 256 kB врядли tcl влезет.

anonymous ()
Ответ на: комментарий от Laz

A minimal configuration footprint in flash of as 10KB, A full host-mode configuration footprint of 20KB, Required amount of RAM < 16 K

Ничоси «пико»... Но за ссылку спасибо, интересный проект, выбор всегда хорошо :)

I-Love-Microsoft ★★★★★ ()

всем спасибо за ответы. Вариантов хватит не на один месяц работы.

demidrol ★★★★★ ()

Беда только в том, что в такой объем памяти никакие не то, что линуксы, но и rtems толком не влезает.

не надо так.

http://www.contiki-os.org/ - и это совсем не предел минимализма.

qulinxao ★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.