Poznańskie Warsztaty Telekomunikacyjne PWT2004
Transkrypt
Poznańskie Warsztaty Telekomunikacyjne PWT2004
www.pwt.et.put.poznan.pl Krzysztof Arnold Instytut Elektroniki i Telekomunikacji Politechnika Poznańska Ul. Piotrowo 3A 60 – 965 Poznań E–mail: [email protected] 2004 Poznańskie Warsztaty Telekomunikacyjne Poznań 9 - 10 grudnia 2004 SPRZĘTOWY EMULATOR PAMIĘCI MAGISTRALOWYCH SYSTEMÓW MIKROPROCESOROWYCH Streszczenie: W pracy porównano właściwości emulatorów pamięci, decydujące o efektywności wspomagania prac badawczych, prowadzonych w środowisku systemów mikroprocesorowych. Przytoczono podstawowe ustalenia dokumentu IEEE 1284 i wskazano zasadność jego wykorzystania w procesie projektowo-uruchomieniowym dla systemów magistralowych. Przedstawiono rozwiązanie modułowego emulatora pamięci programu i danych, komunikującego się z komputerem PC w oparciu o programowo wspierane tryby pracy standardu IEEE 1284. Przedyskutowano również zalety proponowanego rozwiązania, wyniki badań czasu transferu plików i perspektywy modyfikacji urządzenia. 1.WSTĘP Opracowywanie specjalizowanych systemów mikroprocesorowych jest trudne do przeprowadzenia bez udziału narzędzi wspomagających projektowanie i uruchamianie sprzętu i oprogramowania. Procedura projektowania systemu obejmuje podział zadań między sprzęt i warstwę programową, współbieżne rozwijanie obu wyodrębnionych części i wreszcie połączenie ich podczas uruchamiania systemu jako całości. Całkowite uniknięcie błędów projektowych jest praktycznie niemożliwe, a wykrycie nieprawidłowości dopiero na etapie uruchamiania systemu może spowodować cofnięcie prac do zmian w projekcie technicznym włącznie. Większość błędów powstaje podczas pisania programów, a dostępne narzędzia programowe, takie jak systemy projektowo-uruchomieniowe MDS i symulatory skrośne, pozwalają na ich wykrycie i usunięcie. Zewnętrzny system MDS funkcjonuje jednak poza środowiskiem tworzonego systemu użytkownika, a symulacja skrośna programów powoduje kilkudziesięciokrotne wydłużenie czasu ich działania. Uniemożliwia to szczegółowe zbadanie właściwości dynamicznych programu użytkowego pod kątem jego współpracy ze sprzętem w docelowym systemie mikroprocesorowym. Do narzędzi wspomagających uruchamianie oprogramowania i sprzętu w docelowym środowisku projektowanego systemu mikroprocesorowego należą kolejne generacje układów testujących, analizatory stanów logicznych i systemy MDS wyposażone w sondę emulacyjną (ICE). W grupie tej znajdują się również emulatory pamięci, towarzyszące innym środkom diagnostycznym i znakomicie ułatwiające wielokrotną PWT 2004, Poznań 9 - 10 grudnia 2004 wymianę zawartości pamięci programu i wprowadzanie poprawek. Sprzętowa emulacja pamięci możliwa jest przede wszystkim w systemach o konfiguracji magistralowej, zarządzanych przez klasyczne jednostki centralne lub sterowniki mikroprocesorowe. W odróżnieniu od nich w mikroprocesorach jednoukładowych i mikrokontrolerach pamięć wbudowana jest częściowo lub całkowicie w układ mikroprocesora. Mikroprocesory jednoukładowe, których jednostka centralna jest zintegrowana z pamięcią i podstawowymi układami we/wy, są jednak zwykle zdolne do pobierania rozkazów z zewnętrznej pamięci programu, co znacznie ułatwia tworzenie systemów mikroprocesorowych, rozszerzanie ich pamięci i uruchamianie systemów użytkownika. Z tego względu zasięg stosowania emulatorów pamięci może obejmować nawet te systemy, w których jednostką centralną jest jednoukładowy mikroprocesor. 2. PODSTAWOWE ROZWIĄZANIA EMULATORÓW PAMIĘCI Emulatory pamięci systemów mikroprocesorowych należą do bardzo przydatnych, a jednocześnie stosunkowo niezbyt kosztownych środków uruchomieniowych. Stopień złożoności sprzętowej emulatora zależy w pierwszym rzędzie od rodzaju emulowanej pamięci i powiązanego z nią układu sterowania, a także od rodzaju komunikacji z nadrzędnym komputerem PC. Dążenie do zmniejszania komplikacji układowej emulatorów sprawia, że narzędzia te zastępują zwykle tylko pamięć programu systemów mikroprocesorowych [1] lub pamięci programu i danych, umieszczone w ramach wspólnej przestrzeni adresowej [2]. Ogranicza to niestety możliwości pełnego wsparcia mikroprocesorów wystawiających w cyklach komunikacji z pamięcią programu i danych oddzielne sygnały sterujące. Należą do nich przykładowo jednostki rodziny MCS 51 i inne układy o podobnej architekturze. Emulacja pamięci programu (ROM, EPROM, EEPROM) polega na zastąpieniu jej pamięcią o dostępie swobodnym (RAM), z możliwością wprowadzenia informacji do RAM spoza uruchamianego systemu i wyprowadzenia jej poza system. Wielokrotna wymiana zawartości pamięci RAM, jej modyfikowanie i wizualizacja odbywają się z wykorzystaniem 1 www.pwt.et.put.poznan.pl mikrokomputera klasy PC. W trybie ładowania uruchamiany program zapisywany jest z poziomu komputera do pamięci emulatora, po czym komputer przekazuje dostęp do pamięci jednostce centralnej testowanego systemu, przechodząc tym samym do trybu emulacji. W typowych dla emulatorów pamięci rozwiązaniach sonda emulacyjna dołączana jest do podstawki pamięci programu w uruchamianym systemie. Emulator może również zająć miejsce systemowego modułu pamięci (rys.1). Magistrala systemowa Jednostka centralna Emulator pamięci Układy we/wy Mikrokomputer IBM PC Rys.1. Schemat funkcjonalny modułowego systemu mikroprocesorowego z emulatorem pamięci Minimalny obszar adresowy pamięci emulatora wynosi zwykle 8kB. Ponadto często możliwe jest konfigurowanie typu pamięci EPROM rodziny 27xxx na płycie emulatora. Od strony nadrzędnego komputera PC polecenia i dane przekazywane są z wykorzystaniem transmisji szeregowej w standardzie RS 232C lub łącza CENTRONICS [1,2]. Do sondy emulacyjnej Z portu szeregowego PC trójstanowych od strony komputera nie jest wówczas konieczne, a struktura układu ulega uproszczeniu. Wykorzystanie mikroprocesora i szeregowego układu we/wy ułatwia prowadzenie weryfikacji danych przekazywanych do pamięci emulatora z poziomu komputera PC. Spotykana niekiedy funkcja zapisu pamięci EEPROM pozwala również na emulację pamięci programu i danych we wspólnej przestrzeni adresowej. Czas transmisji pliku 64kB wynosi jednak aż 35 sekund przy szybkości transmisji 75600 bodów [2]. W przypadku sterowania emulatora przez standardowy port równoległy SPP (łącze CENTRONICS) program zarządzający może być w całości przeniesiony do nadrzędnego komputera PC. Dla uproszczenia struktury układu bufory adresowe od strony komputera zastępowane są przez inkrementowany licznik adresu (rys.3). Sterowanie oparte jest na wykorzystaniu protokołu współpracy z drukarką i umożliwia załadowanie pamięci emulatora za pomocą podstawowych narzędzi systemu DOS. W fazie ładowania programu trzy 8-bitowe bramy odcinają pamięć od magistrali uruchamianego systemu. Pomimo rezygnacji z emulowania pamięci danych oraz braku trybu weryfikacji, co znacznie zawęża funkcjonalność emulatora, układ sterowania nie ulega wyraźnemu uproszczeniu. Przyczyną takiego stanu rzeczy jest konieczność respektowania przez strony wymagań czasowych wobec generowanych zgodnie z protokołem obsługi drukarki sygnałów STROBE, BUSY i ACK. Do sondy emulacyjnej Z portu CENTRONICS BUSY Adr /8/ Adr /8/ Bufor adres. G CPU Adr /8/ Blok pamięci RAM Adr /8/ Dane /8/ /8/ Bufor danych G DIR TxD RxD RS /TTL Układ sterujący Rys.2. Schemat funkcjonalny emulatora pamięci EPROM i EEPROM z łączem RS232C Emulatory wyposażone w port szeregowy zawierają zwykle lokalny jednoukładowy mikroprocesor z pamięcią Flash (rys.2). Stosowanie buforów PWT 2004, Poznań 9 - 10 grudnia 2004 Adr /16/ Bufor 16 adresu Adr /16/ Blok pamięci RAM Dane /8/ Bufor danych Bufor adres. G Dane ACK Licznik adresu STROBE Dane /8/ 64kB Dane /8/ Bufor /8/ danych Układ sterowania Rys.3. Schemat funkcjonalny emulatora pamięci EPROM z łączem CENTRONICS W najprostszej wersji emulatory pamięci zawierają 64kB przestrzeni adresowej pamięci programu, a ich komunikacja z komputerem PC odbywa się przy wykorzystaniu standardu RS 232C. Szeregowy transfer danych zajmuje stosunkowo niewiele czasu przy uruchamianiu krótkich fragmentów oprogramowania. Ten często wykorzystywany rodzaj transmisji zwiększa jednak czas ładowania dłuższych programów czy łączenia ich w pamięci emulatora [2]. Uruchamianie systemów mikroprocesorowych podczas prac badawczych wymaga wielokrotnej i szybkiej wymiany programów w systemie i wprowadzania w nich poprawek, a zorganizowana bajtowo transmisja równoległa w obejmującym tryby portu CENTRONICS i 2 www.pwt.et.put.poznan.pl zaawansowanym standardzie IEEE 1284 stwarza pod tym względem lepsze możliwości współpracy komputerów z urządzeniami peryferyjnymi, w tym również z emulatorami pamięci. 3. ARCHITEKTURA EMULATORA PAMIĘCI PROGRAMU I DANYCH Pełne wspieranie projektowania i uruchamiania systemów mikroprocesorowych z wykorzystaniem emulatorów pamięci wymagać może obecnie nie tylko szybkiej wymiany przekazywanych programów, ale i emulacji tak pamięci programu, jak i pamięci danych. Niezbędne jest również zaimplementowanie funkcji weryfikacji danych wprowadzanych do pamięci emulatora. Dotyczy to zwłaszcza systemów o modułowej organizacji [3]. Na rysunku 4 przedstawiono emulator pamięci EPROM/RAM, kontrolowany z poziomu nadrzędnego komputera PC poprzez port równoległy, pracujący w trybie kompatybilnym, połówkowym lub bajtowym zgodnie z normą IEEE 1284. Dekoder adresów umożliwia rozdzielenie obszarów adresowych EPROM i RAM (po 64 kB), a także niezależne aktywowanie obszarów o pojemnościach po 8 kB każdy. Jednokierunkowe bufory adresowe i dwukierunkowe bufory danych zamiennie przyłączają lokalną magistralę emulatora do linii portu równoległego (tryb ładowania i weryfikacji danych) lub do magistrali systemu mikroprocesorowego (tryb emulacji). Dekoder poleceń, umiejscowiony w obrębie układu sterowania, odpowiada za przełączanie trybów współpracy interface`u emulatora z komputerem PC. Bufor adresowy Bufor adresowy Adres 2 Adres M A G I S T R A L A S Y S T E M O W A 2 2 R Ó W N O L E G Ł Y Dane 5 Dane Bufor danych Bufor danych 2 2 P O R T Linie statusu portu 2 Linie sterujące Układ sterujący Linie sterujące portu Rys.4. Schemat funkcjonalny emulatora pamięci programu i danych Wymiana zawartości pamięci emulatora (zapis RAM) odbywa się w trybie kompatybilnym lub bajtowym. Weryfikacja zapisu (odczyt zawartości pamięci RAM i porównanie jej z uprzednio przesłanym do pamięci plikiem) jest dokonywana za pośrednictwem multipleksera w trybie połówkowym, a ponadto może być prowadzona w trybie bajtowym dzięki zastosowaniu PWT 2004, Poznań 9 - 10 grudnia 2004 dwukierunkowego, przełączanego bufora danych pomiędzy lokalną szyną danych emulatora, a liniami danych portu równoległego (rys.4). Odczyt 64 kB pamięci RAM przez komputer PC z procesorem Pentium i zegarem 200 MHz w najwolniej funkcjonującym trybie połówkowym nie przekracza 3s. Czas ten jest orientacyjnie o rząd wielkości mniejszy od czasów transmisji danych przez łącze RS 232C [2]. Czas zapisu 64 kB pamięci RAM (wraz z odczytem i weryfikacją) wynosi ok. 7s. 4. KOMUNIKACJA EMULATORA Z ŁĄCZEM IEEE 1284 Norma IEEE 1284 zapewnia kompatybilność sprzętową i programową z istniejącym portem SPP, dwukierunkową transmisję danych i przekroczenie szybkości transmisji 1 MB/s w obu kierunkach [4,5,6]. Norma definiuje kilka trybów komunikacji. Tryb kompatybilny i połówkowy (półbajtu) mogą być realizowane w porcie SPP i dowolnym porcie zgodnym z normą IEEE 1284. Połączenie tych trybów pozwala na transfer danych w obie strony oddzielnymi zestawami linii. Tryb bajtowy zapewnia dwukierunkową transmisję half duplex liniami danych w komputerach wyposażonych w nowe rozwiązanie sprzętowe portu. Ustanowione na wyższym poziomie tryby EPP i ECP realizują szybkie protokoły dwukierunkowej komunikacji pomiędzy komputerem a urządzeniami peryferyjnymi nowych generacji. Podczas pracy w trybach kompatybilnym, połówkowym lub bajtowym pierwsze trzy rejestry portu równoległego określone przez dokument IEEE 1284 funkcjonują identycznie jak w standardowym łączu CENTRONICS. Dzięki temu zachowana została kompatybilność ze starszymi urządzeniami i sterownikami. Pozostałe rejestry są wykorzystywane w zaawansowanych trybach pracy portu, przy czym o ustawieniu trybu decyduje stan rejestru sterującego ECR [4,6]. W trybach kompatybilnym (rys.5), połówkowym i bajtowym za obsługę protokołów komunikacji odpowiedzialne jest głównie oprogramowanie, podczas gdy obsługa transferu danych w trybach EPP i ECP jest zaimplementowana sprzętowo. Z tego względu szybkość przyjmowania danych przez komputer w trybie połówkowym jest zwykle ograniczone do ok. 50 kB/s, podczas gdy szybkość transmisji w trybie EPP może sięgać 2MB/s [4,5,6]. Tryb połówkowy jest najczęściej wykorzystywany i łączony z trybem kompatybilnym w celu stworzenia kanału dwukierunkowego w starszych komputerach. Urządzenie peryferyjne korzysta wówczas z linii stanu portu równoległego komputera w celu przesłania każdego bajtu danych w postaci dwóch kolejnych 4bitowych połówek (rys.6). Podprogram odbioru danych z rejestru stanu portu CENTRONICS musi dokonać odpowiedniego złożenia bitów w obu połówkach i zestawienia 8-bitowego słowa danych. Procedura taka jest na tle innych trybów czasochłonna, zarazem jednak tryb połówkowy zapewnia aktualnie komunikację urządzenia z komputerami różnych generacji i może być wystarczająco skuteczny przy współpracy emulatora z komputerem dysponującym odpowiednio dużą 3 www.pwt.et.put.poznan.pl częstotliwością zegara. Z powyższych względów w prezentowanym rozwiązaniu emulatora zaimplementowano wspierane programowo tryby transmisji. D0 - D7 adres młodsze 8b adres starsze 8b dana - 8b 1 STB 14 A 16 B 17 C SŁOWA STERUJĄCE (H) 06 07 06 04 05 04 0A 0B 0A Rys. 5. Przebiegi czasowe cyklu zapisu pamięci RAM emulatora D0 - D7 adres młodsze 8b adres starsze 8b S0 - S3 dana 4b starsze dana 4b młodsze 1 STB 14 A 16 B 17 C SŁOWA STERUJĄCE (H) 06 07 06 04 05 04 0C 0D 0C 0E 0F 0E Rys.6. Przebiegi czasowe cyklu odczytu pamięci RAM emulatora 5. WNIOSKI Prezentowany emulator pamięci programu i danych jest w stosunku do typowych urządzeń prototypowym rozwiązaniem, o znacznie większych możliwościach funkcjonalnych i rozwiniętej strukturze sprzętowej. W warstwie komunikacyjnej współpraca emulatora z nadrzędnym komputerem oparta została o sprawdzone mechanizmy transmisji równoległej, gwarantujące wystarczającą szybkość transferu danych. Przyjęcie takiego podejścia wydaje się być uzasadnione. Przedstawione w pracy wyniki badań wykazują, że wykorzystanie transmisji równoległej oraz trybu kompatybilnego (przekazywanie kodów źródłowych do pamięci emulatora) i połówkowego (weryfikacja zawartości pamięci) jest do przyjęcia nawet w warunkach transferu pliku 64 kB, co odpowiada pełnej przestrzeni adresowej typowych 8-bitowych mikroprocesorów. Z oczywistych względów czas transmisji jest dla trybów pracy portu wspieranych programowo zależny od częstotliwości zegarowej komputera PC. Radykalne zmniejszenie czasu transmisji możliwe jest przy udziale zaawansowanego trybu EPP. W takim przypadku szybki sterownik komputera PC może współpracować z niezbyt złożonym układem sterującym emulatora pamięci, a protokół określony PWT 2004, Poznań 9 - 10 grudnia 2004 przez dokument IEEE 1284 jest czytelny i w odróżnieniu od ECP łatwy do zaimplementowania. W trybie EPP zdefiniowane są dwa oddzielne sygnały strobu adresu i danych oraz sygnał zapisu/odczytu informacji do/z urządzenia zewnętrznego, wystawiane przez sprzętowy sterownik i ściśle przyporządkowane do wyprowadzeń na złączu portu. W odróżnieniu od programowo kontrolowanych trybów pracy, określonych w dokumencie IEEE 1284, modyfikacja znaczenia sygnałów łącza równoległego nie jest więc w trybie EPP możliwa. Z uwagi na to wykorzystanie tego bardzo szybkiego protokołu transmisji wymaga zmiany rozwiązania warstwy interface`u opisywanego emulatora. Wykorzystanie portu równoległego komputera w komunikacji z modułem emulatora pamięci nie wymaga lokowania na płycie emulatora lokalnego mikroprocesora, co z kolei jest wskazane w rozwiązaniach z łączem RS 232C. Ułatwia to diagnostykę modułu, mającego wiarygodnie wspomagać prowadzenie prac badawczych. Transmisja sygnałów o poziomach TTL, definiowana przez normę IEEE 1284, może jednak w odróżnieniu od transmisji zgodnej ze standardem RS 232C odbywać się na niewielkiej odległości. Rozwój szybkich systemów interface’u (np. USB 2.0) może wkrótce wymagać radykalnej zmiany koncepcji warstwy komunikacyjnej emulatorów. Z punktu widzenia zadań uruchomieniowych dla 8-bitowych systemów tworzonych w oparciu o magistralę nie jest to jednak obecnie niezbędne. SPIS LITERATURY [1] S. Surowiński, „Symulator pamięci EPROM 2716...27512, część 1”, Elektronika Praktyczna 3/96, s.35-39. [2] S.Skrzyński, Symulator EPROM/EEPROM do wszystkich typów komputerów, część 1, Elektronika Praktyczna 6/2000, s.65-67. [3] K.Arnold, „Programowany pakiet systemowy pamięci”, raport w ramach tematu badawczego TB 44-583/DS, Instytut Elektroniki i Telekomunikacji Politechniki Poznańskiej, Poznań 1999 [4] IEEE Std. 1284-1994, Standard Signalling Method for a Bi-directional Parallel Peripheral Interface for Personal Computers. [5] Interfacing the Enhanced Parallel Port, Version 1.0, http://www.senet.com.au/~cpeacock [6] The modern printer port, Elektor Electronics 4/98. 4