Подтвердить что ты не робот

Опыт использования (бесплатно) встроенных стеков TCP/IP?

Есть ли у кого-то особенно хорошие (или плохие) впечатления от любого из следующих встроенных стеков TCP/IP?

Мои потребности предназначены для надежного, простого в использовании порта. Размер кода не очень важен, производительность относительно важна, но очень важна простота использования и портирования.

Возможно, система использует RTOS, которая не была решена, но по моему опыту большинство стеков можно использовать с RTOS или без них. Скорее всего, платформа будет вариантом ARM (ARM7 или CM3, по всей вероятности).

Не слишком беспокоиться о прикреплении стека к Ethernet-драйверу, поэтому это не большой приоритет в выборе.

Я не очень заинтересован в извлечении стека из ОС, таких как Linux, RTEMS и т.д.

Меня также не интересуют коммерческие предложения, такие как Interniche, Micrium и т.д.

В стеке не нужны всевозможные колокола и свистки, не нужен IPv6, и мне не нужны какие-либо вещи поверх него (веб-серверы, FTP-серверы и т.д.). На самом деле возможно, что Я буду использовать только UDP, хотя я могу представить себе несколько сценариев, в которых предпочтительнее использовать TCP.

Опыт с другими стеками, которые я пропустил, конечно, тоже очень интересен.

Спасибо за ваше время и ввод.

4b9b3361

Ответ 1

Я использовал uIP и lwIP экстенсивно.

UIP

  • Отлично, если вы только хотите что-то базовое, как загрузчик
  • Малый размер.
  • Использует опрос, поэтому мы никогда не получали более 3 кбит: - (
  • Нет DHCP 'из коробки'
  • Плохая поддержка UDP.

LwIP

  • Полностью прерывание работает так быстро (~ x10)
  • Включает DHCP с отказом AutoIP
  • UDP с многоадресной рассылкой
  • Плюс больше

EDIT:
И мы никогда не использовали ни с RTOS, как никогда не было необходимости.

Ответ 2

+1 для lwIP.

Мы использовали это успешно в проекте несколько лет назад и обнаружили, что он в целом очень надежный. Мы обнаружили и исправили несколько проблем (в основном, в случае кода TCP), которые мы отправили обратно в проект, и даже несмотря на то, что проект немного изменился с тех пор, как мы обычно не обнаружили, что ему не хватает каких-либо функций.

Как вы подозреваете, он будет работать с RTOS или без него. Потребовалось около недели, чтобы работать в нашей системе с RTOS, что включало изменения, которые мы должны были сделать для поддержки необычного компилятора DSP. Поскольку вы, вероятно, используете GCC на ARM, вы можете избежать любого из этих усилий.

Он содержит гораздо больше функций, чем вам требуется, но если ваши требования меняются через несколько лет вниз по линии, вам будет лучше начать с более значительного стека.

Ответ 3

LwIP

Я работал над проектом с 3G-модемом, где нам нужен стек UDP/IP (без TCP) поверх PPP. Мы сузились до uIP и lwIP. В конце концов, мы выбрали lwIP, потому что у него PPP уже (uIP нет), и у нас было достаточно ОЗУ, чтобы сэкономить.

В нашем конкретном проекте не использовалась RTOS, и lwIP был хорош для использования без RTOS.

Я не принимал непосредственного участия в переносе кода lwIP, хотя я работал с драйвером модема, чтобы взаимодействовать с ним. Мое впечатление было то, что портирование заняло пару недель, чтобы все прошло гладко, для нашего инженера, у которого был предыдущий опыт TCP/IP. Код lwIP был взломан многими людьми и, следовательно, имеет некоторые грубые грани (например, кто-то бросил одинокий malloc() где-то), но это сработало для нас после небольшой настройки. Мы протестировали его с помощью независимого пакета проверки.

Таким образом, он был "соответствующим образом функциональным" для наших потребностей UDP/IP и PPP (но я не могу прокомментировать его возможности TCP).

Ответ 4

+1 для lwIP.

Он включен в базовый дизайн Luminary Micros (теперь TI) Serial to Ethernet с некоторыми дополнительными возможностями ( "скрипты на стороне сервера" и cgi), работающие на голом металле (без RTOS).

Он прочный и очень мощный, всего 32 КБ или ОЗУ.

Привет

ЧИМ

Ответ 5

Я доволен lwip на Stellaris Cortex-M3.

StellarisWare для платформы LM3S6965 включает демо-версию enet_lwip. Это небольшой веб-сервер, работающий поверх lwip, который работает на голом металле - без FreeRTOS в этом случае. Система управляется таймером и прерываниями Ethernet. Было довольно легко вырвать веб-сервер и заглянуть в мое приложение. Мне не обязательно становиться экспертом по lwip, чтобы он работал в первый раз.

Позже я понял, что мое приложение по сути было вызвано вызовом. Сначала у него была прокладка с разъемами. Я заменил этот слой гораздо более простым, который переводит lwip native upcalls в приложения upcalls и опциональный API-интерфейс lwip. Это позволило сэкономить больше места на флеш-памяти и оперативной памяти и сделать все быстрее и проще. С небольшой настройкой я получил его на плате S2E с использованием 52K-вспышки и 30K RAM.

Ответ 6

Я использовал стек Microchip TCP/IP. Я был очень доволен этим. Это было очень легко реализовать, доступно множество демонстрационных кодов/обучающих программ и поддержка множества протоколов HTTP, tFTP, SMTP, SNTP и т.д. Точка, которая не соответствует вашим требованиям, однако, заключается в том, что она не является переносимой к другой архитектуре. На самом деле, я думаю, что лицензия на стек явно запрещает это, потому что Microchip хочет, чтобы вы запускали стек только с помощью своего оборудования PIC18, PIC24 и PIC32. Тем не менее, есть внешний контроллер Ethernet, который они продают, что позволит вам использовать определенные части этого стека с их ENC28J60.

Ответ 7

Я использовал interniche на RTOS. Это полноценный стек и поддерживает множество функций. Поскольку вы ищете некоммерческую версию, мой голос идет на lwIP.