laboratoryjny generator i analizator ramek ethernet
Transkrypt
laboratoryjny generator i analizator ramek ethernet
Dariusz Kościelnik Jacek Stępień Katedra Elektroniki Akademia Górniczo-Hutnicza al. Mickiewicza 30, 30-059 Kraków [email protected], [email protected] 2006 Poznańskie Warsztaty Telekomunikacyjne Poznań 7 - 8 grudnia 2006 LABORATORYJNY GENERATOR I ANALIZATOR RAMEK ETHERNET Streszczenie: W artykule przedstawiono konstrukcję i zasadę działania układów generatora i analizatora ramek Ethernet, wykorzystywanych podczas zajęć laboratoryjnych ze studentami kierunku Elektronika. Urządzenia umożliwiają zapoznanie ze strukturą rejestrów popularnego kontrolera sieci Ethernet, tworzenie i nadawanie własnych ramek oraz ich odbiór i wstępna analizę. 1. WPROWADZENIE Generacja i analiza ramek Ethernetowych realizowana jest zazwyczaj podczas zajęć laboratoryjnych w oparciu o komputery PC, wyposażone w karty sieciowe. Stworzenie oprogramowania sterującego z poziomu aplikacji użytkownika nadawaniem czy odbiorem ramek, z wykorzystaniem driver’ów systemowych jest zadaniem, któremu sprosta każdy przeciętny informatyk. Wydawać by się mogło, że uniwersalność takiego rozwiązania, bazująca na szerokich możliwościach aplikacji użytkownika predysponuje je do zajęć dydaktycznych. Podejście takie odsuwa jednakże kwestię analizy protokołu sieciowego od zagadnień związanych ze sprzętem w kierunku oprogramowania. Dla konstruktora-elektronika wydaje się wiec to być w jakimś sensie ograniczeniem. Karta sieciowa traktowana jest jako pewnego rodzaju interfejs wejścia/wyjścia, natomiast bezpośrednią generację i odbiór ramek zapewnia odpowiednie wykorzystanie funkcji oferowanych przez driver. Nie pozwala to na bezpośrednie odwoływanie się do rejestrów wewnętrznych kontrolera sieci, jak również ogranicza obserwację jego pracy do zakresu podstawowych funkcji, obsługiwanych przez oprogramowanie systemowe. Budowa kart sieciowych utożsamiana jest obecnie z firmowymi, najczęściej nieudokumentowanymi od strony technicznej chipsetami układów sterujących, o funkcjach których niewiele wiadomo. Poza takimi rozwiązaniami dostępne są jednak również układy kontrolerów ethernetowych, ogólnego przeznaczenia. Są to układy, o charakterystycznej dla mikrokontrolerów strukturze rejestrowej, pozwalające na skonstruowanie własnego, dedykowanego dla sieci Ethernet urządzenia. Urządzeniem tym może być zarówno klasyczna karta sieciowa, jak i dowolny inny moduł (również niezależny od komputera PC) pracujący zgodnie z zasadami protokołu IEEE802.3. Taki właśnie układ kontrolera protokołu Ethernet wykorzystano do skonstruowania sprzętowego generatora i analizatora ramek. 2. BUDOWA URZĄDZEŃ Struktura układowa obydwu modułów jest bardzo podobna. Są to niezależne urządzenia pracujące pod kontrolą mikrokontrolera jednoukładowego firmy Atmel AT89S8252, komunikujące się z komputerem sterującym za pośrednictwem portu szeregowego RS232. Różnice w konstrukcji układów generatora i analizatora ramek sprowadzają się do wykorzystania w układzie analizatora dodatkowego układu zewnętrznej pamięci RAM, przechowującej odebrane ramki danych. 2.1. KONTROLER ETHERNET RTL8019AS Układem odpowiedzialnym za realizację procesu nadawania i odbioru ramek jest jednoukładowy kontroler Ethernet firmy Realtek – układ RTL8019AS. Podstawowe cechy tego układu kontrolera to: • Kompatybilność ze standardami Ethernet II i IEEE 802.3: 10Base5, 10Base2 oraz 10BaseT, • Wbudowana pamięć SRAM o pojemności 16KB, • Dwa 16- bitowe kanały DMA, • 16 bajtowa kolejka FIFO, • możliwość współpracy z 8, 16 i 32 bitowymi systemami mikroprocesorowymi, • obsługa transmisji typu unicast (MAC), multicast oraz broadcast. Strukturę modułową układu przedstawiono na Rys. 1. Może ona umownie zostać podzielona na dwie wzajemnie niezależne części: tor odbiorczy i nadawczy. Moduł odbiorczy umożliwia zapisywanie odczytywanych zgodnie z taktem zegara bitów, do rejestru przesuwnego. Rozpoczyna pracę w momencie kiedy na wejściu układu wykryty zostanie sygnał nośnej. Wchodzący w skład toru odbiorczego detektor synchronizacji ramki wykrywa znacznik początku ramki SFD (ang. Start Frame Deliminater). Każdy kolejny odebrany bajt jest przesyłany do kolejki FIFO, a licznik odebranych bajtów jest inkrementowany. Wewnętrzny układ DMA nadzoruje przepisywanie C OL C RS UKŁAD DETEKC JI KOLIZJI BREQ,BAC K /AC K, READY /MRD, /MWR ARBITRAŻ BSC PROTOKÓŁ PLA TABLIC A ADRESOWA UKŁAD WERYFIKAC JI ADRESU RXC REJESTR STATUSOWY 8 8 8/16 16 BYTE FIFO NAD/ODB LIC ZNIK RXD TXC TXD M U X NADAJNIK GENERATOR C RC GENERATOR PREAMBUŁY, JAM M U X REJESTRY DMA 1 MAGISTRALA ODBIORNIK BUFORY DMA FIFO C ONTROL LOGIC I / O B U F O MAGISTRALA ADDRES/DANE RXD Rys. 1. Schemat blokowy układu kontrolera sieci Ethernet RTL8019AS kolejnych bajtów ramki z pamięci FIFO do bufora kołowego, zorganizowanego w formie 256-cio bajtowych obszarów (stron) wewnętrznej pamięci RAM. Stąd, po skompletowaniu i weryfikacji całej ramki mogą zostać odczytane przez procesor nadrzędny. Pierwsze sześć bajtów (czyli adres odbiorcy) następujących po SFD jest sprawdzane przez układ kontroli adresu. Decyduje on na podstawie parametrów wpisanych w rejestrach wewnętrznych kontrolera o przyjęciu, bądź odrzuceniu aktualnie odbieranej ramki. W przypadku adresów typu multicast do sprawdzenia wykorzystywany jest algorytm filtracji hash. Zadaniem układu generatora i kontroli CRC podczas odbioru jest obliczenie sumy kontrolnej przychodzącego pakietu i porównanie jej z sumą zapisaną na końcu ramki przez stację nadającą. W przypadku zgodności sumy obliczonej i odebranej ustawiany jest znacznik oznaczający poprawność CRC. Jeżeli sumy nie będą zgodne, zapamiętywany jest kod błędu i pakiet zostaje odrzucony (chyba że konfiguracja rejestrów zezwala na przyjęcie pakietów z nieprawidłową sumą kontrolną). Proces generacji ramki Ethernet podzielić można na trzy etapy: • przygotowanie danych do wysłania, • konfiguracja rejestrów wewnętrznych, inicjująca nadawanie, • sprawdzenie stanu rejestru statusu w celu nadzorowania poprawności transmisji. Przygotowanie danych do wysłania sprowadza się do odpowiedniego skonfigurowania wewnętrznego kanału DMA układu, a następnie wpisywaniu danych do wejściowego portu DMA. Zostaną one stamtąd automatycznie przeniesione do pamięci podręcznej kontrolera. Po skompletowaniu całości danych przeznaczonych do transmisji niezbędne jest zaprogramowanie odpowiednich rejestrów „wskaźnikowych” układu, na podstawie których układ samodzielnie konstruuje ramkę Ethernet. Pamięć podręczna przechowywać może więcej niż jedną ramkę danych. Dzięki temu możliwa jest wstępne przygotowanie ciągu ramek transmisyjnych, a ich nadawanie może być przeprowadzane bez konieczności komunikacji z układami zewnętrznymi. Poprawność procesu transmisji kontrolowana jest poprzez nadzorowanie stanu bitów rejestru statusowego. W wypadku wykrycia błędów lub zakłóceń możliwe jest zgłoszenie przerwania do systemu nadrzędnego. 2.2. ZASADA DZIAŁANIA MODUŁÓW Układy generatora i analizatora ramek pracować mogą w dwóch trybach: • Trybie zdalnym, w którym podłączone są do komputera PC i pracują pod kontrolą aplikacji sterującej, • Trybie ręcznym, w którym pracują jako układy niezależne od zewnętrznego komputera a całe sterowanie realizowane jest za pomocą przycisków umieszczonych na urządzeniu. Schemat blokowy układów przedstawiono na Rys. 2. Układ generatora ramek w obu trybach pracy musi zostać wstępnie zainicjowany przez komputer, który zapisuje do wewnętrznej pamięci dane przeznaczone do transmisji. Cały proces nadawania Wyświetlacz Wyœw ietlaczLCD LCD Układ zasilający Uk³ad zasilaj¹cy (zasilacz/baterie) (zasilacz/baterie) Magistrala adresowa Adres/Dane Dekoder adresu Magistrala danych RS232 Mikrokontroler AT89C8252 Kontroler sieci RTL8019AS 74HC573 Pamiêæ RAM Pamięć RAM Rys.2 . Schemat blokowy generatora i analizatora ramek Ethernet odbywa się już niezależnie od komputera PC (urządzenie może zostać od niego odłączone i pracować samodzielnie, po wcześniejszym zapisaniu danych do transmisji w wewnętrznej pamięci nieulotnej). Kolejne etapy przetwarzania danych w procesie transmisji oraz stan urządzenia obrazowany jest na wyświetlaczu LCD, w postaci odpowiednich komunikatów. Wyświetlacz umożliwia również „podejrzenie” zawartości generowanej ramki. Układ może pracować w trybie jednokrotnej generacji ramki (wyzwalanie ręczne) lub w trybie automatycznym – ramka generowana jest wtedy okresowo, co określony zaprogramowany w układzie odcinek czasu. Analizator ramek może pracować zgodnie z zaprogramowanymi przy pomocy komputera PC parametrami lub przy wykorzystaniu predefiniowanego i zapisanego w kodzie programu zestawu parametrów konfiguracyjnych. Odbierane ramki umieszczane są w pamięci RAM, a na wyświetlaczu pojawiają się informacje o ilości odebranych ramek i stanie urządzenia. Możliwe jest oczywiście również obserwowanie bezpośrednio na wyświetlaczu zawartości pola danych poszczególnych ramek. Ponieważ w układzie tym, do przechowywania odebranych ramek wykorzystywana jest pamięć ulotna więc aby zapewnić pełna przenośność danych, wyposażone zostało w układ bateryjnego podtrzymania napięcia. 2.3. APLIKACJA STERUJĄCA Zarówno generator jak i analizator pracować mogą pod nadzorem aplikacji sterującej zainstalowanej na komputerze PC i komunikującej się z modułem za pomocą odpowiednich komunikatów przesyłanych poprzez interfejs RS232. Zadania realizowane przez aplikację sterująca generatorem ramek są w gruncie rzeczy bardzo elementarne. Sprowadzają się do odczytu z wcześniej skonstruowanego pod dowolnym edytorem pliku tekstowego, zawierającego dane, które mają być wysyłane w postaci ramki Ethernet (pojedynczej lub sekwencji) i przesłania go do urządzenia. Transmisja ramki może zostać przeprowadzona w sposób w pełni automatyczny – po podaniu nazwy pliku z danymi do wysłania aplikacja przesyła dane do kontrolera i programuje go w tryb jednokrotnej transmisji ramki. Jednakże, aby rozszerzyć funkcjonalność oprogramowania oraz przystosować je do zajęć laboratoryjnych zaimplementowana została możliwość samodzielnego programowania wewnętrznych rejestrów kontrolera RTL8019. Rozbudowana funkcja pomocy zawiera opis wykorzystywanych podczas transmisji i odbioru rejestrów wewnętrznych kontrolera. Dzięki temu możliwe jest ręczne, stopniowe konfigurowanie trybu pracy urządzenia oraz obserwacja jaki wpływ na jego pracę mają zmiany Rys. 3. Przykładowy ekran aplikacji współpracującej z generatorem ramek zawartości poszczególnych rejestrów sterujących (Rys. 3). W takim przypadku wysłanie pojedynczej ramki z danymi, wcześniej przesłanymi do kontrolera wymaga znacznie bardziej skomplikowanej obsługi. Przykładowa sekwencja programowania procesu transmisji ramki jest następująca: • Należy załadować do licznika DMA długość pakietu transmitowanego do pamięci podręcznej kontrolera, • Następnie określamy miejsce w pamięci w którym znajdują się dane transmisyjne (programujemy rejestry adresu startowego DMA), • Odpowiednio ustawiamy tryb pracy kontrolera DMA. • Bajt po bajcie przepisujemy treść pakietu do portu zdalnego DMA. • Ustawiamy w rejestrze startowym numer wykorzystywanej strony pamięci układu • Ustawiamy w liczniku bajtów do nadania długość pakietu, który chcemy wysłać z bufora nadajnika, • W rejestrze sterującym ustawiamy parametry transmisji • Ustawiamy bity odblokowujące układ nadajnika. Po zakończeniu nadawania pakietu można sprawdzić poprzez rejestr statusowy czy transmisja zakończyła się pomyślnie. W podobny sposób, programując i odczytując stany poszczególnych rejestrów i pamięci kontrolera możemy realizować inne operacje, np. transmisje niestandardowe – ramek dłuższych i krótszych niż zdefiniowane dla sieci Ethernet itp. Znacznie bardziej rozbudowana wizualnie jest aplikacja współpracująca z analizatorem ramek Ethernet. Wygląd okna głównego programu przedstawiono na Rys. 4. Zostało ono podzielone na kilka podstawowych obszarów funkcjonalnych, opisanych na rysunku. W obszarze pamięci RAM analizatora zgromadzone są kontrolki sterujące pamięcią statyczną urządzenia. Pozwalają one na przepisanie ramek z bufora kołowego kontrolera do pamięci RAM oraz pokazują stopień zajętości pamięci. Przesłane z analizatora do komputera i rozkodowane ramki wyświetlane są na ekranie w obszarze odbierania danych. Za pomocą przycisków w obszarze adresów MAC możliwe jest zapisanie unikatowego, przydzielonego urządzeniu adresu fizycznego oraz określenie adresu rozsyłania grupowego (ang. multicast). Obszar rejestrów stron pozwala na śledzenia stanu rejestrów kontrolno sterujących związanych z buforem kołowym. Możliwe jest więc nie tylko obserwowanie i analizowanie poszczególnych pól odebranej ramki ale śledzenie stanu rejestrów kontrolera odpowiedzialnych za kontrolowanie procesu odbioru ramki. Oprogramowanie umożliwia ponadto przeprogramowywanie kodu źródłowego w mikrokontrolerze jednoukładowym AT89S8252. 3. PODSUMOWANIE Omówione w artykule układy sprzętowego analizatora i generatora ramek Ethernet są w pełni funkcjonalnymi urządzeniami, pozwalającymi na przybliżenie podczas zajęć laboratoryjnych podstawowych mechanizmów działania protokołu Ethernet. Ten typ podejścia do zagadnienia pozwala jednocześnie na bliższe zapoznanie się ze strukturą sprzętową urządzeń sieciowych oraz niskopoziomowymi procedurami programowania układu kontrolera sieciowego. Wykorzystanie tego typu urządzeń pozwala również na łatwą rozbudowę stanowiska laboratoryjnego, np. o oscyloskop, pokazujący stan linii transmisyjnej, czy też „krokowanie” procesu generacji ramki z jednoczesnym podglądem stanu rejestrów wewnętrznych kontrolera. Rys. 4. Okno główne programu współpracującego z analizatorem ramek Niewątpliwie większość z przedstawionych funkcji realizowanych przez urządzenia można byłoby łatwo zrealizować za pomocą oprogramowania na komputer PC, wyposażonego z kartą sieciową, niemniej wydaje się, że dla przyszłego inżyniera-elektronika takie sprzętowe podejście jest znacznie bardzie interesujące. SPIS LITERATURY [1] Web 51 - RTL8019AS Packet Driver rev. 1.0 Radek Benedikt http://web51.hw-server.com/ [2] [3] [4] [5] 8019as.pdf, RTL8019AS Realtek Full-Duplex Ethernet Controller with Plug and Play Function (RealPNP) REALTEK SEMI-CONDUCTOR CO., LTD. Strona producenta http://www.atmel.com/ Strona producenta http://www.realtek.com.tw Krzysztof Nowicki, Józef Woźniak, Sieci LAN, MAN i WAN – protokoły komunikacyjne, Wydawnictwo Fundacji Postępu Telekomunikacji, Kraków 1998