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

Podobne dokumenty