Styk programowy MERA-PLIX

Z MERA 400 wiki
Wersja z dnia 18:46, 17 maj 2013 autorstwa Amo (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Wstęp

Styk software'owy MERA-PLIX składa się z następujących elementów:

  • rozkazy IN, OU wysyłane do procesora PLIX
  • przerwania zgłaszane do komputera MERA-400
  • pole sterujące umieszczone w bloku nr 0 MERA
  • bufory danych umieszczone w dowolnych blokach MERA

Procesor komunikacyjny PLIX przedstawia dla komputera MERA zbiór obiektów składający się z:

  • kanału PLIX
  • zbioru linii logicznych

Linie logiczne wyróżnione są identyfikatorami od 0 do 255. Identyfikatory przydzielane są przez komputer MERA poleceniem "ustaw konfiguracje". Zbiór identyfikatorów powinien być ciągły i zaczynać się od 0. Niespełnienie tych warunków spowoduje dodatkowe zapotrzebowanie na pamięć PLIX-a.

Rozkazy

Rozkazy IN, OU wysyłane do procesora PLIX maja wspólne cechy:

  • Q = 0
  • N15 = 0
  • N11-14 = nr kanału

Rozkazy te dzielą się na trzy grupy:

  • rozkazy kanałowe
  • polecenia sterujące ogólne (dla kanału PLIX)
  • polecenia sterujące liniowe (dla linii logicznej)

Rozkazy kanałowe

  • Typ: IN
  • N0-2 = 0
  • N5-10 = 0
  • Odpowiedź I/F: OK

Zeruj moduł

  • N3-4 = 00

Inicjuje zerowanie procesora PLIX.

Po zakończeniu zgłaszane jest przerwanie:

  • INSKA - procesor PLIX jest niesprawny
  • IWYZE - procesor został wyzerowany.

Uwaga: Każdy sygnał zerowania systemu (CLEAR, MCL, włączenie zasilania) działa identycznie jak rozkaz zeruj moduł.

Sprawdź istnienie modułu

  • N3-4 = 10

Podaj specyfikacje przerwania

  • N3-4 = 01

Rozkaz ten jest wysyłany sprzętowo przy obsłudze przerwania. Specyfikacja składa się z numeru przerwania (bity 0 – 7) i identyfikatora linii bity (8 - 15)

Polecenia sterujące ogólne

Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie.

Cofnij przerwanie niepokwitowane do kolejki

  • Typ: IN
  • N0-2 = 001
  • N3-10 = 0

Jeżeli jest zgłoszone przerwanie, którego specyfikacja nie została jeszcze pobrana, to zostaje ono ponownie umieszczone w kolejce przerwań.

Testuj

  • Typ: OU
  • N0-2 = 001
  • Informacja: adres pola testu

Program testujący zostaje przepisany do pamięci PLIX i wykonany. Po poprawnym zakończeniu zgłaszane jest przerwanie IWYTE.

Ustaw konfiguracje

  • Typ: OU
  • N0-2 = 101
  • Informacja: adres pola sterującego.

Przyporządkowane zostają linie logiczne do urządzeń dołączonych do PLIX-a (linii fizycznych). Ustalone zostają podstawowe parametry linii. Po zakończeniu ustawiania konfiguracji zgłaszane jest przerwanie:

  • INKON - nie wykonano polecenia, bo były błędy w polu sterującym lub konfiguracja była już wcześniej ustawiona.
  • IUKON - ustawiono konfiguracje
  • INKOT - nie wykonano polecenia , bo wystąpiły błędy transmisji MERA-PLIX.

Uwaga: Ustawiona konfiguracja nie może być zmieniona aż do wyzerowania modułu.

Polecenia sterujące liniowe

  • Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie.
  • N3-10 = identyfikator linii logicznej.

Każde polecenie potwierdzone przez OK kwitowane jest zgłoszeniem jednego przerwania.

Dołącz linię

  • Typ: OU
  • N0-2 = 010
  • Informacja: adres pola sterującego.

Linia logiczna zostaje dołączona do programu. Polecenie "dołącz linie" musi poprzedzać polecenie/a transmisyjne.

Pokwitowanie:

  • IDOLI - dołączono linie
  • INDOL - nie dołączono bo błędne parametry lub linia już była dołączona
  • INKDO - brak linii w konfiguracji

Odłącz linię

  • Typ: IN
  • N0-2 = 010

Linia logiczna zostaje usunięta z programu. Linia fizyczna zostaje wyzerowana.

Pokwitowanie:

  • IODLI - odłączono linie
  • INODL - linia nie zakończyła transmisji, nie odłączono
  • INKOD - brak linii w konfiguracji

Podaj status linii

  • Typ: OU
  • N0-2 = 011
  • Informacja: adres statusu

Status zostaje umieszczony pod wskazanym adresem.

Pokwitowanie:

  • ISTRE - podano status
  • INSTR - odrzucono polecenie (poprzednie polecenie "podaj status" jest w toku)
  • INKST - brak linii w konfiguracji

Przesyłaj

  • Typ: OU
  • N0-2 = 100
  • Informacja: adres pola sterującego.

Rozpoczynana jest transmisja w linii.

Pokwitowanie:

  • IETRA - zakończono przesyłanie poprawnie
  • ITRER - zakończono przesyłanie z błędami
  • INTRA - odrzucono polecenie (błędne parametry)
  • INKTR - brak linii w konfiguracji
  • ITRAB - zerwano transmisje poleceniem "zerwij"

Zeruj urządzenie

  • Typ: IN
  • N0-2 = 100

Urządzenie przywiązane do linii logicznej zostaje wyzerowane.

Pokwitowanie:

  • IZURZ - zerowanie wykonane
  • IEZUR - błąd w czasie zerowania
  • INZUZ - polecenie odrzucone
  • INKZU - brak linii w konfiguracji
  • IZUAB - zerwano zerowanie

Zerwij przesyłanie lub zerowanie urządzenia

  • Typ: IN
  • N0-2 = 011

Przesyłanie lub zerowanie urządzenia zostaje zerwane.

Pokwitowanie:

  • IABTR - wykonano zerwanie
  • INABT - nie ma transmisji ani zerowania w tej linii
  • INKAB - brak linii w konfiguracji

Uwaga: Każde z poleceń liniowych może być skwitowane także przerwaniami sygnalizującymi błędy przesyłania MERA-PLIX:

  • INPAO - brak odpowiedzi z pamięci MERY
  • IPARE - błąd parzystości pamięci MERY

Przerwania

Przerwania zgłaszane przez PLIX dzielą się na 3 grupy:

  • przerwania specjalne
  • przerwania ogólne
  • przerwania liniowe

Specyfikacja przerwania, pobierana rozkazem "podaj specyfikacje przerwania", składa się z numeru przerwania (bity 0-7) oraz identyfikatora linii (bity 8-15). Identyfikator linii ma znaczenie tylko dla przerwań liniowych. Przerwanie specjalne kierowane jest do obu procesorów MERA natychmiast (bez kolejkowania) i bez sprawdzania odpowiedzi I/F. Przerwania ogólne i liniowe umieszczane są w kolejce przerwań. Przerwanie ogólne kierowane jest do tego procesora, który przysłał polecenie będące przyczyna przerwania. Powyższa zasada dotyczy także przerwań "brak linii w konfiguracji". Przerwanie liniowe (prócz "brak linii w konfiguracji") kierowane jest do tego procesora, który przysłał ostatnie polecenie dla danej linii. Przerwania z kolejki zgłaszane są od najstarszego (najdłużej oczekującego), z tym ze przerwania do procesorów zablokowanych są omijane (ale nie usuwane z kolejki). Zablokowanie procesora dla przerwań. następuje po braku jego odpowiedzi na zgłoszenie przerwania. Odblokowanie procesora następuje po otrzymaniu od niego dowolnego polecenia sterującego. Zgłoszenie następnego przerwania odbywa się po pobraniu specyfikacji poprzedniego przerwania (rozkaz "podaj specyfikacje") lub po poleceniu "cofnij przerwanie niepokwitowane do kolejki".

Przerwania specjalne

Oznaczenie Nr Opis Proponowane działanie
INSKA 1 niesprawny kanał Powtórzyć zerowanie, gdy to nie pomoże - testować i naprawić moduł
IWYZE 2 wykonano zerowanie podjąć prace zaczynając od polecenia "ustaw konfigurację"
IWYTE 3 wykonano test Podjąć prace zaczynając od rozkazu "zeruj moduł"

Przerwania ogólne

Oznaczenie Nr Opis Zgłaszane po poleceniu Uwagi o przyczynach
INKON 4 odrzucono "ustaw konfigurację" ustaw konfigurację błędy w polu sterującym, za mała pamięć, konfiguracja już ustawiona
IUKON 5 ustawiono konfigurację ustaw konfigurację
INKOT 6 niewykonano "ustaw konfigurację" ustaw konfigurację błędy transmisji MERA-PLIX

Przerwania liniowe

Oznaczenie Nr Opis Zgłaszane po poleceniu Uwagi o przyczynach
ISTRE 7 podano status podaj status
INSTR 8 odrzucono "podaj status" podaj status poprzednie "podaj status" jest w toku wykonywania
INKST 9 brak linii w konfig. podaj status
IDOLI 10 dołączono linię dołącz linię
INDOL 11 odrzucono "dołącz linię" dołącz linię błędy w polu, linia dołączona, poprzednie "dołącz" jest w toku
INKDO 12 brak linii w konfig. dołącz linię
IETRA 13 zakończono transmisję poprawnie przesyłaj
INTRA 14 odrzucono "przesyłaj" przesyłaj błędy w polu, linia nie dołączona, przesyłanie w toku, zerowanie w toku
INKTR 15 brak linii w konfig. przesyłaj
ITRER 16 zakończono transmisję z błędem przesyłaj wykryto błąd transmisji
ITRAB 19 zerwano przesyłanie przesyłaj zgodnie z poleceniem "zerwij"
IABTR 20 wykonano "zerwij" zerwij przesyłanie
INABT 21 nie wykonano "zerwij" zerwij przesyłanie brak transmisji w linii
INKAB 22 brak linii w konfig. zerwij przesyłanie
IODLI 23 odłączono linię odłącz linię
INODL 24 nie odłączono linii odłącz linię transmisja w linii
INKOD 25 brak linii w konfig. odłącz linie
INPAO 32 brak trans. MERA-PLIX Dowolne polecenie liniowe uszkodzenie sprzętu
IPARE 33 błąd parzystości MERA-PLIX dowolne polecenie uszkodzenie sprzętu
IZURZ 35 wykonano zerowanie zeruj urządzenie
INZUZ 36 odrzucono zerowanie zeruj urządzenie transmisja w toku, zerowanie w toku
INKZU 37 brak linii w konfig. zeruj urządzenie
IEZUR 38 błąd zerowania zeruj urządzenie uszkodzenie sprzętu
IZUAB 39 zerwano zerowanie zeruj urządzenie zgodnie z poleceniem "zerwij"

Pola sterujące

Pole sterujące jest to obszar pamięci umieszczony w bloku nr 0 MERA, którego adres jest przekazywany po liniach danych podczas wykonywania rozkazu OU, będącego poleceniem sterującym. W polu sterującym wyróżniamy:

  • pole parametrów przekazywanych do PLIX
  • pole parametrów zwracanych z PLIX-a

Wykorzystanie tych pól jest następujące:

Polecenie
sterujące
Pole parametrów
przekazywanych
Pole parametrów
zwracanych
Testuj tak tak
Ustaw konfig. tak tak
Dołącz linie tak nie
Podaj status linii nie tak
Przesyłaj tak tak
Zeruj nie nie

W dalszym ciągu zostaną omówione pola poszczególnych poleceń oprócz polecenia "testuj", które jest przedmiotem osobnego opisu. Zawartość pol poleceń "dołącz linie" i "przesyłaj" zależna jest od urządzenia dołączonego do linii. Opisano pola dla urządzeń:

  • 0 - dysk EC-5061 (30mb)
  • 1 - dysk MERA 9425 (5mb)
  • 2 - Winchester

Pole sterujące "ustaw konfiguracje"

Pole składa się z:

  • nagłówka (1 słowo)
  • pola parametrów zwracanych (1 słowo)
  • pol opisu pakietów urządzeń (1 słowo na pakiet)
  • pol opisu linii logicznej (2 słowa na linie logiczna)

Nagłówek:

Bity Znaczenie
0-7 ilość pakietów
8-15 ilość linii logicznych

Pole parametrów zwracanych:

Bity Znaczenie
0-7 Nr błędu:
  • 0 = konfiguracja już ustawiona,
  • 1 = błędna liczba pakietów lub linii log.,
  • 2 = błędny typ urządzenia w opisie pakietu,
  • 3 = linia fizyczna na pakiecie nieużyta lub zajęta
  • 4 = błędny parametr linii logicznej
  • 9 = brak pamięci na tablice
8-15
  • nr pakietu dla błędu 2
  • nr linii log dla błędów 3, 4.

Pole opisu pakietu:

Słowo Bity Znaczenie
0 3 pakiet użyty
4-7 typ urządzenia:
  • 0 = EC 6051
  • 1 = MERA 9425
  • 2 = Winchester
8-15 mapa bitowa urządzeń dołączonych do pakietu (bit 15 - urządzenie 0)

Pole opisu linii logicznej:

Słowo Bity Znaczenie
0 0-7 parametry linii
6-7 dla urządzenia typu 1 (MERA 9425):
  • 01 - linia obejmuje tylko dysk wymienny
  • 10 - linia obejmuje tylko dysk stały
  • 11 - linia obejmuje dysk stały i wymienny
8-12 numer pakietu
13-15 numer urządzenia na pakiecie
1 0-15 parametry linii
0-7 typ dysku dla urządzeń typu 2 (Winchester):
  • 0 - BASF 6185
  • 1 - NEC D5126
8-15 protekcja formatowania:
  • 0 - formatowanie dozwolone
  • Inaczej - formatowanie nie wykonywane

Długość całego pola sterującego. wynosi:

1 + 1 + <liczba pakietów> + 2 * <liczba linii logicznych>

Pole sterujące "dołącz linię"

Pole zawiera tylko parametry przekazywane.

Protokół nr 0 - dysk EC 5061, 1 - MERA 9425

Słowo Bity Znaczenie
0 0 poziom automatyki:
  • 0 = adresowanie fizyczne dysku
  • 1 = adresowanie logiczne dysku
4-7 maksymalna liczba retransmisji podczas Wykonania polecenia "przesyłaj"

Urządzenie typu 2 – Winchester

Polecenie dołącz jest bezparametrowe

Pole sterujące "podaj status linii"

Pole zawiera tylko parametry zwracane.

Urządzenie typu 0, 1

Słowo Bity Znaczenie
0 7 linia dołączona
6 transmisja w toku
5 zerowanie w toku
4 wykonywane pozycjonowanie głowic
8 błąd pracy łańcucha
9 błąd w dysku
10 błąd pozycjonowania
11 błędny adres głowicy lub cylindra
12 dysk nie wybrany
13 pozycjoner w ruchu
1 2 niezgodność porównania danych
3 sektor nie znaleziony
4 nienadążanie transmisji
5 niezgodność pola adresowego
6 błąd transmisji pola adresowego
7 błąd transmisji pola danych
9 brak impulsów sektorowych
10 niezgodność numeru klucza
11 niezgodność numeru głowicy
12 niezgodność numeru cylindra
13 niezgodność blokad
14 brak znacznika końca danych
15 błąd CRC
2 0-7 liczba przesłanych poprawnie sektorów

Pole sterujące "przesyłaj"

Pole zawiera w pierwszej części parametry przekazywane, a w drugiej, oddzielone linia przerywana - parametry zwracane.

Typ urządzenia 0 - dysk EC 5061, 1 - dysk MERA 9425

Słowo Bity Znaczenie
0 1 kodowanie
2 ignoruj błędy odczytu
3 ignoruj klucz
5 porównanie danych z dysku z danymi w buforze
6 1=pola adresowe, 0=pola danych
7 1=zapis, 0=odczyt
12-15 numer bloku pamięci
1 0-15 adres początkowy bufora danych transmisji
2 0-15 długość transmisji (słowowa) pomniejszona o 1
3 0 ignoruj blokadę zapisu
1 ignoruj blokadę uszkodzeń
2 ignoruj klucz
8-15 numer cylindra (przy adresowaniu fizycznym)
4 0-7 numer głowicy (przy adresowaniu fizycznym). Numer głowicy jest z zakresu 0-19 dla linii dołączonej do dysku EC 5061, 0-1 dla linii dołączonej do jednego talerza dysku MERA 9425 (1 lub 2 w parametrze konfiguracji) lub 0-3 dla linii obejmującej cały dysk MERA 9425.
8-15 numer sektora (przy adresowaniu fizycznym)
0-15 numer logiczny sektora (przy adresowaniu logicznym). Sektor o numerze logicznym 0 ma adres fizyczny: cylinder 0, głowica 0, sektor 0. W miarę rośnięcia numeru najszybciej zmienia się numer sektora, następnie głowicy i na końcu cylindra.
5 8-15 młodszy bajt klucza
6 0-15 liczba przetransmitowanych poprawnie słów
7 sposób zakończenia transmisji:
0 błąd pozycjonowania
1 timeout
2 błąd porównania danych
3 sektor nieznaleziony
5 niezgodność adresów
6 błąd adresów
7 błąd danych

Typ urządzenia 2 – Winchester

Pole sterujące transmituj zawiera 4 słowa parametrów transmisji i 2 słowa parametrów zwracanych. Pierwsze słowo na bitach 6-7 zawiera kod operacji:

  • 0 - formatowanie całego dysku
  • 1 - przeniesienie sektorów do obszaru zapasowego
  • 2 - odczyt zawartości dysku
  • 3 - zapis na dysk

Znaczenie zawartości pola jest zależne od zadanej operacji.

Operacja formatowania

Operacja formatowania dysku jest bezparametrowa. Po sformatowaniu całego dysku, na cylindrze 0 jest zakładany obszar zapasowy (96 sektorów). Sektory 0 i 1 tego obszaru zawierają powielona mapę sektorów przeniesionych. Sektory użyteczne są adresowane logicznie od 0.

Przenoszenie sektorów do obszaru zapasowego

Słowo Bity Znaczenie
+1 0-15 mapa bitowa sektorów przenoszonych (0 sektor ścieżki na 15 bicie, 15 na 0 bicie)
+2 nieistotne
+3 0-15 numer sektora początkowego ścieżki na której znajdują się przenoszone sektory

Wskazane sektory są zapisywane do mapy sektorów przeniesionych i cala ścieżka jest formatowana na nowo. Przed wykonaniem tej operacji należny wiec odczytać zawartość ścieżki do bufora w komputerze (inaczej zostanie stracona) i po jej wykonaniu zapisać na nowo.

Opereacje transmisji

Operacje transmisji (zapis lub odczyt z dysku) wymagają pola sterującego.

Słowo Bity Znaczenie
+0 3 ignorowane będą błędy CRC odczytu
4 dopełnianie ostatniego zapisywanego sektora ostatnim zapisanym słowem transmisji.
5 wykrywany będzie znacznik końca transmisji (bajty $$ w pierwszym słowie sektora).
Wykrycie znacznika jest sygnalizowane przerwaniem ITRER (kod 16) z podaniem przyczyny w polu parametrów zwracanych.
6-7 kod operacji: odczyt = 2, pisanie = 3
11-15 numer bloku pamięci MERY
+1 0-15 adres bufora MERY
+2 0-15 długość transmisji w słowach pomniejszona o 1
+3 0-15 numer sektora początkowego transmisji

Pole parametrów zwracanych zawiera 2 słowa:

Słowo Bity Znaczenie
+0 0-15 liczba przesłanych poprawnie slow (tylko czytanie lub pisanie)
+1 0-15 słowo stanu i błędów

Bity słowa stanu i błędów maja następujące znaczenie:

Bit Znaczenie Opis
0 Wykryto znacznik końca transmisji
1 Niegotowość dysku Bit zgaszony oznacza, że dysk gotowy jest do operacji pozycjonowania głowic. Bit zapalony oznacza, że wrzeciono dysku ma niewłaściwe obroty, brak napięcia zasilającego, błąd toru zapisu dysku.
2 Błąd toru zapisu dysku Bit zapalony oznacza awarię w torze zapisu dysku wywołaną wybraniem więcej niż jednej głowicy, brak prądu zapisu podczas operacji zapisu, obecność prądu zapisu podczas operacji odczytu, niewłaściwe napięcie zasilające.
3 Wykonywane pozycjonowanie głowic Bit zapalony oznacza, że głowice nie znajdują się na zadanym cylindrze.
4 Przepełnienie obszaru zapasowego (przy operacji 1)
5 Błąd odczytu mapy sektorów przeniesionych
6 Nieistotny
7 Sumaryczny wskaźnik błędu wykonania operacji Bit zapalony oznacza, że podczas wykonywania operacji w/g polecenia sterującego wystąpił błąd. Przyczynę błędu określają bity 8-15 słowa.
8 Błędny sektor Bit zapalony oznacza, że w polu adresowym zadanego sektora zapisany został znacznik błędnego sektora. Ponieważ PLIX automatycznie odczytuje błędne sektory z obszaru zapasowego, wystąpienie tego błędu wskazuje na uszkodzenie mapy.
9 Błąd kontroli CRC Bit zapalony oznacza wystąpienie błędu sumy kontrolnej pola danych odczytywanego sektora. Sektor zostaje przesłany do bufora lecz dane są błędne. Jeżeli transmisja obejmowała więcej niż jeden sektor, poprzednie sektory są poprawnie odczytane. Jeżeli błąd powtarza się oznacza uszkodzenie nośnika w obrębie pola danych sektora; sektor należy uznać za uszkodzony i przenieść go na obszar zapasowy.
10 Nieistotny
11 Sektor nie znaleziony Bit zapalony oznacza nieodnalezienie poprawnego pola adresowego zadanego sektora. Sektor nie zostaje zapisany/odczytany. Jeżeli transmisja obejmowała więcej niż jeden sektor, poprzednie sektory zostają przesłane. Jeżeli błąd powtarza się, sektor należy uznać za uszkodzony.
12 Nieistotny
13 Polecenie odrzucone Bit zapalony oznacza odrzucenie polecenia z powodu braku gotowości dysku lub błędu w torze zapisu.
14 Błąd pozycjonowania głowic na ścieżce 000 Bit zapalony oznacza niepoprawne zakończenie ustawienia głowic na ścieżce 000.
15 Nie znaleziony znacznik pola danych Bit zapalony oznacza nienapotkanie podczas operacji odczytu sektora (sektorów) znacznika początku pola danych.

Uwagi:

  1. Błędy związane z nieznalezieniem znacznika pola danych, nieznalezieniem sektora, błędem kontroli CRC są sygnalizowane po 10 obrotach dysku (powtórzeniach) i powtórnym pozycjonowaniu głowic na zadanej ścieżce.
  2. Błędy te mogą wystąpić podczas operacji pierwszego formatowania powierzchni dysku. Dla dysku BASF 6185 dopuszczalne jest wystąpienia max 15 uszkodzonych sektorów na nowym dysku. Dla dysku NEC D5126 dopuszczalne jest wystąpienie 24 uszkodzonych sektorów.
  3. Jeżeli w podczas eksploatacji liczba uszkodzonych sektorów zaczyna wzrastać świadczy to o uszkodzeniu kontrolera lub dysku.
  4. Początkowo (do czasu całkowitego uruchomienia kontrolera) liczba uszkodzonych sektorów możne być dużo większa.

Źródło: Styk MERA-PLIX, wersja F, Amepol, Tadeusz W. Wilczek, 1987-02-13