Стек протокола TCP/IP без ОС

Я ищу стек TCP/IP, который можно использовать без ОС. Наш клиент имеет "отвращение" к прерываниям и не хочет, чтобы настоящая ОС находилась на встроенной плате, которую мы строим. Желательно перенести как можно больше функциональности на FPGA из-за того, что мы будем использовать только ручку 50-100 МГц. И я уверен, что лицензионный материал GPL не будет приемлемым для этого клиента. (Из-за связанной с этим правовой трясины. Они ожидают, что будут иметь неограниченные права на программное обеспечение после его завершения.)

Ответ 1

uIP (микро-IP) и lwIP (легкий IP) - оба кандидата, заслуживающие рассмотрения. По словам оригинального разработчика обоих стеков - Адама Дункеля - одно из главных отличий между ними: "lwIP больше, чем uIP, но обеспечивает лучшую пропускную способность". Оба стека используют модифицированную лицензию BSD и используются в коммерческих продуктах.

Ответ 2

Это не обязательно отвечает на ваш вопрос так, как вы хотите, чтобы он ответил (это не в разделе комментариев, так как моя диатриба, вероятно, будет слишком длинной). Тем не менее, я думаю, что это может быть полезно.

Несколько пунктов. Я думаю, вы должны перевоспитать своих клиентов на преимуществах и издержках прерываний. Прерывания - это очень эффективный способ управления устройством, и, если вы не будете дотошны в отношении своего кодирования, вряд ли вы сравните производительность с кодом без прерывания.

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

Возможно, вам удастся найти стек TCP под более разрешительной лицензией, чем GPL (позволяя им эффективно закрыть его). Если у вас есть компилятор C для вашей FPGA, вы можете заглянуть в uIP, который имеет очень разрешительную лицензию:/p >

Авторское право (c) 2001-2006 годы, Адам Данкелс и Шведский институт информатики

Все права защищены.

Распространение и использование в исходной и двоичной формах с модификацией или без нее разрешены при условии соблюдения следующих условий:

  • Распространение исходного кода должно содержать вышеуказанное уведомление об авторских правах, этот список условий и следующий отказ от ответственности.

  • Распространения в двоичной форме должны воспроизводить вышеупомянутое уведомление об авторских правах, этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставляемых при распространении.

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

ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ АВТОРОМ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ ОТКАЗЫВАЮТСЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, НЕПРЯМЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ПОСЛЕДУЮЩИЕ ИЛИ КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАКУПКУ ЗАМЕЩЕНИЯ ТОВАРЫ ИЛИ УСЛУГИ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ БИЗНЕСА), КАКИЕ-ЛИБО ВЫЗЫВАЕМЫЕ И НА ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, В КОНТРАКТЕ, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЙСТВИЯХ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНОЕ), ВОЗНИКАЮЩИХ В ЛЮБОМ ПУТЕМ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ ОЗНАКОМЬТЕСЬ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

Что он, "не должен выпускаться под GPL" или какие-либо другие вирусные оговорки, и единственным атрибутом является включение уведомления об авторских правах.

Ответ 3

В настоящее время я использую библиотеку lwIP на ARM Cortex-M3 с частотой 50 МГц без ОС. Это проект, основанный на Luminary Micro (теперь TI) Stellaris Serial to Ethernet Reference Design Kit (http://www.luminarymicro.com/products/rdk-s2e.html).

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

У меня нет связи с TI или Luminary, просто очень счастливым клиентом.

Ответ 4

Я написал стек Ethernet + TCP на "голом металле" для 16-разрядного DSP Texas Instruments. Отсутствие широкого использования адресов было довольно неприятным; некоторые структуры данных хранят данные, упакованные по два байта на слово, в то время как другие хранят один байт на слово (в компиляторе C оба "char" и "int" имеют 16-битные типы). Ни один из Ethernet или TCP-кода не использует прерывания; оба обрабатываются в режиме "вызов как обычно", который обычно составляет около 100 раз в секунду. Производительность не супер-пупер, но в целом она адекватна. Возможно, самая большая слабость в моем стеке заключается в том, что он не обрабатывает пакеты не по порядку (пакеты, выходящие из последовательности, будут проигнорированы, они, надеюсь, будут повторно переданы после прибытия ожидаемых пакетов). То, что вы ищете, конечно, выполнимо, хотя это не обязательно означает, что это стоит усилий.

Кстати, мой TCP-стек поддерживает довольно интересный "эхо-сервер" на порте 23. Любое количество клиентов telnet может подключаться к порту 23, и любые передаваемые им данные будут возвращены им. Хотя этот сервер просто использует данные эхо, он может быть адаптирован для отправки таких вещей, как документы, полностью без гражданства. Кто-нибудь видел что-нибудь подобное?

Ответ 5

Просто добавив примечание, что существует довольно новый стек TCP/IP с открытым исходным кодом, предназначенный для MCU в Freescale FNET. Лицензия LGPL/GPLv3, отличная от некоторых других лицензированных BSD, поэтому может быть непригодна для исходного проекта плаката, но может по-прежнему иметь отношение к другим пользователям. В нем перечислены Kinetis (Cortex-M4) в качестве поддерживаемой платформы вместе с некоторыми частями ColdFire.

Ответ 6

Ну, я наткнулся на этот пост в результате взгляда на FNET, и хотя его старый, его не ответил, так что я добавлю свои два цента... Micromonitor - это монитор загрузки, который при автономном запуске поддерживает клиент/сервер TFTP, клиент DHCP, клиент/сервер ping и простой интерфейс командной строки на основе UDP. Он включает демонстрационные приложения, которые позволяют подключать LWIP непосредственно к базовому драйверу ethernet, используемому bootmonitor. Это позволяет использовать демоверсию в любом микромониторном порту практически без изменений.

Нет прерываний, нет GPL... просто цикл опроса. Примеры приложений включают несколько разных подключений: (LWIP, LUA, PICO-C, BWBASIC и т.д.). Демонстрация включает HTTP-сервер (перехватывает файловую систему uMon TFS, поэтому вы просто создаете базовые файлы html), командный сервер на основе UDP, клиент telnet и клиент http-get. Большинство демонстраций являются расширениями демонстраций которые поставляются с LWIP.

Проверьте это... http://www.umonfw.com

Ответ 7

Вы можете использовать Simulink Embedded Coder для его реализации. А затем, если вам нужно, вы можете изменить сгенерированный код. (Конечно, не рекомендуется, если у вас есть другой вариант, например, одно из решений, указанных выше.)