Department of Optoelectronics and Electronic Systems Faculty of Electronics, Telecommunications and Informatics Gdansk University of Technology Electronic Infosystems Microserver TCP/IP with CS8900A Ethernet controller Dariusz Załęski Michał Kowalewski Gdańsk 2011 1
Mikroserwer TCP/IP oparty na mikrokontrolerze AT89S53 i kontrolerze sieci Ethernet CS8900A I. Sprzęt i oprogramowanie zestaw laboratoryjny mikroserwera TCP/IP, zasilacz stabilizowany 9V, kabel połączeniowy dla standardu 10BaseT, środowisko programistyczne KEIL μvision IDE. II. Zadania laboratoryjne 1. Przygotowanie stanowiska laboratoryjnego do pracy. a) sprawdzić czy zestaw laboratoryjny jest podłączony do zasilania 9V, b) sprawdzić czy zestaw laboratoryjny jest podłączony przez kabel RS232 oraz kabel sieciowy komputera PC, c) włączyć komputer (praca pod Windows XP) i uruchomić Total Commander, d) przejść do katalogu c:\info.lab i usunąć podkatalog template, e) uruchomić program template.exe i przejść do katalogu c:\info.lab\template. 2. Zapoznanie się ze środowiskiem KEIL μvision IDE. a) Uruchomić środowisko za pomocą linka w katalogu. b) W celu otwarcia projektu z menu wybrać Project/Open Project. W okienku, które się pojawiło otworzyć plik LAN.Uv2. c) Po załadowaniu projektu wygląd okna programu przedstawia rysunek II-1. W oknie z lewej strony (1) wyświetlone są wszystkie pliki dołączone do projektu. Po prawej stronie (2) pokazana jest zawartość pliku dwukrotnie klikniętego z lewego okna. Edytor koloruje tekst w zależności od składni. Zapoznać się z zawartością rozwijanego menu po kliknięciu prawym przyciskiem na dowolnym pliku z okna (1). Aby wybrać typ mikrokontrolera dla danego projektu należy prawym klawiszem kliknąć na folderze Target1 (4) i wybrać opcję Select Device for Target. W oknie wyświetli się lista dostępnych mikrokontrolerów od różnych producentów. Wszystkie z nich są oczywiście oparte na rdzeniu 8051(52). Zapoznać się dokładnie z dostępnymi opcjami projektu i środowiska poprzez kliknięcie prawym przyciskiem na folderze Target1 (4) i wybranie Options for Target. W okienku o podobnej nazwie, w zakładce Target, możliwe jest ustawienie wielu specyficznych parametrów takich jak: częstotliwość kwarcu, model pamięci umiejscowienie zmiennych programu w pamięci, rozmiar pamięci kodu, system operacyjny (dla niektórych mikrokontrolerów dostępny jest RTOS RTX51), dodatkowe opcje związane są typem wybranego mikrokontrolera (tutaj podwójny wskaźnik DPTR), rozmiar i adres zewnętrznej pamięci kodu i programu. 2
4 5 1 2 3 Rys. II-1. Okno programu μvision2 środowiska KEIL μvision IDE W programie możliwe jest kompilowanie poszczególnych plików oddzielnie lub wszystkich w całości (5). W dolnym oknie (3) ukazują się informacje dotyczące poprawności przebiegu kompilacji, powstałych błędów, itd. Jeśli kompilacja przebiegła bezbłędnie wówczas w oknie (3) pojawia się dodatkowo rozmiar kodu wynikowego. 3. Włączyć zasilacz stabilizowany oraz mikroserwer przełącznikiem znajdującym się w pobliżu złącza zasilania. Powinno to spowodować zaświecenie się czerwonej diody LED umieszczonej w otoczeniu radiatora stabilizatora napięcia. Z lewej strony złącza programatora znajduje się przełącznik trybu pracy mikroserwera. Ustawienie jego w pozycji górnej powoduje przejście mikrokontrolera w tryb programowania, zaś przesunięcie przełącznika w dolną pozycje uruchamia normalną prace mikroserwera. 4. Sprawdzić czy sieć Ethernet jest aktywna. Towarzyszy temu świecenie się czerwonej diody LED znajdującej się w pobliżu gniazda RJ45 na płytce modułu kontrolera sieci Ethernet. 5. Sprawdzić działanie usługi ICMP Echo Reply mikroserwera z komputera PC (adres IP mikroserwera zdefiniowany jest w pliku main.c). Jaki jest średni czas opóźnienia odpowiedzi mikroserwera na żądanie wysłania wiadomości ICMP Echo Reply? 6. Uruchomić program sterownika mikroserwera TCP/IP (sterownik.exe). Wygląd okienka aplikacji przedstawia rysunek II-2. Przetestować działanie wszystkich funkcji mikroserwera za wyjątkiem wysyłania wiadomości e-mail. 3
Rys. II-2. Okno aplikacji sterownika mikroserwera TCP/IP 7. Zapoznać się z programem PonyProg. W tym celu kliknąć na skrót znajdujący się na pulpicie. Wygląd okienka aplikacji prezentuje rysunek II-3. 2 4 3 1 5 Rys. II-3. Aplikacja programatora mikrokontrolera Wykonać kalibrację szybkości programatora (Options/Calibration). Wybrać ustawienia w polu Dev. Type (1) na zgodne z rysunkiem II-4. Ustawić mikroserwer w tryb programowania, a następnie dokonać odczytu pamięci kodu mikrokontrolera poprzez kliknięcie ikony (2). Odczytany kod zapisać (3) w pliku o nazwie tcp_ip.hex. 4
9. Zmienić adres IP mikroserwera na 192.168.0.32. W tym celu edytować plik main.c, skompilować cały projekt, a następnie wczytać kod wynikowy (4) i zaprogramować nim mikrokontroler (5). Przetestować z komputera PC, czy mikroserwer pracuje prawidłowo z nowym adresem IP. 10. Zapoznać się z istniejącą implementacją protokołu HTTP w mikrosystemie, a w szczególności: a) procedurą rx_tcp_packet w pliku tcp.c. b) plikiem http.c oraz plikiem nagłówkowym http.h. c) sposobem wyznaczania wartości dla instrukcji Content-Lenght. d) Sposobem przesyłania danych odebranych na port HTTP do warstwy aplikacji: List. II-1. Fragment pliku tcp.c Procedura http_parser() zdefiniowana jest w pliku http.c. Jej przykładowy wygląd przedstawiony jest na listingu II-2. Tablica html[] zawiera minimalny nagłówek protokołu HTTP oraz kod HTML prostej strony WWW. List. II-2. Przykładowa postać procedury http_parser() 5
Zadania do wykonania: 1. Rozbudować istniejącą stronę internetową mikroserwera o graficzną prezentację stanu przełączników DIP Switch. Wykorzystać funkcję get_dip() w pliku LCD.c. 2. Zrealizować licznik odwiedzin strony internetowej mikroserwera. Nie stosować funkcji atoi i sprintf. W zamian wykorzystać operatory dzielenia / i %. Licznik powinien być 3-cyfrowy. Funkcjonalność należy dodać w pliku http.c przed wywołaniem funkcji tx_tcp_packet(). Wskazówka: podmieniać znaki w buforze tx_buffer. 6