Odczyt Winchestera: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
mNie podano opisu zmian
Linia 68: Linia 68:
# '''WDA''' (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych
# '''WDA''' (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych


= Odczyt danych =
= Odczyt dysku =


Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwia graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.
Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Wykonanie pełnego obrazu dysku trwało około 10 minut i dawało w wyniku około 500MB danych z zapisem sygnału na wszystkich ścieżkach dysku. Tak duży rozmiar (w porównaniu do 20 MB pojemności dysku) wynika z trzech faktów:
* 20 MB to powierzchnia dysku po jego sformatowaniu. Rzeczywista ilość danych na ścieżce jest powiększona o nagłówki sektorów i inne struktury organizujące zapis
* Jeden bit danych zapisywany jest za pomocą dwóch bitów zapisu MFM (zegar i dane)
* Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM
 
Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwia graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.
<br /><br />
<br /><br />
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
<br />
<br />
Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM. Znalazła się też odpowiedź na pytanie, dlaczego zawartości dysku nie udało się odczytać kontrolerem MFM używanym wcześniej. Powody były dwa, z których pierwszy był pewną przyczyną niepowodzenia:
Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM zgodny ze standardem używanym w napędach ST-506. Powody, dla których nie udała się pierwsza próba odczytu były dwa, z których pierwszy był pewną przyczyną niepowodzenia:
# Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
# Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
# Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.
# Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.
Po skonfigurowaniu analizatora (WDA), przeprowadzona została kompletna analiza obrazu, której kroki obejmowały:
* odtworzenie zegara, który został użyty przy zapisie,
* odnalezienie znaczników MFM, które sygnalizowały początki nagłówków sektorów i początki danych w sektorze
* pogrupowanie bitów sygnału MFM w pary (zegar, dane), co umożliwiło jego rozkodowanie do bajtów stanowiących treść struktury sektora
* odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów
* odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych
* złożenie zawartości sektorów w bajtowy obraz ścieżki
* złożenie bajtowych obrazów ścieżek w kompletny obraz dysku

Wersja z 11:12, 30 mar 2013

Winchester w zewnętrznej obudowie

Jednym z nośników danych zapisanych na MERZE-400, które przetrwały do dziś jest dysk Winchester zamontowany w minikomputerze znajdującym się w Muzeum Techniki w Warszawie. Minikomputer ten wypożyczony został Muzeum przez Politechnikę Gdańską, gdzie działał w Instytucie Okrętowym jako maszyna, na której m.in. zespół rozwijający CROOK-a pracował nad swoim systemem. Sam fakt, że dysk zawiera dane zapisane na MERZE-400 czyni go interesującym, a źródło jego pochodzenia jego wartość tylko podnosi, dając nadzieję na pozyskanie niezwykle cennych danych.

Nośnik danych

NEC D5126

Nośnik danych to dysk z interfejsem ST-506, NEC D5126. Jego podstawowe parametry:

  • 5.25"
  • pojemność: 20 MB
  • 2 talerze
  • 4 głowice w zespole poruszanym za pomocą silnika krokowego
  • 615 cylindrów
  • 17 sektorów/ścieżkę
  • brak autoparkowania, ścieżka parkingowa: 664
  • transfer: 5Mbit/s

Dysk znajduje się w zewnętrznej 19" obudowie, która oprócz niego zawiera również napęd dysków elastycznych 5,25". Elementy te podłączone są osobnymi kablami sygnałowymi do odpowiednich kontrolerów procesora peryferyjnego PLIX. Poza nimi, w obudowie zamontowany jest jedynie zasilacz +5/+12V oraz duży wentylator z tyłu obudowy.

Kontroler dysku zbudowany przez Amepol opiera się na układzie Intel C82062 zaprojektowanym dla komputerów z procesorami 80186. Realizuje on zapis i odczyt danych w standardzie MFM, który jako pierwszy używany był dla dysków z interfejsem ST-506.

Pierwsze próby odczytu

Kontroler MFM WD1006V-MM1

Amepol używał w swoich konstrukcjach standardowych komponentów, używanych również w początkach ery komputerów PC. Pierwszym nasuwającym się sposobem odczytu zawartości dysku było więc użycie odpowiedniego kontrolera dla PC/XT lub AT. Takie komponenty są wciąż dostępne, wymagają jedynie komputera wyposażonego w szynę ISA (8 lub 16-bit, w zależności od typu kontrolera). Złącza ISA obecne są jeszcze w stosunkowo nowych płytach głównych, co pozwala na użycie w miarę współczesnego komputera PC. Zarówno kontrolery MFM jak i dyski tego typu są wciąż obsługiwane przez system operacyjny GNU/Linux, tak więc zbudowanie kompletnego środowiska uruchomieniowego było jak najbardziej możliwe.

Próba odczytu dysku przy użyciu takiego właśnie zestawu z kontrolerem MFM Western Digital WD1006V-MM1 zakończyła się niepowodzeniem. Dysk okazał się być sprawny mechanicznie i elektrycznie, ale kontroler raportował jedynie błędy odczytu.

Początkowo nie był znany układ, którego użył Amepol do konstrukcji interfejsu dla Winchestera, istniało więc prawdopodobieństwo, że układ ten realizował zapis w standardzie RLL. Przeprowadzone zostały więc próby odczytu z dwoma różnymi kontrolerami RLL: Western Digital WD1002A-27X oraz WD1003-RA2, zakończone również niepowodzeniem.

Uniwersalny czytnik dysków Winchester

Ponieważ próby odczytu za pomocą kontrolera MFM WD1006V-MM1 nie przyniosły pozytywnego rezultatu, należało założyć, że format zapisu danych jest inny od standardu MFM dla dysków ST-506 obsługiwanych przez użyty kontroler. Jest to prawdopodobne, ponieważ na początku ery tego interfejsu kontrolery różnych producentów nie zawsze były ze sobą w pełni kompatybilne. Poszukiwanie odpowiedniego, kompatybilnego kontrolera mogłoby okazać się zadaniem trwającym wieczność, potrzebne więc było alternatywne rozwiązanie, które idealnie pozwoliłoby odczytać dane niezależnie od:

  • użytej metody zapisu,
  • formatu ścieżki i sektora,
  • stanu danych (ewentualne uszkodzenia sektorów).

Takie rozwiązanie istnieje dzięki temu, że interfejs ST-506 pozwala na dostęp do danych zapisanych na powierzchni nośnika na bardzo niskim poziomie. Sygnał danych wyprowadzony tym interfejsem jest niemalże wprost sygnałem pochodzącym z głowic dysku, bez żadnej obróbki logicznej. Można więc przeprowadzić procedurę, która polegałaby na:

  1. Zarejestrowaniu na nośniku zewnętrznym sygnału z głowic dysku, kolejno dla każdej ścieżki i głowicy.
  2. Analizie zapisu i odczytaniu z niego właściwych danych bajtowych.

Praktyczna realizacja zadania polega na:

  1. Zbudowaniu urządzenia, które będzie potrafiło:
    • zgodnie ze specyfikacją ST-506 sterować dyskiem (pozycjonować i wybierać głowice, odczytywać stan dysku)
    • próbkować sygnał danych z odpowiednio wysoką częstotliwością
    • komunikować się z komputerem PC (otrzymywać polecenia, raportować stan dysku, przesyłać próbkowane dane)
  2. Napisaniu oprogramowania (firmware) takiego urządzenia
  3. Napisaniu oprogramowania realizującego proces obrazowania całego dysku
  4. Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych
  5. Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz wynikowy

Realizacja

"Czytnik" dysków Winchester

Dyski z interfejsem ST-506 wyposażone są w dwa złącze krawędziowe: jedno służy do przesyłania sygnałów sterujących, drugie do przesyłania danych. Wszystkie sygnały sterujące zrealizowane są w standardzie TTL z logiką ujemną (aktywne 0). Sygnały na liniach danych, zarówno odczytu jak i zapisu, to różnicowonapięciowy RS-422.

Urządzenie zostało zaimplementowane w oparciu o cztery główne elementy:

  • AVR/Atmega162 z zewnętrznym oscylatorem 16MHz w roli kontrolera dysku
  • Texas Instruments SN75176BP użyty do konwersji sygnału RS-422 do poziomów TTL
  • Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz
  • FTDI FT232RL jako interfejs USB dla kontrolera, do komunikacji z PC
Schemat blokowy "czytnika" dysków Winchester
Schemat blokowy "czytnika" dysków Winchester

Zarówno kontroler jak i sampler podłączone są do komputera PC za pomocą złącz USB. Kontroler widziany jest jako urządzenie za portem szeregowym, sampler używa własnego protokołu transmisji i jest dostępny dzięki bibliotece dostarczonej przez producenta. W całym systemie są trzy elementy programowe:

  1. WDC (Winchester Disk Controller, C) - oprogramowanie mikrokontrolera AVR, tłumaczące komendy odbierane z portu szeregowego na sekwencje sygnałów sterujących dyskiem i zapewniające jego obsługę zgodnie z wymaganiami standardu
  2. WDS (Winchester Data Sampler, C++) - oprogramowanie automatyzujące proces obrazowania dysku, realizuje dwie funkcje:
    • komunikuje się kontrolerem w celu wybrania dysku, ustalenia pozycji głowic, wybrania głowicy i odczytu stanu napędu
    • komunikuje się z samplerem inicjalizując proces obrazowania ścieżki i zapisuje obrazy kolejnych ścieżek na dysk komputera
  3. WDA (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych

Odczyt dysku

Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Wykonanie pełnego obrazu dysku trwało około 10 minut i dawało w wyniku około 500MB danych z zapisem sygnału na wszystkich ścieżkach dysku. Tak duży rozmiar (w porównaniu do 20 MB pojemności dysku) wynika z trzech faktów:

  • 20 MB to powierzchnia dysku po jego sformatowaniu. Rzeczywista ilość danych na ścieżce jest powiększona o nagłówki sektorów i inne struktury organizujące zapis
  • Jeden bit danych zapisywany jest za pomocą dwóch bitów zapisu MFM (zegar i dane)
  • Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM

Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwia graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.

Graficzny interfejs analizatora zapisu MFM
Graficzny interfejs analizatora zapisu MFM


Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM zgodny ze standardem używanym w napędach ST-506. Powody, dla których nie udała się pierwsza próba odczytu były dwa, z których pierwszy był pewną przyczyną niepowodzenia:

  1. Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
  2. Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.

Po skonfigurowaniu analizatora (WDA), przeprowadzona została kompletna analiza obrazu, której kroki obejmowały:

  • odtworzenie zegara, który został użyty przy zapisie,
  • odnalezienie znaczników MFM, które sygnalizowały początki nagłówków sektorów i początki danych w sektorze
  • pogrupowanie bitów sygnału MFM w pary (zegar, dane), co umożliwiło jego rozkodowanie do bajtów stanowiących treść struktury sektora
  • odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów
  • odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych
  • złożenie zawartości sektorów w bajtowy obraz ścieżki
  • złożenie bajtowych obrazów ścieżek w kompletny obraz dysku