Ethernet w układach elektronicznych. Część 1
| TechnikaDynamiczny rozwój techniki i rosnące wymagania konsumentów sprawiają, że urządzenia zdolne do komunikowania się przez Internet zaczynają odgrywać coraz większą rolę. W przypadku współczesnych urządzeń multimedialnych, takich jak konsole, telefony komórkowe czy PDA, łączność z Internetem jest niemalże podstawowym wymogiem.
Programowalne moduły komunikacyjne
Rozwinięciem koncepcji prostych konwerterów Ethernet-RS232 są moduły wyposażone w niezbędne układy peryferyjne, złącze RJ45 oraz mikrokontroler umożliwiający uruchamiania aplikacji użytkownika. Takie podejście sprawia, że oferowany produkt jest bardziej elastyczny i przyczynia się do obniżenia kosztów końcowego urządzenia, gdyż implementacja własnego mikrokontrolera często nie będzie potrzebna. Moduł tego typu stają się dzięki temu wygodną platformą do dalszej rozbudowy.
Mają oczywiście odpowiednią warstwę sprzętową z warstwą sieciową opracowaną i sprawdzoną przez producenta. Produkty tego typu są oferowane m.in. przez firmę SystemBase. W jej ofercie znajduje się m.in. moduł Eddy-CPU v2.5 (rys. 8) wyposażony w 32-bitowy mikrokontroler z rdzeniem ARM9 oraz pamięci Flash (8MB) i SDRAM (32MB). Oprócz interfejsu Ethernet 10/100 i przetwornika ADC udostępnione zostały porty: USB, TWI, SPI. Moduł Eddy-CPU konfiguruje się za pomocą terminalu, przeglądarki lub aplikacji PortView współpracującej z portem szeregowym.
Duże zasoby sprzętowe umożliwiają instalację systemu Linux i pisanie działających pod kontrolą systemu operacyjnego programów, które mogą być znacznie bardziej złożone niż programy uruchamiane na "małych" mikrokontrolerach. Producent przygotował pakiet oprogramowania SDK przeznaczony do tworzenia własnych aplikacji. Udostępniono także gotowe do uruchomienia przykłady wraz z kodem źródłowym. W skład SDK wchodzi m.in. LemonIDE API, przykładowe kody źródłowe, dokumentacja oraz narzędzia do testowania i zarządzania modułem Eddy-CPU.
IDE zostało oparte na środowisku Eclips i zawiera zintegrowany, graficzny interfejs użytkownika (GUI), kompilator GNU C/C++ oraz edytor kodu. Wspomniana wcześniej firma Tibbo również dostarcza programowalne moduły ethernetowe, np. EM1206 (rys. 9). Zawierają one autorski, dwuzadaniowy system operacyjny Tibbo OS. Jego cechą charakterystyczną jest jednoczesna praca dwóch procesów: systemowego, odpowiedzialnego m.in. za obsługę sieci Ethernet oraz portów TCP i wirtualnej maszyny, na której uruchamiane są aplikacje użytkownika.
Producent zapewnia, że taka organizacja pracy wyklucza ryzyko zawieszenia systemu operacyjnego i utraty kontroli nad nim. Aplikacje napisane przez użytkownika są kompilowane do tzw. pseudokodu (pseudo-code lub pcode), interpretowane oraz wykonywane w następnej kolejności przez wirtualną maszynę znajdującą się w module. Dość interesującym rozwiązaniem zastosowanym przez Tibbo jest wbudowanie w układ debuggera, który pozwala w pełni kontrolować i nadzorować wykonywanie programów bez stosowania dodatkowych narzędzi sprzętowych.
Projektantom udostępnione zostało zintegrowane środowisko programistyczne - TIDE - pokazana na rysunku 10. Posiada ono udogodnienia typowe dla tego rodzaju narzędzi: kolorowanie i podpowiadanie składni, wbudowaną pomoc kontekstową oraz zintegrowany debugger oferujący zastawianie pułapek w kodzie (breakpoints), podgląd stosu, pracę krokową. Programowanie modułów Tibbo odbywa się w języku, którego składnia została zapożyczona z BASICa. Warto wspomnieć o obsłudze zdarzeń (events), tzn. dany fragment kodu zostanie wykonany w reakcji na określone zdarzenie, jakim może być np. odebranie pakietu TCP.
W takiej sytuacji może rozpocząć się wykonywanie przygotowanej uprzednio procedury obsługującej odebrany pakiet. Takie podejście pozwala zrezygnować z nieustannego odpytywania systemu operacyjnego, czy nadeszła oczekiwana ramka, co przekłada się na wzrost dostępnej mocy obliczeniowej. Mechanizm ten w swoim działaniu jest zbliżony do koncepcji przerwań, z tym że przerwania są najczęściej związane ze sprzętem, podczas gdy zdarzenia mogą odnosić się do bardziej abstrakcyjnych sytuacji, jak właśnie odebranie poprawnego pakietu.
Układy interfejsowe (ENC)
Pewną odmianą modułów komunikacyjnych Ethernet-RS232 są układy scalone oferujące podobną funkcjonalność, ale wymagające przygotowania oprogramowania we własnym zakresie. Przykładem takiego rozwiązania jest ENC28J60 produkowany przez firmę Microchip mający zintegrowane warstwy: MAC oraz sprzętową w standardzie 10BASE-T. Komunikacja z układem nadrzędnym, którym najczęściej będzie mikrokontroler, odbywa się za pomocą interfejsu SPI.
Wysoki stopień integracji sprawia, że do pracy wymagany jest jedynie transformator separujący, złącze RJ45 (lub złącze ze zintegrowanym transformatorem) oraz kilka elementów zewnętrznych. Na rysunku 11 pokazano podstawową aplikacje, która nie należy do szczególnie skomplikowanych. ENC28J60 ma wbudowany, konfigurowalny bufor nadawczo-odbiorczy o łącznej pojemności 8kB. Możliwość sprzętowego filtrowania przychodzących pakietów pozwala ograniczyć przetwarzanie danych jedynie do pakietów wysłanych przez właściwe urządzenia.
Układ ENC28J60 może współpracować z dowolnym mikrokontrolerem dzięki komunikacji przez port SPI. Komunikacja sieciowa sprowadzona została do zapisywania rejestrów kontrolnych PHY, MAC oraz MII i ponadto zapisywania i odczytywania danych z wewnętrznego bufora. Po umieszczeniu ramki ethernetowej wewnątrz bufora jest ona przekazywana przez układ do sieci. W buforze umieszczane są również ramki, które odebrano z sieci.
Warto zauważyć, że oprócz SPI układ zawiera linię INT, na której wystawiany jest sygnał przerwania po wystąpieniu jednego z uprzednio zdefiniowanych zdarzeń: błędu transmisji, zakończenia transmisji, zmiany stanu połączenia czy zakończenia pracy przez DMA. W swojej ofercie Microchip ma również układy ENC424J600 oraz ENC642J600, które stanowią zbliżony, nowszy odpowiednik układów ENC28J60. Najważniejszą zmianą jest wyposażenie tej serii układów w dwa interfejsy komunikacyjne: SPI (do 14 Mbit/s) oraz równoległy (do 160 Mbit/s), co pozwoli wybrać między prostszym projektem PCB a większą przepustowością.
Kolejną zmianą jest zwiększenie rozmiaru wewnętrznego bufora z 8kB do 24kB, co umożliwi przechowywania większej liczby ramek. Układ został ponadto wzbogacony w sprzętowe moduły ułatwiające prowadzenie bezpiecznej komunikacji, takie jak:
- moduł szyfrujący/deszyfrujący AES wspierający klucze 128-, 192- oraz 256-bitowe,
- moduł wyliczający wartość funkcji mieszających według algorytmu MD5 lub SHA-1 (hash), pozwalający jednoznacznie zidentyfikować pliki (niezależnie od ich nazwy) czy wyszukiwać pożądane pliki z pominięciem tych, które zostały zmodyfikowane w sposób nieautoryzowany,
- wsparcie dla algorytmów RSA czy Diffie-Hellman służących do bezpiecznej wymiany kluczy szyfrujących.
Funkcje te ułatwiają realizację protokołów bezpiecznej wymiany informacji, takich jak SSL czy TLS. W układach ENC424J600 oraz ENC642J60 zapisano na stałe adresy MAC, co znacząco powinno ułatwić projektowanie oraz produkowanie własnych urządzeń. Producent przewidział jednakże możliwość zmiany tego adresu na własny. Innym przykładem zintegrowanego kontrolera Ethernet jest 78Q8430 produkcji Teridian. W jego strukturze zawarto obsługę warstw MAC oraz PHY.
Układ został ponadto wyposażony w interfejs zbliżony do interfejsu pamięci SRAM, co czyni go szczególnie wygodnym w obsłudze przez procesory z magistralami 8-, 16- lub 32-bitowymi. Nie bez znaczenia jest wysoki stopień integracji, dzięki któremu z elementów zewnętrznych wymagane jest jedynie gniazdo RJ- 45. 78Q8430 został przeznaczony przede wszystkim do pracy w aplikacjach o dużej przepustowości, czego przykładem mogą być dekodery STB przesyłające przez sieć Ethernet strumień wideo. Schemat blokowy takiego rozwiązania przedstawiono na rysunku 12.
Jakub Borzdyński, jotbeage@interia.pl