Regulamin | Ostatnie posty | temat RSS | Szukaj | Zarejestruj | Zaloguj

Projekt zastąpi CY7C64613 w ICD2


Idź do strony Poprzednia 1, 2, 3, 4 ... 59, 60, 61 Następna
Skocz do strony:

Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrollers -> Project zastąpić CY7C64613 w ICD2
Wersja arabska Wersja bułgarska Polish version Wersja czeska Wersja w języku duńskim Wersja niemiecka Wersja grecka Wersja anglojęzyczna Wersja hiszpańska Wersja fińska Wersja francuska Hinduski wersji Chorwacki wersji Indonezyjski wersji Wersja włoska Hebrajski wersji Japońskiej wersji Koreańskiej wersji Wersja litewska Wersja łotewska Wersja w języku niderlandzkim Wersja w języku norweskim English version Wersja portugalska Wersja rumuńska Rosyjska wersja Wersja słowacka Wersja słoweńska Serbski wersji Wersja szwedzka Tagalski wersji Ukraińska wersja Wietnamski wersji Chiński wersji
Autor Wiadomość
Kripton2035



Dołączył: 19 lipca 2001
Posts: 482
Dzięki: 15
Lokalizacja: Earth


Post 03 kwietnia 2006 8:28 Re: Projekt zastąpi CY7C64613 w ICD2

predrage napisał:
Moi znajomi i nie uda się realizacja ICD2_4550_BOOT_0180.BIN do 4550. I'v
próbował otworzyć plik bin winpic 800 z oprogramowania, ale nie powiodło się. I tryed, aby otworzyć go z opcją "wszystkie pliki" i "typy plików", ponieważ nie ma bezpośredniego wsparcia dla bin plików. ICprog się, że wsparcie (aby otworzyć pliki bin), ale nie może programu 4550. W rzeczywistości nie ma 4550 w liście urządzeń. Co mam teraz zrobić? Wszelkie sugestie? I'm just a beginner ale dobrej woli do pomocy.
Sorry about my bad english.


zmienić nazwę. BIN do. HEX i winpic otworzy to!
czasami dużo plików. BIN w rzeczywistości są Intel. hex!
aby upewnić się, otwórz plik z notatnika, jeżeli zawiera linie literę ":", a następnie zmienić nazwę na. szesnastkowy i otworzyć go z winpic .. jeśli jest to śmieci, a następnie bin2hex muszą być stosowane, aby je otworzyć.
Powrót do góry
narccizzo



Dołączył: 20 stycznia 2006
Posts: 173
Dzięki: 4
Lokalizacja: PATZCUARO, Michoacán, Meksyk


Post 03 kwietnia 2006 9:42 Re: Projekt zastąpi CY7C64613 w ICD2

Są to dwa pliki bin przekształcone w hex, I've otworzył bin pliki z
IC-prog oprogramowania następnie zapisać pliki w formacie szesnastkowym, jeśli spojrzeć na te pliki możesz zobaczyć odczytanie napisu "Microchip Tecnology ICD2 USB Device icd2 usb" w adresie 0x0ee7 dla boot.hex pliku i sam ciąg w 0x0b8e dla
os.hex pliku, ja dont mieć Disassembler zbadać bardziej szczegółowo ten pliki ale coś mi mówi, że te dwa pliki są wszystkie że potrzebujemy.

BR
Narccizzo


Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

Powrót do góry
Jay.slovak



Dołączył: 23 marca 2006
Posts: 11


Post 03 kwietnia 2006 11:17 Re: Projekt zastąpi CY7C64613 w ICD2

narccizzo napisał:
Są to dwa pliki bin przekształcone w hex, I've otworzył bin pliki z
IC-prog oprogramowania następnie zapisać pliki w formacie szesnastkowym, jeśli spojrzeć na te pliki możesz zobaczyć odczytanie napisu "Microchip Tecnology ICD2 USB Device icd2 usb" w adresie 0x0ee7 dla boot.hex pliku i sam ciąg w 0x0b8e dla
os.hex pliku, ja dont mieć Disassembler zbadać bardziej szczegółowo ten pliki ale coś mi mówi, że te dwa pliki są wszystkie że potrzebujemy.

BR
Narccizzo


Czy na pewno masz poprawnie przekonwertowane pliki? Jeśli mogę importować je do MPLAB, kod nie ma sensu, wszystko to jest tylko realizując Program pamięci i robi NOPs. Nic nie dzieje się przydatne zarówno w rozruchu i OS HEXs. Nawet config bity są różne w obu plikach!
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 03 kwietnia 2006 11:19 Projekt zastąpi CY7C64613 w ICD2

Albert,

jądra sterownik (-y) się spodziewać, z cyprysa połączy w różnych vid / pid firt gdy podłączony, i po ładowarkowego sys Pobieranie to fw będzie ponownie w innym vid / pid więc innych sys rozmów do niego. Mamy do wykonania tylko druga.
Iam @ pracy więc nie mogę zrobić nic tu spodziewać twardego myślenia Rolling Eyes ...
Powrót do góry
silvio



Dołączył: 31 grudnia 2001
Posts: 800
Dzięki: 90


Post 03 kwietnia 2006 11:31 Re: Projekt zastąpi CY7C64613 w ICD2
tagi: MPLAB protokołu icd2 cypress Disassembler Disassembler cyprysa

Hi Zedman,

it's a must to understand what's under cover. Jeśli chodzi CY hex plik to nie tylko kwestia dobrego Disassembler która zna cyprysa chip, ale czytanie 436 stron EZ-USB FX TechRefManual jest to musi zrozumieć, co się pod osłoną.
A ja nie wierzę już na to czasu. Niemniej jednak, jeżeli nie jesteś zaznajomiony z 8051 opcodes parsowanie kodu zajmie trochę czasu. (I Know You're familar z tych PIC)
with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. I może zastąpić wszystkie wystąpienia MOV DPTR, # LXXXX z odpowiednimi wartościami z CY7C64613 rejestrów 0x7800-0x7FFF ale będzie zdecydowanie skończyć zwrotnym stron TechRefManual szukamy definicji.
Poza tym, że niektórzy, jak trudno przypisać bity, które są jasno ustalone lub w programie, o ile nie są one mapowane w SFR przestrzeni (który kończy się w 0 lub 8).
with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Łatwo zastąpić MOV DPTR, # L7FB4 z MOV DPTR, # EP0CS ale trudno powiedzieć SETB HSNAK wynika z powyższych powodów.

and EP0STAL L which are affected in the bellow code at 0x03E2. Weźmy na przykład bity HSNAK i EP0STAL L, które są narażone w mieszkowy kod na 0x03E2.
Kod:

L03E2: LCALL L0FBE
Jnc L03EE
MOV DPTR, # L7FB4
MOVX A, @ DPTR
ORL A, # 01godz; jakiś SETB EP0STALL
MOVX @ DPTR, A
L03EE: MOV DPTR, # L7FB4
MOVX A, @ DPTR
ORL A, # 02godz; jakiś SETB HSNAK
MOVX @ DPTR, A
RET

L0FBE: SETB C
RET


Weźmy na przykład (CP_1.asm) kod linie zaczynające się offset 0x0100 (a subroutine wezwaniem 0x05FA), pierwszy wiersz kodu wykorzystywane natychmiast mieszkowy wektora przerwania tabeli
Na RAM 0x7FE9 można znaleźć 2-gie bajt z 8 bajtów USB SETUP pakietowej transmisji danych (patrz strona 215 table9-1), co oznacza, bRequest pola (patrz tabela 9-2).


Kod:

L0100: MOV DPTR, # L7FE9
MOVX A, @ DPTR
JNZ L0109
LJMP L029B; jeśli bRequest = GetStatus przejść do 0x029B
L0109: DEC A
JNZ L010F
LJMP L0317 jeśli bRequest = Wyczyść funkcji, przejdź do 0x0317
L010F: ADD A, # 0FEh
JNZ L0116
LJMP L038E; jeśli bRequest = Zestaw funkcji, przejdź do 0x038E
L0116: ADD A, # 0FBh
JNZ L011D
LJMP L0295 jeśli bRequest = Get Konfiguracja przejść do 0x0295
L011D: DEC A
JNZ L0123
LJMP L028F; jeśli bRequest = Ustaw Konfiguracja przejść do 0x028F
L0123: DEC A
JNZ L0129
LJMP L0283 jeśli bRequest = Get interfejsu, przejść do 0x0283
L0129: DEC A
JNZ L012F
LJMP L0289 jeśli bRequest = Ustawia interfejs, przejść do 0x0289
L012F: ADD A, # 05h
JZ L0136
LJMP L03E2; bRequest = jeżeli żaden z powyższych, a następnie ustawić bitów HSNAK
; i EP0STALL z EP0CS kontroli i stanu rejestru i
potem RET w 0x05FD
;
L0136: LCALL L0F7A; jeśli bRequest = Pobierz Descriptor, LCALL 0x0F7A gdzie
JC L013E; przeprowadzenia bit jest ustawiony domyślnie, więc przejść do 0x013E
LJMP L03EE, jeżeli w 0x0F7A przeprowadzić byłoby 0 Domyślnie ustawiony bit HSNAK
; z EP0CS kontroli i stanu rejestru i RET w 0x05FD
;
L013E: MOV DPTR, # L7FEB; ponieważ bRequest był Get Descriptor
MOVX A, @ DPTR; zatem sprawdzić WValueH dziedzinie USB SETUP pakietowe
ADD A, # 0FEh
JZ L015F; jeśli wValueH został 0x02 przejść do 0x015F
DEC A
JZ L0190; jeśli wValueH został 0x03 przejść do 0x0190
ADD A, # 02godz
JZ L0150; jeśli wValueH został 0x01 przejść do 0x0150
LJMP L0279, jeżeli jest inny wValueh albo 0x01 lub 0x02 lub 0x03 następnie ustawić
; bitów HSNAK i EP0STALL z EP0CS zarejestrować i RET w 0x05FD
;
L0150: MOV A, 0Ch; ponieważ wValueH została 0x01, więc obciążenie SUDPTR globalnych USB rejestru
MOV DPTR, # L7FD4; o wartości 0x0C0D, a następnie ustawić bit HSNAK z EP0CS i RET w 0x05FD
MOVX @ DPTR, A
MOV A, 0Dh
MOV DPTR, # L7FD5
MOVX @ DPTR, A
LJMP L03EE
L015F: MOV DPTR, # L7FEA; spojrzeć teraz na polu wValueL USB SETUP pakietowe
;
;
;
;
i tak dalej ...................


port2: Microchip MPLAB ICD2 Fw client Albo w tej tabeli offset 0x0622, które odpowiadają Kripton2035 port2: Microchip MPLAB ICD2 Fw klienta


Kod:

Tabela 5-9. Domyślne USB Device Descriptor

RAM Wartość Offset Pole Opis

0622 0x12 0 bLength Długość tego Descriptor = 18 bajtów
0623 0x01 1 bDescriptorType Descriptor Device Type =
0624 0x00 2 bcdUSB (L) Wersja USB 1,10 (L)
0625 0x01 3 bcdUSB (H) Wersja USB 1,10 (H)
0626 0xff 4 bDeviceClass Device Class (FF jest specyficznych dla dostawcy)
0627 0xff 5 bDeviceSubClass urządzeń Sub-klasy (FF jest specyficznych dla dostawcy)
0628 0xff 6 bDeviceProtocol Device Protocol (FF jest specyficznych dla dostawcy)
0629 0x40 7 bMaxPacketSize0 pakietowe Maksymalny rozmiar EP0 = 64 bajtów
062A 0xD8 8 idVendor (L) Vendor ID (L) Microchip Technology = 04D8H
062B 0x04 9 idVendor (H) Vendor ID (H)
062C 0x01 10 idProduct (L), identyfikator produktu (L) ICD2 = 8001H
062D 0x80 11 idProduct (H) identyfikator produktu (H)
062E 0x03 12 bcdDevice (L) Publikacja Liczba urządzeń (BCD, L)
062F 0x00 13 bcdDevice (H) Publikacja Liczba urządzeń (BCD, H)
0630 0x00 14 iManufacturer Producent Indeks String = None
0631 0x00 15 iProduct Produkt Indeks String = None
0632 0x00 16 iSerialNumber Numer seryjny Indeks String = None
0633 0x01 17 bNumConfigurations Liczba składy w tym interfejsu = 1

Tabela 5-10. USB domyślnej konfiguracji Descriptor

RAM Wartość Offset Pole Opis

0634 0x09 0 bLength Długość tego Descriptor bajtów = 9
0635 0x02 1 bDescriptorType Descriptor Type = Konfiguracja
0636 0x74 2 wTotalLength (L) długość całkowita (L) i tym Interface Endpoint Deskryptory = 116
0637 0x00 3 wTotalLength (H) Całkowita długość (H)
0638 0x01 4 bNumInterfaces Liczba Interfejsy w tej konfiguracji
0639 0x01 5 bConfigurationValue Konfiguracja wartość wykorzystywaną przez Set_Configuration Wniosek Aby wybrać ten Konfiguracja
063A 0x00 6 iConfiguration Indeks String Opisywanie tego Konfiguracja = None
063B 0x80 7 bmAttributes Atrybuty - Bus-Powered, nr Wakeup
063C 0x4b 8 MaxPower Moc maksymalna - 150 mA

Tabela 5-11. Domyślny interfejs USB 0, Zastępca Ustawienie 0 Descriptor

RAM Wartość Offset Pole Opis

063D 0x09 0 bLength Długość interfejsu Descriptor
063E 0x04 1 bDescriptorType Descriptor Type = Interface
063F 0x00 2 bInterfaceNumber zera Indeks ten interfejs = 0
0640 0x00 3 bAlternateSetting Alternatywne Ustawianie Wartość = 0
0641 0x0E 4 bNumEndpoints Liczba punktów końcowych w ten interfejs (nie licząc EPO) = 14
0642 0xff 5 bInterfaceClass interfejsu klasy = Vendor Specific
0643 0xff 6 bInterfaceSubClass interfejsu Sub-class = Vendor Specific
0644 0xff 7 bInterfaceProtocol interfejsu protokołu = Vendor Specific
0645 0x00 8 iInterface Indeks String Descriptor do tego interfejsu = None

Tabela 5-14. Domyślny interfejs 0, Zastępca Ustawianie 1, masowe Endpoint Deskryptory

RAM Wartość Offset Pole Opis

0646 0x07 0 bLength Długość tego Endpoint Descriptor
0647 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0648 0x01 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT1
0649 0x02 3 bmAttributes XFR Type = LUZEM
064A 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
064B 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
064C 0x01 6 bInterval Polling Interval w milisekundach

064D 0x07 0 bLength Długość tego Endpoint Descriptor
064E 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
064F 0x02 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT2
0650 0x02 3 bmAttributes XFR Type = LUZEM
0651 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0652 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0653 0x01 6 bInterval Polling Interval w milisekundach

0654 0x07 0 bLength Długość tego Endpoint Descriptor
0655 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0656 0x03 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT3
0657 0x02 3 bmAttributes XFR Type = LUZEM
0658 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0659 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
065A 0x01 6 bInterval Polling Interval w milisekundach

065B 0x07 0 bLength Długość tego Endpoint Descriptor
065C 0x05 1 bDescriptor Typ Descriptor Type = Endpoint
065D 0x04 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT4
065E 0x02 3 bmAttributes XFR Type = LUZEM
065F 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0660 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0661 0x01 6 bInterval Polling Interval w milisekundach

0662 0x07 0 bLength Długość tego Endpoint Descriptor
0663 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0664 0x05 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT5
0665 0x02 3 bmAttributes XFR Type = LUZEM
0666 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0667 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0668 0x01 6 bInterval Polling Interval w milisekundach

0669 0x07 0 bLength Długość tego Endpoint Descriptor
066A 0x05 1 bDescriptor Typ Descriptor Type = Endpoint
066B 0x06 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT6
066C 0x02 3 bmAttributes XFR Type = LUZEM
066D 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
066E 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
066F 0x01 6 bInterval Polling Interval w milisekundach

0670 0x07 0 bLength Długość tego Endpoint Descriptor
0671 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0672 0x07 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = OUT7
0673 0x02 3 bmAttributes XFR Type = LUZEM
0674 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0675 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0676 0x01 6 bInterval Polling Interval w milisekundach

RAM Wartość Offset Pole Opis

0677 0x07 0 bLength Długość tego Endpoint Descriptor
0678 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0679 0x81 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN1
067A 0x02 3 bmAttributes XFR Type = LUZEM
067B 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
067C 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
067D 0x01 6 bInterval Polling Interval w milisekundach

067E 0x07 0 bLength Długość tego Endpoint Descriptor
067F 0x05 Typ 1 bDescriptor Descriptor Type = Endpoint
0680 0x82 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = in2
0681 0x02 3 bmAttributes XFR Type = LUZEM
0682 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0683 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0684 0x01 6 bInterval Polling Interval w milisekundach

0685 0x07 0 bLength Długość tego Endpoint Descriptor
0686 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0687 0x83 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN3
0688 0x02 3 bmAttributes XFR Type = LUZEM
0689 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
068A 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
068B 0x01 6 bInterval Polling Interval w milisekundach

068C 0x07 0 bLength Długość tego Endpoint Descriptor
068D 0x05 Typ 1 bDescriptor Descriptor Type = Endpoint
068E 0x84 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN4
068F 0x02 3 bmAttributes XFR Type = LUZEM
0690 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0691 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0692 0x01 6 bInterval Polling Interval w milisekundach

0693 0x07 0 bLength Długość tego Endpoint Descriptor
0694 0x05 1 bDescriptor Rodzaj Descriptor Type = Endpoint
0695 0x85 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN5
0696 0x02 3 bmAttributes XFR Type = LUZEM
0697 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
0698 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
0699 0x01 6 bInterval Polling Interval w milisekundach

069A 0x07 0 bLength Długość tego Endpoint Descriptor
069B 0x05 1 bDescriptor Typ Descriptor Type = Endpoint
069C 0x86 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN6
069D 0x02 3 bmAttributes XFR Type = LUZEM
069E 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
069F 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
06A0 0x01 6 bInterval Polling Interval w milisekundach

06A1 0x07 0 bLength Długość tego Endpoint Descriptor
06A2 0x05 Typ 1 bDescriptor Descriptor Type = Endpoint
06A3 0x87 2 bEndpointAddress Endpoint Kierunek (1 W) i adres = IN7
06A4 0x02 3 bmAttributes XFR Type = LUZEM
06A5 0x40 4 wMaxPacketSize (L) Maksymalna Packet Size = 64 bajtów
06A6 0x00 5 wMaxPacketSize (H) Maksymalna Packet Size - High
06A7 0x01 6 bInterval Polling Interval w milisekundach

który jest następnie przez unicode formie zero zakończony string
"Microchip Technology ICD2 USB Device"



Jednakże, jeśli masz problem z 4550 bin mogę spróbować pomóc dodając komentarze w asm CY pliku.
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 03 kwietnia 2006 17:10 Re: Projekt zastąpić CY7C64613 w ICD2
tagi: icd2.dll

Silvio Hi,

dzięki za informacje, dawno temu miałem na parsowanie bin pochodzących z eprom chip. I nawet nie nie procesor typu ani układu. Ale musiała znaleźć sposób zajmuje się karta pamięci, a jego dane.
I założyć, it's a 8051 rodzaju chip i próbował wiele disassemblers, a zakończył się z 80C542 (i cant remember których jedno było dokładnie) wyobraziłem go z portu, jak i numery kodu dotyczy pojedynczego portu szpilki.
Ale minęło 2 tygodnie dzień i noc pracy Neutralne dla mnie dużo czytania / debugowania / uczenia się.
That's why I wanted to assembler, co jest zdolne do rzeczy wymienione zamiast mnie ... Very Happy
Jeszcze raz dziękujemy Silvio.

-----------------------------

Iam zaczyna wierzyć wszystkie, według bin plików. Zrobiłem badawczej w ICD2 dll i okazało się, że zwraca GETUSBDESCRIPTOR i liczby kontroli w Hasło i jeżeli mecze nowszą wersję ICD2 niż podpisany w 4550 w mojej Hasło niż robi send4550image zadzwonić!
A także nie są w deskryptorów plików bin identyczny z Kripton upload.
Jedna rzecz nie rozumiem dlaczego to one dostarczane boot image?
A dlaczego ICD2.dll próbuje pobrać ten plik? Jeśli domu, I'll try ustawić moje deskryptorów dopasować jednej znalazłem w bin i postara MPLAB na jej temat.

Myślę, że jesteśmy coraz bliżej! Chłodny

Dodano po 46 minut:

I tu jest coś magicznego w pierwszym btyes do rozruchu bin: MCHP (Microchip?)
I've szukałeś to, czy to później (po obciążeniu) zastępuje te z realnego punktu GOTO lub st., ale w ICD2.dll nie.

Dodano po 3 godziny 34 minut:

Spójrz na to:

Zrobiłem to, co powiedziałem wcześniej, wystarczy ustawić numer wersji na nowszą oczekuje MPLAB i próbuje wysłać OS! (Oczywiście mój fw nie jest boot loader)

Kod:

MPLAB ICD 2 Ready
Łączenie MPLAB ICD 2
ICD0289: Nie można ponownie program ICD2 USB OS firmware.
ICD0021: Nie można połączyć się z MPLAB ICD 2
MPLAB ICD 2 Ready


Jakoś boot loader powinien działać, I'll spróbować zrobić coś w nocy.
Powrót do góry
narccizzo



Dołączył: 20 stycznia 2006
Posts: 173
Dzięki: 4
Lokalizacja: PATZCUARO, Michoacán, Meksyk


Post 03 kwietnia 2006 18:43 Projekt zastąpi CY7C64613 w ICD2

Hi JaySlovak
No, Im not sure I tylko otworzył bin i zapisać go w formacie szesnastkowym. Smutny
Powrót do góry
Jay.slovak



Dołączył: 23 marca 2006
Posts: 11


Post 03 kwietnia 2006 20:45 Re: Projekt zastąpić CY7C64613 w ICD2

narccizzo napisał:
Hi JaySlovak
No, Im not sure I tylko otworzył bin i zapisać go w formacie szesnastkowym. Smutny


Tak, to jest dziwne jak ciąg jest czytelne, tylko kod nie robi nic Smutny
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 03 kwietnia 2006 22:25 Re: Projekt zastąpi CY7C64613 w ICD2
tagi: icd2.dll

Dobre wieści po 2 godziny debugowania,

ICD2.dll nie używać obu bin plików. OS plik chce być pobierane tylko z ICD2s nowego produktu numer seryjny.
Ale kiedy modyfikować wersji id w pliku do OS.bin * _FFFF.bin niż zaczyna sprawdzić wersję bootloadera wygląd:

Kod:

Łączenie MPLAB ICD 2
ICDWarn0062: USB Boot firmware z ICD2 jest aktywna i zapewnienie łączności z ICD2. To oprogramowanie jest nieaktualne i powinny zostać uaktualnione. Nie może być aktualizowany w trakcie aktywnego. Jednakże, może nadal działać z aktualnym uruchamiania oprogramowania jeśli zdecydujesz się zrobić. Czy chcesz kontynuować?


Jeśli TAK naciśnij tutaj niż próbuje połączyć się ICD2 się i zamarza (Mam tylko zainstalowane jeszcze 4550).
Jeśli naciśniesz Nie, niż wydaje się próba jego aktualizacji ale musimy tutaj bootloader podobny do tego, aby ten komunikat:

Kod:

ICD0288: Nie można ponownie program ICD2 USB Boot firmware.
ICD0021: Nie można połączyć się z MPLAB ICD 2
MPLAB ICD 2 Ready


Dobra chłopaki, myśleć myśleć myśleć Jak można używać tego bin dostać pracy bootloadera w 4550!

Dodano po 2 minuty:

I zestawił także próbki bootloadera z poprawnym VID / PID ale dostał takie same wyniki jak w mojej 4550.

Dodano po 16 minut:

Może być, że nie możemy dostać początkowej początkowy początkowy:) część bootloader który ładuje pierwszy bootloadera który ładuje os ...

Dodano po 5 minut:

Jest to czas, kiedy rkodaira należy zrzucić jego 4550 na poziomie 0 bootloadera. (z dużą nadzieję, że nie jest chroniony ...)

Rkodaira WE NEED YOU Uśmiechać się
Powrót do góry
albert22



Dołączył: 20 lipca 2004
Posts: 95
Dzięki: 3


Post 03 kwietnia 2006 22:46 Re: Projekt zastąpi CY7C64613 w ICD2

I zostały analizy wydruk, że muszę się ze mną w BL010101. i znaleźć kilka rzeczy.
Wygląda na to, aby zaakceptować 5 komend pochodzących zarówno z PSP lub USART.
0x55 wykonywanie kodu zaczynając od 0x0010.
0x56 Załaduj hex (ten wydaje się mieć więcej subcommands)
0x5a wysyła dane 0x01 0x01 0x03 (wersja z BL??)
Dwa inne polecenia tylko włączyć błędów i Zajęty LED i zawiesza się w inffinite pętli.

Następujące procedury są podobne do tego, co nazwałem "Załaduj hex" polecenia:

W innym rutynowe w BL wysyła następujący ciąg 0x5b "0810C9", 0x5d
Inne wysyła odpowiedzi osadzone w następujący ciąg 0x5b "0A000", U, 0x31, U, 0x5d. (U, gdzie wydaje się być 0x31, 0x34, 0x36 oraz 0x37).

I didnt mają dużo czasu, aby przejść do analizy. I nie widział USB monitorowania, które zostały opublikowane, ponieważ Im w cyberprzestrzeni. Ale myślę, że te dane powinny być pakowane w komunikacji USB
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 03 kwietnia 2006 23:30 Projekt zastąpi CY7C64613 w ICD2

Albert,

Sprawdziłem szeregowy comm porównaniu USB, USB używa opakowujący koryta szeregowy rzeczy.
Wydaje się go używa EP1 do kontroli portu (to OUT i IN) i EP2 danych portu, tylko w (ICD-> PC).
Powrót do góry
albert22



Dołączył: 20 lipca 2004
Posts: 95
Dzięki: 3


Post 05 kwietnia 2006 6:39 Re: Projekt zastąpi CY7C64613 w ICD2

Oto moje zaliczek z BL
Nie było takich subcommands. Obciążenie hex polecenia tylko przybiera hex rekordy i zapisuje dane do pamięci programu 2 bajtów na raz. Sprawdzane są różne błędy w tym zakresie adresu. Ap. unikanie w BL programu. Potwierdza to, że BL jest allways zamieszkałych na 877.
W [0A000 ", U, 0x31, U]. (2 U jest pierwszym U 1) jest mało prawdopodobne, aby być postrzegane jest to raport o błędach. Błędy to: zły format checksum, zły adres i zakres EEPROM pisać błąd .
Rutynowe czeka 16 znaków poczynając od 0x3c ('<') a kończą 0x3e ('>'). 16 znaków tego nagłówka zawierają adres, długości i sumy kontrolnej dla danych, które mają być zapisane w kodzie ASCII.
Jeżeli nagłówek jest poprawny Ap. BL w odpowiedzi na "[0810C9]"
Dane cames po 0x7b
Format ten wydaje się być różny od Intel hex format.

Zedman.
Mogą być uznane jest coś takiego w RS232
Jutro I Wil być moim domem i możliwość zainstalowania HDD, aby sprawdzić dzienniki i sprawdź, czy mogę mieć jakąkolwiek pomoc.
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 05 kwietnia 2006 12:17 Re: Projekt zastąpić CY7C64613 w ICD2
tagi: MPLAB protokołu icd2 icd2.dll icd2w2k.sys mplbcomm.dll

I am stuck z USB rzeczy. I am sad.

Naprawdę nie wiem, co robić dalej. Spędziłem wiele czasu na debugowanie icd2.dll.

Problem jest następujący: nie mogę wysłać nawet jeden bajt do MPLAB.

Będę objaśniał, co znalazłem do dziś, choć nikt naprawdę interesuje (tylko chcesz pobrać gotowego rzeczą). (Wyjątek: Albert, Kripton, rkodaira, silvio i faceci w tym wątku)

Więc, komunikuje się z MPLAB ICD2 ten sposób:

[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 urządzenia]

Jeśli wybierzesz typ połączenia USB, to zwróci się do urządzenia Hasło z ICD2 i kontrole dotyczące wersji produktu słowa, jeśli jest to 0x0003 niż jest to w oparciu Cypress ICD2, jeśli jest to 0x0010 niż jest to 4550 oparte jeden. Jeśli 0x0010 znaleźć niż mówi What I've Been wysłana przed tym OS w ICD2 muszą być zmodernizowane. To ciekawe, że jeśli wersja (0100) w pliku z OS.bin jest zmodyfikowane do FFFF niż pomija ten krok i kontroli bootloadera wersji. Tutaj miałem do poprawki ICD2.dll aby go wypróbować, aby sprawdzić wersję pliku BL.bin Także to, że nawet hardcoded jest ustawiana FFFF wont to próby uaktualnienia, that's why I to poprawione (zestaw hardcoded FFFF obniżyć), tak teraz mówi, co mam przed zbyt mentoined: w bl wersja jest zbyt stara, ale nie może być zaktualizowany podczas aktywnej.

Ok. Zrobiłem małą prog z próbki bootloadera, z poprawnym deskryptorów i próbuje komunikować się z MPLAB aby odszyfrować protokół i emulowania BL w nowym 4550 ICD2.
ICD2 że Kripton zastosowań (cyprysa wersji) ustala 7 OUT / IN punktów, ale zgodnie z dzienników korzysta tylko EP1 do IN / OUT oraz w EP2. (OUT pomocą PC-> Urządzenia)
Wydaje się to wysyła usb konkretnych komend i danych poprzez EP1, a powrót na EP1, i wysyła bajty readed z ICD2's 877 poprzez oddzielny punkt końcowy EP2 cala

Gdy próbuje wysłać MPLAB th OS.bin uaktualnić FW os wydania getUSBdescriptor wezwanie do jądra sterownik i wysyła a 0x12 bajtów polecenia za pomocą polecenia DeviceIoControl. I debugowane, przylatuje pomyślnie do 4550.
MPLAB niż wydaje GetStatus połączenie, i wydaje się z parametrami wywołania że oczekuje 0x08 bajtów danych wstecz.
Mogę skonfigurować moje bufora z 8 bajtów, a zestaw własności do SIE. Ale nigdy nie wysyła że 8 bajtowych powrót (nie pojawiają się w USBMon). Po prostu czekać.
Nie może być wiele rzeczy.
Może zrobić st. problem z konfiguracją 4550, ale próbował go innym progs i działa, można wysłać z powrotem bajtów.
Wiem przyjmującego musi wysyłać i komendanta aby urządzenie wysyła w to, co chce.
Ale kiedy debugowane MBLBCOMM, widziałem, że komenda nie DeviceIoControl!
I że być może niektóre tought wywiadu został zbudowany w. Plików sys i odrzuca pakiet z powodu złego jej zawartości, ale myślę, że powinien on być wyższy poziom zadania.
When I get home I'll sprawdzić GetLastError wartości.


Ktoś ma jakiś pomysł jak mogę sprawdzić, czy nie było w pakiecie wysłane, lub w jaki sposób mogę wykonywać?
Powrót do góry
Kripton2035



Dołączył: 19 lipca 2001
Posts: 482
Dzięki: 15
Lokalizacja: Earth


Post 05 kwietnia 2006 16:59 Projekt zastąpi CY7C64613 w ICD2

może należy podłączyć do 877 PSP z portu 4550, aby sprawdzić, co czeka nas w drodze, a program 877 z bootloadera mamy? może być bytes you're oczekujących pochodzą z EP2 i tak 877?

Czy chcesz mi wysłać kolejny plik o sprecyzowanym stanie? by the way to na pewno potrzebny jest rokaida log z jego 4550 icd2 ..

PS: Nie jestem zainteresowany w tym projekcie .. Uśmiechać się Jestem tylko ciekaw! Mam już USB icd2! Uśmiechać się
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 05 kwietnia 2006 20:08 Projekt zastąpi CY7C64613 w ICD2

Dzięki Kripton,

I'll zawsze muszę więcej dump Uśmiechać się , Jest to nieco bardziej skomplikowane niż tylko przejazdem bajty do 877 iz powrotem, to protokół wrapper na jej temat.
Co powiedział pan był bardzo przydatne, ale rkodeira wont sacrify jego nowego ICD2 ... Uśmiechać się Jeśli chciał, niż z zrzucić jego aktualizacji OS proces określenia protokołu dobrze ...
Powrót do góry
Kripton2035



Dołączył: 19 lipca 2001
Posts: 482
Dzięki: 15
Lokalizacja: Earth


Post 05 kwietnia 2006 22:09 Projekt zastąpi CY7C64613 w ICD2

Well I dont think musi sacrify jego icd2! tylko niektóre z wysypisk usbmon jak zrobiłem .. nadzieję, że moje icd2 nadal działa!
Powrót do góry
albert22



Dołączył: 20 lipca 2004
Posts: 95
Dzięki: 3


Post 05 kwietnia 2006 22:16 Re: Projekt zastąpi CY7C64613 w ICD2
tagi: icd2 polecenie obciążenia hex

Nie mogę zainstalować HHD monitora, aby zobaczyć logi bo tylko w98 w domu.
Czy można wyeksportować zrzutu systemu operacyjnego, aby pobrać plik. Txt, dla mnie?
-------
Jak CY zresetowanie 877?
Nie ma sygnału (pin 43) do podstawy Q1 Collector których jest MCLR. Ale to idzie do łącznika zwanego PROG. I teraz sobie sprawę, że ten sygnał powinien udać się do 877 za.
Chcielibyśmy wiedzieć, jakie potrzeby USB polecenie resetuje 877. Może być to jeden z punktów kontrolnych?
I dont know what to funkcja tego PROG złącza. dodatkowych punktów końcowych, ale może być z nim związanych.
----------
Jednym z OS załadowany do ICD2 wydaje się być: ICD01020405.hex Mam disassemby chciał, ale nie mogę uzyskać Disassembler zastąpić hex adresów z nazwą rejestrów. Będzie miał więcej czasu, aby dowiedzieć się jak to działa.
Ciekawostką jest, że kod rozpoczyna się od 0x0010. Pamiętaj, że ten adres BL połączeń z wykonania polecenia.

W BL wersji przez MPLAB jest 01.01.01.00 tym idzie dość dobrze z BL polecenia, które odpowiedzi 01,01,01,03
---------
Nie ma DPot (MCP41xxxx) w brazylijskim ICD. Jak ustawić Vpp?
Większość z klonów posiadają stałe Vpp. Czy to oznacza, że brazylijski ICD jest niski koszt, a nie klon ICD2 nowego? I dont pomyśleć, że mikroczipowego poszedł na czas Vpp. Jeżeli istnieje inna metoda kontrolowania Vpp, innych niż DPot musiałaby firmware zmian w ICD OS. Starego systemu operacyjnego nie będzie pracować w nowej. To może być przyczyną, że biblioteka DLL jest sprawdzenie wersji.
Powrót do góry
Zedman



Dołączył: 13 października 2003
Posts: 294
Dzięki: 2


Post 05 kwietnia 2006 22:32 Projekt zastąpi CY7C64613 w ICD2
tagi: MPLAB protokołu icd2 icd2w2k.sys icd2w2k pobrać 4550 bootloadera napisać icd2w2k.sys Download Download icd2w2k

Nie sądzę, że powinniśmy zajmować się coś dotyczące układu lub protokołu lub połączenie między 877 i 4550 jeszcze. Myślę, że musimy ALL jest napisane w 4550 pojemników dostarczany z MPLAB.
Należy napisać bootloadera zgodny z icd2w2k.sys aby uzyskać OS.bin pobrany, a po tym możemy scracth naszymi głowami, jak 877 jest podłączony.

Dodano po 5 minut:

W ICD2br używa innego rodzaju chip który generuje Vpp. Rkodaira mentoined, sprawdź przed stanowisk.
Powrót do góry
silvio



Dołączył: 31 grudnia 2001
Posts: 800
Dzięki: 90


Post 06 kwietnia 2006 2:36 Re: Projekt zastąpi CY7C64613 w ICD2
tags: icd2w2k.sys icd2w2k download 4550 bootloader write icd2w2k.sys download download icd2w2k

Zedman wrote:

We should write a bootloader compatible with the icd2w2k.sys to get the OS.bin downloaded.


Yes, this is the main reason for which I said that dissasembling CY fw it's useless as long as we have the OS and BL bin file provided by Microchip. To start coding from scratch for 4550 and simulate the CY fw would be time consuming and worthless.
That's I appreciate zedman's efforts.

However sometimes I can't help myself to ask this stupid question : If the BL cannot be upgraded while it's active, what was Microchip's ICD2 designers approach for upgrade ? In parallel programmer before soldering 4550 ? Or through ICSP with a clean bin image downloaded after boot block erased ?
If rkodaira will find that CPB and EBTRB bits are cleared Crying or Very sad , then how can OS.bin be loaded in 4550 ? I start asking like you : why did they supplied the boot image ?
Or, as Jay.slovak said "the string is readable, just the code does nothing" because it's encrypted and makes sense only for original boot code.
So, the only solution is to simulate the 4550's bootloader and get the mirror bin image of OS ?
Back to top
albert22



Joined: 20 Jul 2004
Posts: 95
Helped: 3


Post 06 Apr 2006 4:36 Re: Project to replace CY7C64613 in the ICD2
tags: mplab protocol icd2

Quote:
In ICD2br uses another kind of chip which generates the Vpp. Rkodaira mentoined, check the posts before.

I didnt mean the MIC2175, which is a switching regulator as the MC34063. I was aiming at the DPOT and specifically to its I2C interfase because it requires the support of the firmware in the 877 to set the correct Vpp voltage. As I said before if the new ICD2 relies in other component to change the Vdd, all the firmware needs to change.

May be Rkodaira could check ithe circuit associated with pin 3 (FB) of the MIC2172 to see if vpp can be controlled or it is fixed.

Let me make my statement a little clear. If the Brazilian ICD has no control of Vpp it is highly probable that it is just a clone. In that case there is no warranty that the real new ICD2 is based on a 4550 and a 877. It could be just a 4450 alone for example (why not) in that case the following statement would not be true.
Quote:
I think ALL we need is written in the 4550 bins supplied with MPLAB.

As we dont know for sure the arquitecture of the new ICD we need to emulate the CY. However chances are that the 4550BINs will still be usefull to solve the USB protocol. I tried to disassemble it today but found nothing coherent yet.

To the question:
Quote:
why did they supplied the boot image ?

They supplied the BL010101.hex which needs to be programmed at the factory for the ICD to work.[/quote]
Back to top
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


Post 06 Apr 2006 11:48 Re: Project to replace CY7C64613 in the ICD2
tags: icd2 load hex command

Silvio,

the BL cannot be upgraded thing was a little trick. Actually MPLAB is set to check the BL's version against 0xFFFF, and if 0xFFFF (it's only a word) is lower than it will try to upgrade the bootloader. So it wont ever get here, because larger number than 0xFFFF cannot be set on a word. So I patched it to skip this test and try to do it, but anyway it's a BUILT IN function in MPLAB! It CAN update the boot image too. I just patched the version check out.
But think: it's not accidentaly set to 0xFFFF, they may not want to use this function yet.
According to the OS.bin file, if the product version is 0x0010 than it's downloaded all the time. Maybe 0x0010 is the BL's version only, and set to lower when OS will run in it! The OS.bin's version is also checked against 0xFFFF. If it's equals to 0xFFFF it's starts the checking for the BOOT.bin file as I mentoined above.

I'll check how it handles the active check when it complains about "it cannot be upgraded while active".

Another strange thing is if the original bootloader handles the decryption of the OS.bin image, than it will be a nice thing to clone... Anyway there is no processing on the .bin files in the software as I saw.

the DeviceIOControl command returns 0x57: The parameter is incorrect. (ERROR_INVALID_PARAMETER)

If we get the OS.bin downloaded than we can read it back with another icd2 and see how it works.

Albert,

they wont change the 877 firmware. They have a lot of hexs supplied with MPLAB should work with both versions. They may do minor changes, but thats all.
Sorry I misunderstood that DPOT thing.
The question "Why they supplied the boot image?" I asked was for the 4550_boot.bin file.
Back to top
rkodaira



Joined: 08 Jun 2004
Posts: 332
Helped: 54
Location: Sao Paulo - Brasil


Post 06 Apr 2006 14:19 Re: Project to replace CY7C64613 in the ICD2

Hi guys !

Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.

About the Vpp control, I think that there is only the high voltage generator for Vpp and there is another way to control this voltage. I don´t know if the DG411 has this role, and there is a power mosfet also in the circuit.

I don´t think my clone is the new ICD2 from Microchip. I suppose the local manufacturer only made a clone using more available parts and making some changes in the firmware to adequate the new parts. Sorry I cannot make any attempt to read the 18F4550 contents.

Added after 15 minutes:

One more thing:

I tried to build the PICKIT2 programmer (onlu the basic part: the PIC, crystal and some connections) some weeks ago. It has the schematic and "all" the software available for download in the Microchip pages. I bought some 18F2550 and programmed with the firmware provided. I installed the programmer software and connected the hardware to the USB port. The PC recognized it once but the software did not. I think that there is something missing in the package, that blocks the programmer to communicate with the software. Could be the same case be happening with the hex files provided for the ICD2 ? Or in other words: Microchip does´t provide the complete code for the ICD2.
Back to top
albert22



Joined: 20 Jul 2004
Posts: 95
Helped: 3


Post 06 Apr 2006 18:26 Re: Project to replace CY7C64613 in the ICD2

Please
Can somebody export to .txt the USB log files captured by HDD monitor?
I cannot install this soft at my home. Otherwise Ill have to wait until next week to read them on my PC at work. I am now studying the protocol between the CY and the 877 OS.
If they are too big. A connect log, and a program log would be nice.
Thanks
Back to top
Kripton2035



Joined: 19 Jul 2001
Posts: 482
Helped: 15
Location: Earth


Post 06 Apr 2006 19:31 Re: Project to replace CY7C64613 in the ICD2

rkodaira wrote:
Hi guys !
Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.


may be you can try this one : they say it works under w98...
http://www.perisoft.net/bushound/

zedman needs a log of a real 4550... my cypress clone doesnt give all he needs...
Back to top
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


Post 06 Apr 2006 20:14 Project to replace CY7C64613 in the ICD2

It can be exported from USBMon to HTML format, but I have only serial ICD2.
Back to top
Brem



Joined: 06 Apr 2006
Posts: 36


Post 06 Apr 2006 20:22 Re: Project to replace CY7C64613 in the ICD2
tags: mplab protocol icd2 icd2 load hex command

Hi group,

Zedman drew my attention to this thread. I find it very interesting.

Last winter my hobby project was to build an ICD clone on a 2455/2550. I used the CDC firmware for RS232 emulation to connect to MPLAB. I disassambled the 877 firmware and made it more readable with a VB program. As far as I can tell the protocol CY<->877 and the protocol RS232<->877 are the same. There are no USB specific things in the 877 firmware.

I'll try to explain what I learned of the protocol.

MPLAB starts a connection by sending a 'Z'. ICD should reply with some kind of version nr in binary: 0x01,0x01,0x03.

Now MPLAB sends a
'V' if it wants to connect to the bootloader, ICD should reply with a 'v'
'U' if it wants to connect to the OS, ICD should reply 'u'

Next is the version of the ICD hardware, this has to be compatible with the old ICD1, so its different from all other commands: MPLAB send '$7F00\r', ICD replies '02' for ICD2

From here on all commands are send in packets in the form: '<', packet len, command, [params], checksum, '>'
all items are sent in hex, packet length is including the <>. An example: '<0801C9>', len=8, cmd=1 (GETFIRMWAREVERSION), no params, checksum=0xC9

Reply's to commands are in the same form, except packed in []. Reply to the above example would be: '[0E0102630102]', len=14, cmd=1 (GETFIRMWAREVERSION), param 2.99.1, checksum=0x02.

Large chunks of data are sent in {} packets : {data [,data..], checksum}. For example the write program command:
MPLAB: <184300005DC000000120FF>, len 24, cmd=0x43 (WRITEPROGRAM), program size= 0x05DC, start address=0x0120, checksum = 0xFF
ICD: [0843CF], len 8, cmd 0x43, checksum 0xCF
MPLAB: {FF3FFF3F.....3C} , data data data.., checksum-0x3C
ICD: [0843CF], ack cmd 0x43 again



I used the information from this thread to connect my existing program with the real ICD USB Driver. I got so far that I receive the GETFIRMWAREVERSION command, but my response seems not to be understood. It sends the same command again and then hangs (?) .
Back to top
albert22



Joined: 20 Jul 2004
Posts: 95
Helped: 3


Post 06 Apr 2006 23:17 Re: Project to replace CY7C64613 in the ICD2

Quote:
It can be exported from USBMon to HTML format, but I have only serial ICD2.

Zedman may be you can open the log files that had been posted here and export them to html. No need to have the USB ICD2.

Brem,
Great. I was just at the routines that handle connection with the ICD once the OS is loaded. Thanks.
Back to top
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


Post 06 Apr 2006 23:29 Re: Project to replace CY7C64613 in the ICD2
tags: mplbcomm.dll

Hey Brem!

nice to see you here!
Thanks for the infos on the protocol.

Quote:

I used the information from this thread to connect my existing program with the real ICD USB Driver. I got so far that I receive the GETFIRMWAREVERSION command, but my response seems not to be understood. It sends the same command again and then hangs (?) .



would you please explain this a bit more? What's that mean you response is not understood? You got an usb packet starting with 0x01, replied it succesfully and just the content was wrong?

Please explain this, because as you can see from the thread Iam stuck with the replying. Crying or Very sad

-------------------

Iam now trying an alternate way to **** with the replying thing, I wrote a small program in Delphi to test if the reply works, getting the same results yet but it's faster than switching the programmer in mplab while using it too.

here is the proc (values got from disassembled/debugged MPLBCOMM.dll):
Code:

procedure TForm1.Button1Click(Sender: TObject);
var hnd: cardinal;
InBuffer: array[0..3] of byte;
OutBuffer: array[0..17] of byte;
bytesReturned: cardinal;
a: integer;
begin
hnd:=CreateFile('\\.\i3kmc-0', $C0000000, 2, 0, 3, 0, 0);

if hnd <> INVALID_HANDLE_VALUE then
begin
// get usb descriptor
for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0;
if (DeviceIoControl(hnd, $0A4122404, @InBuffer, 4, @OutBuffer, $12, bytesReturned, nil)) then
begin
Memo1.Lines.Add('1 OK');
end;

// write command
for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0;
OutBuffer[0]:=3;
if (DeviceIoControl(hnd, $0A4122451, @InBuffer, 4, @OutBuffer, $12, bytesReturned, nil)) then
begin
Memo1.Lines.Add('2 OK');
end;

// get status
for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0;
InBuffer[0]:=7;
if (DeviceIoControl(hnd, $0A412244E, @InBuffer, 4, @OutBuffer, 0, bytesReturned, nil)) then
begin
Memo1.Lines.Add('3 OK');
end;
Memo1.Lines.Add('- done.');
end;
end;



the 3rd DeviceIOControl returns failed.

I can't even remeber how my wife look like... Neutral
Back to top
Brem



Joined: 06 Apr 2006
Posts: 36


Post 07 Apr 2006 0:31 Re: Project to replace CY7C64613 in the ICD2

Hi Zedman,

Besides some recognizable data like the 'Z', the 'U' and <0801C9>, I receive packets I don't understand. They are all 18 bytes long, 1st char is 0x00,0x01 or 0x02, 2nd char seems to be some kind of seq.nr, 3rd byte a length.

First packet received is:
HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
I reply with 8 x 0
DEV->HOST: 00 00 00 00 00 00 00 00 00
Second packet received is:
HOST->DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00
Here the first byte 0x01 seems to mean "data incoming", 3rd bytes undicates length. I dont send reply on this packet.
Next rcvd is a singe 'Z', I reply with the hardware version
HOST->DEV: 5A
DEV->HOST: 01 01 03
Next again a packet starting with 0x02, same reply
HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
DEV->HOST: 00 00 00 00 00 00 00 00 00
then a "data incoming" packet folowed by a 'U', connect to OS
HOST-DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00
HOST-DEV: 55
Now MPLAB seems to want 8 bytes so I send a 'u' with 7 zeros
DEV->HOST: 75 00 00 00 00 00 00 00

Now comes the tricky part. A packet starting with 0x02 means MPLAB wants data on EP2.
HOST-DEV: 02 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
DEV-HOST (on EP2!!): 75
DEV-HOST (on EP1): 00 00 00 00 00 00 00 00

And here I get stuck at the moment. MPLAB sends a <0801C9> but my response is ignored. I think from here on the ICD should send all data over EP2.
Back to top
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


Post 07 Apr 2006 10:51 Project to replace CY7C64613 in the ICD2

Brem,

Iam a lamer. PLEASE TELL ME how do you reply?
How the hell does it work for you?
What am I missing?
If I set up the shared ram with 0s set the Cnt to 8 and set UOWN bit to SIE, MPLAB wont send me ANY more data, and UOWN never get cleared!!
But from this I see u managed it to work!!!

HELP ME PLEASE!

Code:

HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
I reply with 8 x 0
DEV->HOST: 00 00 00 00 00 00 00 00 00
Back to top
Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrollers -> Project to replace CY7C64613 in the ICD2
Page 3 of 61 All times are GMT 2 Hours
Goto page Previous 1 , 2 , 3 , 4 ... 59 , 60 , 61 Next
Jump to page:


Abuse || Administrator || Moderators || Support us || sitemap
topic RSS