Reanimacja_interfejsu_HEX.docx

(445 KB) Pobierz
Reanimacja interfejsu HEX

Reanimacja interfejsu HEX-CAN USB 7.04 po nieudanej aktualizacji oprogramowania.

 

Na wstępie – na czym polega uszkodzenie interfejsu? Do komunikacji między portem USB a interfejsem HEX-CAN wykorzystywany jest układ FT232BM. Układ ten słuŜy do komunikacji asynchronicznej przed port USB (Single chip USB <=> asynchronous serial data transfer) – czyli prawie jak USB -> Serial port converter, z tym Ŝe w programie (VAG- COMie) nie musimy kombinować czy to port COM3 czy COM4 – tylko zaznaczamy do komunikacji złącze USB. Do układu podłączona jest pamięć EEPROM (z reguły jest to układ 93C46), w której przechowywane są dane niezbędne do prawidłowej komunikacji układu FT232BM z komputerem.

 

Uszkodzenie interfejsu polega na zmienieniu zawartości pamięci EEPROM. Objawem jest to, Ŝe interfejs jest od nowa wykrywany przez system operacyjny, ale sterowniki które wcześniej pasowały, juŜ nie działają. Parametry odpowiedzialne za prawidłowe zainstalowanie urządzenia to VID oraz PID (Vendor ID and Product ID).

 

To niestety nie wszystko – w interfejsie znajdują się jeszcze dwie inne pamięci – w układzie ATmega162 jest koleny EEPROM oraz FLASH. Zmieniona zostaje zawartość takŜe pamięci EEPROM w ATmedze.

 

Przywrócenie działania interfejsu polega na ponownym zaprogramowaniu pamięci EEPROM. Z pamięcią 93C46 nie będzie większego problemu – moŜna ją zaprogramować podpinając interfejs do portu USB. Jednak zaprogramowanie ATmegi będzie juŜ wymagało większych nakładów.

 

Na chwilę obecną nie ma dostępnych publicznie wsadów pamięci do wersji interfejsu 7.04 – do napisania tej instrukcji wykorzystałem wsady z wersji 6.07. Jednak jeśli wsady juŜ się pojawią to jedyna zmiana będzie we wskazaniu innych plików do zaprogramowania.

 

Zacznijmy od tej prostrzej czynności – przywrócenie pamięci EEPROM połączonej z układem FT232BM.

 

Musimy zacząć od odczytania aktualnych (zmienionych wartości) VID oraz PID. SłuŜy do tego program usbview.exe (http://www.ftdichip.com/Resources/Utilities/usbview.zip). KaŜdy uszkodzony kabel ma zapisane losowe wartości, dlatego w kaŜdym przypadku wartości te będą inne. Przykładowy odczyt uszkodzonego interfejsu wygląda następująco:


 

Interesują nas pola:

idVendor (nasz VID):1135 idProduct (nasz PID): A000

 

Aby mieć moŜliwość przeprogramowania pamięci, musimy nasz uszkodzony interfejs zainstalować w systemie – w przeciwnym razie Ŝaden program do zapisywania pamięci EEPROM nie będzie chciał rozpoznać urządzenia (device not found). W tym celu musimy wydobyć sterowniki z systemu.

Z katalogu C:\Ross-tech\VAG-COM kopiujemy gdzieś (np. do C:\INST) następujące pliki: RT-USB.INF

RT-USB.DLL RT-USB.SYS

W katalogu C:\INST modyfikujemy plik RT-USB.INF, szukamy sekcji: [RossTechHw]

%USB\VID_0403&PID_FA20.DeviceDesc%=RT-USB,USB\VID_0403&PID_FA20

%USB\VID_0403&PID_FA23.DeviceDesc%=RT-USB,USB\VID_0403&PID_FA23

%USB\VID_0403&PID_FA24.DeviceDesc%=RT-USB,USB\VID_0403&PID_FA24

 

Powinniśmy tu wpisać nasze wartości VID, oraz PID, czyli w naszym przypadku zmodyfikowany kawałek pliku powinien wyglądać tak:


[RossTechHw]

%USB\VID_1135&PID_A000.DeviceDesc%=RT-USB,USB\VID_1135&PID_A000

%USB\VID_0403&PID_FA23.DeviceDesc%=RT-USB,USB\VID_0403&PID_FA23

%USB\VID_0403&PID_FA24.DeviceDesc%=RT-USB,USB\VID_0403&PID_FA24

 

Plik zapisujemy i próbujemy zainstalować nasz uszkodzony interfejs, powinno to wyglądać mniej więcej tak:






 

 

Po prawidłowym zainstalowaniu, przyszedł czas na przygotowanie pamięci EEPROM do zapisania. Polega to na wyczyszczeniu wszystkich komórek (EEPROM erase). Wykorzystamy do tego program FTDI Monitor.

 

Uruchamiamy program, powinniśmy zobaczyć taki widok:


 

 

MoŜemy teraz zobaczyć, co jest zapisane w EEPROMie (menu opcje – czytaj eeprom):



 

Następnie z menu Opcje wybieramy „Kasuj EEPROM”. Jeśli operacja przebiegnie bez problemów, zamykamy program FTDI Monitor, odłączamy interfejs od portu USB i podłączamy ponownie. Tym razem powinien wykryć i zainstalować się jako USB Serial Port. Windows nie prosił juŜ o Ŝadne dodatkowe drivery.


 

Ponowne uruchomienie FTDI Monitora powinno dać takie widoki:



 

 




Wartości „FF” oznaczają Ŝe pamięć EEPROM jest pusta i moŜemy przystąpić do programowania.

 

Do programowania będziemy uŜywać programu Mprog 3.0a, do ściągnięcia ze strony: http://www.ftdichip.com/Resources/Utilities/MProg3.0_Setup.exe

 

Po uruchomieniu programu ustawiamy go tak samo jak na poniŜszym screenie:



 

UWAGA! -> NaleŜy odznaczyć opcję Only Program Blank Devices, przy włączonej opcji, w moim przypadku programowanie nie powiodło się i program się zamykał

 

Nasze ustawienia zapisujemy – Menu File -> Save As … i moŜemy przystąpić do zaprogramowania EEPROMu – Menu Device -> Program

 

Pomyślne zaprogramowanie zostanie potwierdzone komunikatem: Programmed Serial Number: RT000001


 

 

Pierwsza część za nami – odłączamy kabelek od portu USB, podłączamy ponownie i sprawdzamy czy Windows wykryje go jako:


 

Pozostało nam zaprogramowanie drugiej pamięci – tej znajdującej się w ATmedze – tutaj niestety musimy zaopatrzyć się w odpowiedni programator oraz lutownicę. Na szczęście nie ma potrzeby wylutowywać układu - byłoby to zadanie naprawdę dla doświadczonych elektroników, na płytce jest wyprowadzone miejsce do którego wystarczy wlutować piny i juŜ moŜemy się dołączyć do układu i dokonać programowania w trybie SPI (szeregowe programowanie układu). Miejsce na piny wygląda następująco:



 

Proponuję uŜyć programatora AVR prog II na port USB, moŜna znaleźć na allegro pod hasłem „programator AVR” lub na stronie www.eiua.c0.pl


Przestrzegam przed programatorami pracującym z portem równoległym LPT – jest tam potrzebne zasilanie układu docelowego. W przypadku programatora USB moŜemy zapewnić zasilanie układu ATmega bezpośrednio z programatora.

 

Oprócz programatora będziemy potrzebowali jeszcze uniwersalną taśmę połączeniową poniewaŜ po stronie programatora jest złącze standardu KANDA 2x5 (10 PIN) który wygląda następująco:

 

 



 

 

Po stronie interfejsu złacze wygląda tak – PINy trzeba wlutować samodzielnie:


 

Uniwersalna taśma połączeniowa wygląda tak:



 

Podsumowując, będziemy potrzebowali:

 

1 programator AVR prog II

2 taśmę uniwersalną do podłączenia programatora z interfejsem HEX-CAN

3 złącze do wlutowania w interfejs HEX-CAN:




Jeśli juŜ wszystko zgromadzimy, złącze musimy odpowiednio przyciąć i wlutować do interfejsu w miejsce pokazane na rysunku.



 

Oto rozpiska poszczególnych pinów:

 

x x x x 6 5 4 3

x x

2 1

 

4  - MOSI

5  - MISO

6  - VCC

7  - GND

8  - SCK

9  - RESET

 

 

Musimy to połączyć za pomocą taśmy uniwersalnej z programatorem, oto rozpiska z taśmy  od programatora:




10            - MOSI

11            - VCC

12            - x

13            - GND

14            - RST

15            - x

16            - SCK

17            - x

18            - MISO

19  – x

 

Tutaj uwaga – spotkałem się z interfejsami, które wyglądają tak:



 

Piny do programowania znajdują się w u góry tylko w jednym rzędzie. Skąd mamy wiedzieć, który jest który? Z pomocą przychodzi nam dokumentacja techniczna Atmegi, z której wynika Ŝe:




Czyli sprawdzamy za pomocą omomierza pierwsze sześć nóŜek układu z pinami i juŜ wiemy który PIN to MOSI, MISO, SCR, RESET i VCC, zostaje jeszcze do znalezienia GND, ale to będzie ten którego nie znajdziemy na Ŝadnej z tych szesciu nóŜek układu atmega.

 

Zakładam, Ŝe interfejs juŜ podłączony do programatora, teraz musimy przygotować jeszcze programator. Zwieramy zworkę Z2 – spowoduje to podawanie napięcia do programowanego układu:



(Zlecam sprawdzenie w instrukcji urządzenia czy to na pewno ta zworka).

 

Jeśli wszystko gotowe podłączamy programator do komputera (pamiętajmy o driverach – wcześniej programator naleŜy zainstalować w windowsie).

 

Do programowania wykorzystamy program avrdude z nakładką AVR8 burn-O-Mat. Po uruchomieniu programu (plikiem start.bat) polecam obejrzeć opcje Settings -> AVRDUDE. Trzeba tam poustawiać ścieŜki do programu – poniewaŜ program jest DOSowy, a to co widzimy to nakładka graficzna napisana w JAVIE.


 

Wybieramy teŜ rodzaj programatora – USBASP. Klikamy w APPLY, potem OK. i w głównym oknie programu ustawiamy rodzaj układu który będziemy programować – ATmega162 oraz wskazujemy zawartość pamięci FLASH oraz EEPROM, jako rodzaj plików wybieramy RAW:


 

Najpierw programujemy pamięć flash – klikamy WRITE, następnie programujemy pamięć EEPROM – teŜ klikamy w guzik WRITE.

 

Po tej operacji mamy w pełni działający interfejs HEX-CAN w wersji 6.07.

 

Pamiętajmy, Ŝe uruchomienie programu VAG-COM w wersji 7.01 lub wyŜszej spowoduje uszkodzenie interfejsu i całą zabawe będziemy musieli wykonać od nowa. Naprawiony interfejs będzie współpracował tylko z VAG-COMem 6.07 – chyba Ŝe ktoś pokusi się o udostępnienie wsadów do Atmegi w wersji 7.01…

 

Wszystko co potrzebne do naprawy interfejsu znajdziesz pod tym linkiem:

 

http://rapidshare.com/files/98312156/HEX-CAN.zip.html

Zgłoś jeśli naruszono regulamin