Ethernet w układach elektronicznych, część 2. Mikrokontrolery i układy programowalne

| Technika

Oferta rynkowa producentów układów scalonych, modułów i innych rozwiązań komunikacyjnych zapewniających komunikację za pomocą Ethernetu jest bardzo szeroka i dołączenie urządzenia do sieci i Internetu nie stanowi już większego problemu. Dostępne są specjalizowane kontrolery, układy realizujące warstwę fizyczną, gotowe biblioteki, stosy TCP/IP oraz mikrokontrolery mające wbudowane kontrolery MAC czy nawet pełną obsługę warstwy sprzętowej.

Ethernet w układach elektronicznych, część 2. Mikrokontrolery i układy programowalne

Biblioteki do obsługi stosu TCP/IP

Tabela 1. Pamięć zajmowana przez poszczególne moduły biblioteki TCP/IP firmy Microchip

Przykładem firmy udostępniającej bezpłatnie stos TCP/IP dla produkowanych przez siebie mikrokontrolerów jest Microchip. Biblioteka ta współpracuje z układami PIC (PIC18, PIC24, dsPIC oraz PIC32). Stos napisano w języku C w sposób modułowy, co pozwala dołączyć do programu jedynie potrzebne funkcje i ograniczyć ilość wymaganej pamięci, a każda warstwa wykorzystuje interfejs udostępniany przez warstwy niższe.

Producent zadbał, aby użycie oprogramowania we własnych projektach nie wymagało zagłębiania się w tajniki protokołów sieciowych. Biblioteki zapewnia obsługę protokołów takich jak ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP, TFTP i pozwala łatwo zrealizować najpopularniejsze usługi sieciowe, np. serwer HTTP, obsługę poczty elektronicznej.

Należy jednak mieć na uwadze, że stos opracowany przez Microchipa wymaga pracy "asynchronicznej", aby na bieżąco monitorować stan warstwy MAC i reagować na zaistniałe zdarzenia: pojawienie się nowego pakietu, przekroczenie dopuszczalnego czasu oczekiwania. Zrezygnowano tu z implementacji systemu operacyjnego na rzecz wielozadaniowości bez wywłaszczania procesów (Cooperative Multitasking).

Oznacza to, że każdy uruchomiony "proces", którym w istocie będą funkcje biblioteczne stosu i funkcje użytkownika, może być wykonywane przez określony, krótki czas. Następnie ich wykonanie kończy się, a kolejny proces może zostać uruchomiony i wykonać powierzone mu zadanie. Wszystkie takie procesy są umieszczane wewnątrz nieskończonej pętli, co sprawia, że są wykonywane jeden po drugim przez cały czas pracy mikrokontrolera.

Szablon programu z główną funkcją main zawierającą działający w ten sposób stos TCP/IP można zobaczyć na listingu 1, natomiast w tabeli 1 wyszczególniono zapotrzebowanie na pamięć programu i RAM przez poszczególne moduły biblioteki. Inną firmą dostarczającą bibliotekę do obsługi protokołów TCP/IP jak InterNiche Technologies posiadająca w swojej ofercie stos NicheLite.

Kod został zoptymalizowany pod kątem zajmowanej pamięci programu (podstawowa biblioteka wymaga jedynie 12KB) oraz łatwości adaptacji do różnych rodzin mikrokontrolerów. Oprogramowanie napisano w języku C i jest zgodne z wytycznymi zawartymi w dokumentach RFC. Warto dodać, że użyta organizacja buforów upraszcza zarządzanie pamięcią i pozwala uniknąć kopiowania danych pomiędzy różnymi jej obszarami.

Wśród obsługiwanych protokołów można wymienić: ARP, IP, ICMP, UDP, TCP, DHCP, BOOTP czy TFTP. Obsługiwane są pakiety IPv4 oraz IPv6. Podstawowa wersja stosu może zostać wzbogacona o dodatkowe moduły realizujące obsługę usług takich jak: HTTP, FTP, Telnet, DHCP, SNMP czy poczta elektroniczna.

Na stronie producenta udostępniono przykłady wykorzystania stosu NicheLite w wybranych zestawach ewaluacyjnych przeznaczonych dla układów: STR912, LM3S9B90, LPC23xx czy Nios II (procesor syntezowany w układach FPGA firmy Altera). Stos TCP/IP (μC/TCP-IP) przeznaczony dla układów 16-, 32-, a nawet 64-bitowych układów dostarcza również Micrium. Rozwiązanie tej firmy powstało z myślą o systemach wymagających dużej niezawodności i odporności na błędy.

Przykładowym obszarem zastosowań, o którym wspomina producent, jest awionika. Aplikacje kierowane dla tego obszaru zastosowań wymagają certyfikacji. Stos μC/TCP-IP, według zapewnień Micrium, jest przygotowany do uzyskania stosownych poświadczeń niezawodności. Warto zwrócić uwagę na skalowalność stosu pozwalającą włączyć do projektu jedynie biblioteki realizujące wymagane funkcje bez konieczności kompilowania całego kodu źródłowego.

Przekłada się to na zmniejszenie rozmiaru kodu wynikowego, co w połączeniu z dbałością o optymalne wykorzystanie pamięci RAM pozostawia projektantom więcej zasobów do dyspozycji. Rozmiar bufora pakietów można dostosować do konkretnych wymogów aplikacji, a nie do maksymalnego rozmiaru ramki, co przyczynia się do dodatkowych oszczędności zasobów.

Ma to znaczenie zwłaszcza dla systemach wbudowanych, w których przesyłane są pakiety zawierające niewielką ilość danych. Prawidłowa praca μC/TCP-IP jest uzależniona od obsługi zaawansowanych mechanizmów podziału zadań (task scheduling) oraz zapobiegania jednoczesnego dostępu do zasobów przez więcej niż jeden proces (mutual exclusion), co zasadniczo narzuca konieczność wykorzystania systemu operacyjnego czasu rzeczywistego (RTOS).

Najprostszym wyjściem będzie wykorzystanie systemu μC/OS-II lub μC/OS-III opracowanego również przez Micrium, ale przewidziano możliwość dostosowania innych systemów do współpracy ze stosem μC/TCP-IP. Warto dodać, że stos opracowany przez Micrium może być rozbudowany o dodatkowe moduły (np. μC/DHCP, μC/FTP, μC/HTTP czy μC/POP3) pozwalające zrealizować obsługę popularnych usług sieciowych.

Zobacz również