2009-07-21 13 views
31

Czy ktoś ma szczególnie dobre (lub złe) doświadczenia z jednym z następujących stosów TCP/IP?Doświadczenia z (bezpłatnymi) wbudowanymi stosami TCP/IP?

Moje potrzeby są na solidnej, łatwym do portu stosie. Rozmiar kodu nie ma większego znaczenia, wydajność jest stosunkowo ważna, ale łatwość użycia jest bardzo ważna.

System prawdopodobnie użyje systemu operacyjnego czasu rzeczywistego, o którym nie zdecydowano, ale z mojego doświadczenia wynika, że ​​większość stosów może być używana z lub bez RTOS. Najprawdopodobniej platforma będzie wariantem ARM (ARM7 lub CM3 według wszelkiego prawdopodobieństwa).

Niezbyt zaniepokojony przykręceniem stosu do sterownika Ethernet, więc nie jest to duży priorytet w wyborze.

Nie jestem strasznie zainteresowany wydobywania stos z OS, takich jak Linux, rtems itp

Jestem również nie interesuje ofert handlowych, takich jak InterNICHE, Micrium itp ..

Stos nie potrzebuje wszystkich rodzajów dzwonków, gwizdki, nie wymaga IPv6, i nie potrzebuję żadnych rzeczy na wierzchu (serwery WWW, serwery FTP itp.). Możliwe, że użyję tylko protokołu UDP, chociaż mogę wyobrazić sobie kilka scenariuszy, w których TCP byłby lepszy.

Doświadczenia z innymi stosami, które przeoczyłem, są oczywiście również bardzo interesujące.

Dziękujemy za poświęcony czas & dane wejściowe.

Odpowiedz

8

lwIP

pracowałem nad projektem z modemem 3G, gdzie musieliśmy stos UDP/IP (TCP) nie na górze PPP. Zawęziliśmy do uIP i lwIP. Wybraliśmy lwIP w końcu, ponieważ miał już PPP (uIP nie działa) i mieliśmy wystarczająco dużo pamięci RAM.

Nasz szczególny projekt nie korzystał z systemu operacyjnego RTOS, a lwIP było w porządku bez RTOS.

Nie byłem bezpośrednio zaangażowany w przenoszenie kodu lwIP, chociaż pracowałem nad sterownikiem modemu, aby z nim współpracować. Moje wrażenie było takie, że portowanie zajęło kilka tygodni, aby wszystko przebiegło sprawnie, dla naszego inżyniera, który miał wcześniej doświadczenie z TCP/IP. Kod lwIP został zhakowany przez wiele osób, w związku z czym ma pewne ostre krawędzie (np. Ktoś wrzucił gdzieś samotnego malloc() gdzieś), ale zadziałało to dla nas po drobnym poprawieniu. Testowaliśmy go z niezależnym zestawem do sprawdzania poprawności.

Podsumowując, był "odpowiednio funkcjonalny" dla naszych potrzeb UDP/IP i PPP (ale nie mogę komentować jego możliwości TCP).

+1

Niesamowite, dziękuję za wejście ... – Dan

11

+1 dla lwIP.

Wykorzystaliśmy to z powodzeniem w projekcie kilka lat temu i okazało się, że generalnie jest bardzo niezawodny. Znaleźliśmy i naprawiliśmy kilka problemów (na ogół przypadków narożnych w kodzie TCP), które przesłaliśmy z powrotem do projektu, i mimo że projekt przesunął się dość często od tamtego czasu, ogólnie rzecz biorąc nie znajdowaliśmy go w żadnych funkcjach.

Jak podejrzewasz, będzie działać z lub bez RTOS. Trwało to około tygodnia, aby uruchomić nasz system z systemem plików RTOS, który zawierał zmiany, które musieliśmy wprowadzić, aby obsłużyć nietypowy kompilator DSP. Ponieważ prawdopodobnie używasz GCC na ARM możesz uniknąć tego wysiłku.

Zawiera więcej funkcji, niż jest to wymagane, ale jeśli Twoje wymagania zmienią się kilka lat później, lepiej będzie, gdy zaczniesz z większym stackiem.

+1

Również w przypadku LwIP najprawdopodobniej nie zdefiniujesz funkcji, których nie użyjesz do zapisania śladu kodu. – mpontillo

3

+1 dla lwIP.

Znajduje się w projekcie odniesienia Luminary Micros (obecnie TI) do Ethernetu z pewnymi dodanymi funkcjami (pewnego rodzaju "skrypty po stronie serwera" i cgi) pracujące na gołym metalu (bez RTOS).

Jest solidny i bardzo wydajny z 32 KB lub pamięcią RAM.

Pozdrowienia

PFM

3

Jestem zadowolony z lwip na Stellaris Cortex-M3.

StellarisWare dla tablicy eval LM3S6965 zawiera demo enet_lwip. Jest to mały serwer sieciowy działający na lwipie, który działa na gołym metalu - w tym przypadku nie ma FreeRTOS. System jest sterowany przez przerywniki timera i Ethernet. Łatwo było wyrwać serwer internetowy i upuścić moją aplikację. Nie musiałem zostać ekspertem od lwip, aby uruchomić to po raz pierwszy.

Później zdałem sobie sprawę, że moja aplikacja była nieodwołalnie kierowana. Początkowo miał uszczelkę do montażu w gnieździe. Zamieniłem tę warstwę na o wiele prostszą, która tłumaczy rodzime upuszczenia lwip na upcalls aplikacji, i wybrała interfejsowy interfejs API lwip. Pozwoliło to zaoszczędzić więcej pamięci flash i pamięci RAM, a wszystko stało się szybsze i prostsze. Przy odrobinie ulepszenia uruchomiłem go na płycie S2E za pomocą lampy błyskowej 52K i 30K RAM.

16

Użyłem rozległych programów uIP i lwIP.

uIP

  • Super, jeśli jesteś tylko chce coś podstawowe jak bootloader
  • niewielkie gabaryty.
  • Używa odpytywanie więc nigdy nie mam z nim nad 3kbit :-(
  • No DHCP 'z pudełka'
  • słabe wsparcie UDP

lwIP

  • Pełne przerwanie sterowane znacznie szybciej (~ x10)
  • Obejmuje DHCP z przełączaniem awaryjnym AutoIP
  • z UDP multicast
  • Plus więcej

EDIT:
i nigdy nie używane albo z RTOS jak nigdy nie było potrzeba.

+0

Możesz uzyskać UIP, aby zrobić więcej niż 3kbit/s. Miałem go> 100kByte/s, ale wymagało to znacznego ulepszenia. uIP jest dobre, jeśli masz ograniczony kod, ale jest to skrajnie gołe kości. –

+0

Moja implementacja jest obecnie uruchomiona na poziomie bliskim 245 kb/s, i to bez żadnych zmian w warstwie podstawowej. Zapewniłem jedynie, że wychodzące ramki były tak blisko jak tylko 1500 bajtów, a wywołania były blokowane. –

0

Użyłem stosu TCP/IP Microchip. Byłem z tego bardzo zadowolony. Było to bardzo łatwe do wdrożenia, wiele dostępnych wersji kodu demo/tutoriali oraz obsługa wielu protokołów HTTP, tFTP, SMTP, SNTP itp. Punkt, który nie pasuje do twoich wymagań, jest jednak taki, że nie jest łatwo przenośny do innej architektury. W rzeczywistości uważam, że licencja na stos wyraźnie to zabrania, ponieważ Microchip chce, abyś używał swojego sprzętu tylko PIC18, PIC24 i PIC32. Istnieje jednak zewnętrzny kontroler Ethernet, który sprzedają, dzięki czemu można używać pewnych części tego stosu z ich ENC28J60.

0

Użyłem interniche na RTOS. Jest to pełnoprawny stos i obsługuje wiele funkcji. Ponieważ szukasz wersji niekomercyjnej, mój głos jest na lwIP.

0

Możesz wypróbować open-source FNET TCP/IP stack.

+1

To naprawdę nie jest odpowiedź na jego pytanie. Wzmianka o dodatkowym stosie byłaby lepiej zrobiona jako komentarz. –

Powiązane problemy