Aktualizacja biosu CT60/63 za pomocą narzędzia Xilinx Impact
Podniesienie wersji firmware’u to rzecz trochę straszna, cała operacja może zamienić sprzęt w zwykły złom jeżeli została przeprowadzona nieprawidłowo lub nieumiejętnie. Czasami jest to jednak konieczne ze względu na opublikowanie przez producenta poprawek wykrytych błędów (np. uniemożliwiających korzystanie z nowych kart rozszerzających tak jak to było w przypadku EtherNAT i planowanego CTPCI), optymalizację działania etc. Dodatkowo może się tak stać, że podczas aktualizacji za pomocą natywnych narzędzi coś może pójść źle (np. awaria systemu podczas programowania) co powoduje to, że nie można już zabootować naszego komputera. Np. w przypadku aktualizacji sterowania ABE i SDR na tej samej maszynie z narzędziem do flashowania dostarczanym w pakiecie oprogramowania CT60/63 Didier’a Mequignon’a.
Nie można w takim wypadku już użyć Falcon’a do flashowania, gdyż nie będzie można go już w ogóle zabootować, ani w trybie 030, ani 060. W takim wypadku można odesłać CT60/63 do producenta, zabić się lub naprawić wszystko samemu przy pomocy komputera PC, programu iMPACT oraz kabla JTAG. Poniżej opiszę trzecią opcję. Potrzebujemy jeszcze wolny port LPT lub USB w zależności od rodzaju kabla JTAG, który posiadamy.
Wymagania wstępne
1) Oprogramowanie ISE WebPACK
iMPACT jest częścią dosyć sporego (4,3gb, sic!) pakietu oprogramowania ISE WebPACK Software firmy XiLINX. W pierwszej kolejności trzeba się zarejestrować na stronie XiLINX, pobrać pakiet instalacyjny(ok. 40mb), uruchomić instalację i zostawić wszystko na pół lub cały dzień (w zależności od tego jakim łączem internetowym dysponujemy). Oczywiście można sobie zamówić sobie ten pakiet na DVD – narzędzia są darmowe (nie będziemy ich używać do produkcji oprogramowania ‘pocisków, broni nuklearnej, chemicznej lub biologicznej’, więc możemy ich spokojnie używać ;)), ale musimy się liczyć z ewentualnością obciążenia naszej karty kredytowej kosztami przesyłki.
Pakiet jest dostępny dla poniższych systemów operacyjnych:
- Microsoft Windows XP Professional (tylko wersja 32-bit)
- Microsoft Windows Vista Business (tylko wersja 32-bit)
- Red Hat Enterprise Linux WS 4 (tylko wersja 32-bit)
- Red Hat Enterprise Linux Desktop 5 (tylko wersja 32-bit)
- SUSE Linux Enterprise 10 (tylko wersja 32-bit)
Na potrzeby tego instruktażu używałem WinXP Professional 32-bit SP3.
2) Kabel JTAG
Są ich dwa rodzaje: LPT (RS232/złącze DB25) oraz na USB. Można je też zrobić sobie samemu (schematy są ogólnie dostępne) lub po prostu kupić. Jeżeli chcemy używać kabla zarówno z F030 jak i PC to bardziej odpowiednia będzie wersja na port LPT.
Jest jedna ważna rzecz podczas programowania ABE i SDR na Falconie z kablem LPT (na tej samej maszynie na której jest wpięte CT60). Trzeba zmodyfikować kabel JTAG:
tj. odłączyć kabel z pinu #13 DB25 i podłączyć go do pinu #10. Konieczna też będzie reorganizacja kolejności pinów po stronie konektora JTAG wpinanego na płytę CT60 według dostępnych schematów i dokumentacji CT60.
W przypadku zmiany kolejności pinów najbardziej zgrabnym rozwiązaniem jest kabel Rena Electronics , gdyż nie posiada po jednej stronie złącza jako takiego lecz odpowiednio poopisywane kabelki, które możemy wpiąć na piny według upodobania, takiego właśnie kabla używam w tym tutorialu. Kabel ten posiada diodę wskazującą zasilanie kabla (jest to ważna sprawa przy programowaniu firmware’u ct60/63).
W przypadku programowania firmware’u na PC żadne modyfikacje kabla JTAG nie są potrzebne.
Przygotowanie
1) Trzeba podpiąć kabel JTAG do komputera PC przez port LPT lub USB. Zakładam, że karta ct60 jest już wpięta na płytę główną F030 i zasilanie jest wyłączone. W pierwszej kolejności można wyjąć moduł SDRAM (nie jest on potrzebny w czasie programowania, ułatwi to dostęp do pinów oznaczonych jako “RESERVED” (zarezerwowane) na płytce CT60/63) i podłączyć sygnały zgodnie z poniższym diagramem:
Tutaj jest zdjęcie jak wyglądało to w podłączenie w mojej konfiguracji sprzętowej:
2) Pobieramy najnowszy firmware ze strony PowerPhenix (pliki z ABE i SDR), rozpakowujemy archiwa i zapisujemy gdzieś na twardym dysku.
Opis procedury aktualizacji
W pierwszej kolejności trzeba skonfigurować kabel w aplikacji iMPACT (czasami nie jest to wymagane i kabel jest rozpoznawany automatycznie). iMPACT uruchamiamy z Programy->Xilinx ISE Design Suite->ISE->Accessories->iMPACT, po chwili wyskoczy okno “iMPACT project”. Jeżeli przypadkiem okno zostało zamknięte to można do niego wrócić wybierając opcję File->New->Impact project z paska menu głównego.
Następnie wybieramy nowy projekt “New project” i pokaże się wtedy okno dialogowe z opcją “Configure devices using boundary scan (JTAG)” (opcja ta musi być zaznaczona) i wybrać albo “Automatically connect to the cable and identify boundary scan chain” lub “Enter boundary chain manually”. Nie naciskaj jeszcze przycisku “Finish” .
Teraz trzeba włączyć Falcona030 i dopiero wtedy po chwili nacisnąć przycisk “Finish” w oknie dialogowym.
Jeżeli kabel został prawidłowo skonfigurowany (tak jak to było w moim wypadku) układy ABE i SDR zostaną prawidłowo wykryte i użytkownik jest proszony o wybranie plików jedec z firmware. iMPACT będzie przechodził po każdym układzie w łańcuchu i dla każdego z nich trzeba przypisać odpowiedni plik.
W pierwszej kolejności wybieramy plik ABE*.JED, a potem SDR*.JED (jeżeli zrobi się to w złej kolejności po wgraniu firmware’u nic nie będzie działało).
Jeżeli będą problemy z wykryciem kabla/połączeniem jest druga opcja “Enter boundary chain manually”, która umożliwi ręczne skonfigurowanie kabla i ręczną inicjalizację łańcucha narzędziowego (musisz się upewnić, że Falcon030 jest zasilany).
Będziesz musiał kliknąć prawym przyciskiem myszy na nowo utworzonym oknie “Boundary scan window” i wybrać opcję “configure cable” (konfiguracja kabla) (ustaw ją na Parrarel III lub Parrarel IV wraz z identyfikatorem portu LPT lub wybierz Xilinx USB cable w przypadku kabla JTAG na USB). Po zatwierdzeniu zmian możesz wybrać opcję “Initialise toolchain” przez kliknięcie prawym przyciskiem na oknie “Boundary scan window” lub po prostu wcisnąć kombinację klawiszy CTRL-I. Po tym kabel JTAG powinien zostać wykryty i użytkownik jest wtedy proszony o wybór plików *.JED tak jak to opisałem wyżej dla procesu automatycznego.
Jeżeli wszystko zadziałało prawidłowo powinniśmy widzieć ekran jak niżej:
Teraz dla każdego z układów, SDR i ABE, trzeba wyczyścić stare oprogramowanie, wgrać nowe i zweryfikować poprawność jego wgrania.
1) Wyczyszczenie istniejącego, starego firmware’u (przez wciśnięcie prawego przycisku myszy na ikonach ABE i SDR i wybranie opcji ERASE z menu kontekstowego)
2) Programowanie (przez wciśnięcie prawego przycisku myszy na ikonach ABE i SDR i wybranie opcji PROGRAM z menu kontekstowego)
3) Weryfikacja operacji programowania układów (przez wciśnięcie prawego przycisku myszy na ikonach ABE i SDR i wybranie opcji VERIFY z menu kontekstowego)
Po każdej z powyższych operacji na każdym z układów pokazuje się niebieski kwadrat z napisem wskazującym, że operacja się powiodła lub czerwonym w przypadku błędu (w takim przypadku trzeba powtórzyć ostatnią operację, jeżeli to nie poskutkuje to trzeba sprawdzić połączenia kabli i czy kabel JTAG jest zasilany).
Zrobione!
I to właściwie wszystko. Trzeba tylko włożyć z powrotem moduł SDRAM i uruchomić maszynę w trybie 030 i 060 by zweryfikować czy wszystko działa prawidłowo.
Po aktualizacji za pomocą iMPACT można zauważyć, że wersja ABE i SDR nie jest właściwie przezentowana podczas bootowania. Dzieje się tak dlatego, że rejon pamięci flash, gdzie wpisywana jest wersja firmware, nie jest modyfikowany przez iMPACT. Tylko narzędzie do flashowania z natywnego pakietu oprogramowania CT60 aktualizuje ten region po aktualizacji SDR i ABE. To jest jedyny mankament jaki udało mi się zauważyć podczas całego procesu.