| Autor | Mesaj |
|---|
Kripton2035
Alăturat: 19 iulie 2001 Posts: 497 A ajutat: 16 Location: Earth
| 03 aprilie 2006 8:28 Re: de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| | predrage a scris: | Prietenii mei i nu a avut succes în programare ICD2_4550_BOOT_0180.BIN în 4550. I'v a încercat să deschidă bin fișier cu winpic 800 de software, dar nu a reușit. Am tryed pentru a deschide o cu optiunea "all files" în "tipuri de fișiere", pentru că nu există nici un sprijin direct pentru bin fișiere. ICprog au ca suport (pentru a deschide fișiere bin), dar nu poate programul 4550. De fapt, nu există nici un dispozitiv de listă în 4550. Ce trebuie să fac în continuare? Orice sugestii? Sunt doar un începător, dar am bun pentru a va ajuta. Îmi pare rău mea de rău engleză. |
redenumiți. BIN sa. HEX winpic și se va deschide-o! uneori o mulțime de fișiere sunt. BIN, în realitate, sunt Intel. hex! pentru a fi sigur, deschide fișierul cu notepad, în cazul în care conține liniile care încep cu ":" atunci pentru a redenumi. hex și să-l deschideți cu winpic .. în cazul în care acesta este de gunoi, apoi un bin2hex trebuie să fie utilizat pentru a deschide. |
|
| Back to top | |
 |
narccizzo
Alăturat: 20 ianuarie 2006 Posts: 173 A ajutat: 4 Locatie: PATZCUARO, Michoacán, Mexic
| 03 aprilie 2006 9:42 Re: de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Acestea sunt cele două fișiere bin convertite în hex, am deschis bin fișiere cu ic-prog software apoi i salva fișiere în format hex, dacă aruncăm o privire la aceste fișiere, puteți vedea un șir de citit "microcip Tecnology ICD2 USB Device icd2 USB" la adresa 0x0ee7 pentru boot.hex fișier și același șir în 0x0b8e pentru os.hex fișier, i dont avea un disassembler de a explora mai în detaliu acest fișiere, dar ceva mi-a spus că aceste două fișiere sunt toate de care avem nevoie.
BR Narccizzo
|
|
| Back to top | |
 |
Jay.slovak
Alăturat: 23 martie 2006 Posts: 11
| 03 aprilie 2006 11:17 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| | narccizzo a scris: | Acestea sunt cele două fișiere bin convertite în hex, am deschis bin fișiere cu ic-prog software apoi i salva fișiere în format hex, dacă aruncăm o privire la aceste fișiere, puteți vedea un șir de citit "microcip Tecnology ICD2 USB Device icd2 USB" la adresa 0x0ee7 pentru boot.hex fișier și același șir în 0x0b8e pentru os.hex fișier, i dont avea un disassembler de a explora mai în detaliu acest fișiere, dar ceva mi-a spus că aceste două fișiere sunt toate de care avem nevoie.
BR Narccizzo |
Esti sigur ca au convertit de fișiere corect? Dacă am de import-le în MPLAB, codul nu are sens, tot ce nu se intampla doar prin programul de memorie și de a face NOPs. Nimic nu se întâmplă în util atât de încărcare și sisteme de operare HEXs. Chiar și biții de configurare sunt diferite în cele două imagini! |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 03 aprilie 2006 11:19 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Albert,
kernel driver (e) se așteaptă, de chiparos va conecta la un alt vid / PID când firt conectat, și după Incarcator sys descărcări este Fw va reconecta ca un alt vid / PID așa de altă sys vorbește cu ea. Avem de a pune în aplicare numai în cea de-a doua. Iam @ lucru deci nu pot face nimic aici aștepta greu thinkin ' ... |
|
| Back to top | |
 |
Silvio
Alăturat: 31 decembrie 2001 Posts: 800 A ajutat: 90
| 03 aprilie 2006 11:31 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: mplab protocol icd2 chiparos disassembler disassembler chiparos |
|
| Max Zedman,
it's a must to understand what's under cover. În ceea ce privește CY hex fișier nu este doar o chestiune de bun disassembler care știe de chiparos chip, dar lectură de 436 de pagini EZ-USB FX este o TechRefManual trebuie să înțeleagă ce-i sub acoperirea. Și nu cred că te-am timp pentru asta. Cu toate acestea, dacă nu sunteți familiarizați cu 8051 opcodes, analiza de cod va dura ceva timp. (Știu că sunteți familar cu cele PIC) with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Nu pot înlocui toate apariția MOV DPTR, # LXXXX corespunzătoare cu valori de la CY7C64613 registre 0x7800-0x7FFF dar cu siguranță veți termina de cotitură de pagini de TechRefManual caut definiții. În afară de faptul că unele cum ar fi dificil de a atribui nume de biți, care sunt stabilite clar sau în program atât timp cât acestea nu sunt mapate în spațiul SFR (care se termină în 0 sau 8). with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Este ușor să înlocuiască MOV DPTR, # L7FB4 cu MOV DPTR, # EP0CS dar este greu de spus SETB HSNAK din cauza motivelor de mai sus.
and EP0STAL L which are affected in the bellow code at 0x03E2. Sa luam de exemplu biții HSNAK și EP0STAL L, care sunt afectate de mai jos în codul de la 0x03E2. | Cod: | L03E2: LCALL L0FBE JNC L03EE MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 01h; un fel de SETB EP0STALL MOVX @ DPTR, A L03EE: MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 02h; un fel de SETB HSNAK MOVX @ DPTR, A RET
L0FBE: SETB C RET
|
Ia de exemplu (CP_1.asm) codul linii incepand cu offset 0x0100 (a subroutine numit de la 0x05FA), prima linie de cod folosit immediatelly vector intrerup tabelul de mai jos La RAM 0x7FE9 puteți găsi 2a byte de 8 octeți USB SETUP pachete de date (a se vedea pagina 215 table9-1), sensul bRequest domeniu (a se vedea tabelul 9.2).
| Cod: | L0100: MOV DPTR, # L7FE9 MOVX A, @ DPTR JNZ L0109 LJMP L029B; dacă bRequest = GetStatus Salt la 0x029B L0109: DEC A JNZ L010F LJMP L0317; dacă bRequest = Caracteristicã senin, Salt la 0x0317 L010F: ADD A, # 0FEh JNZ L0116 LJMP L038E; dacă bRequest = Setare Caracteristicã, Salt la 0x038E L0116: ADD A, # 0FBh JNZ L011D LJMP L0295; dacă bRequest = te de configurare, pentru a sări 0x0295 L011D: DEC A JNZ L0123 LJMP L028F; dacă bRequest = Setare Configurare Salt la 0x028F L0123: DEC A JNZ L0129 LJMP L0283; dacă bRequest = te de interfață, Salt la 0x0283 L0129: DEC A JNZ L012F LJMP L0289; dacă bRequest = Setare Interface, Salt la 0x0289 L012F: ADD A, # 05h JZ L0136 LJMP L03E2; dacă bRequest = nici unul dintre cele de mai sus, apoi set de biți HSNAK ; și EP0STALL de EP0CS de control și de statutul de registru și apoi RET la 0x05FD ; L0136: LCALL L0F7A; dacă bRequest = Ia Descriptorul, LCALL 0x0F7A în cazul în care JC L013E; transporta bit este setat în mod implicit, deci Salt la 0x013E LJMP L03EE; dacă duce la 0x0F7A ar fi de 0, în mod implicit, pentru a stabili bit HSNAK ; EP0CS de control și de statutul de registru și RET la 0x05FD ; L013E: MOV DPTR, # L7FEB; aici, pentru că a fost un bRequest Get Descriptorul MOVX A, @ DPTR, astfel verifica WValueH domeniul USB SETUP pachete de ADD A, # 0FEh JZ L015F; dacă wValueH a fost 0x02 Salt la 0x015F DEC A JZ L0190; dacă wValueH a fost 0x03 Salt la 0x0190 ADD A, # 02h JZ L0150; dacă wValueH a fost 0x01 Salt la 0x0150 LJMP L0279; wValueh dacă este diferit de oricare 0x01 sau 0x02 sau 0x03 apoi setați ; biți HSNAK și EP0STALL de EP0CS registru și la RET 0x05FD ; L0150: MOV A, 0Ch; wValueH aici, pentru că a fost 0x01, asa ca sarcină SUDPTR global USB registru MOV DPTR, # L7FD4; cu valoare 0x0C0D, apoi set de biți HSNAK de EP0CS și RET la 0x05FD MOVX @ DPTR, A MOV A, 0Dh MOV DPTR, # L7FD5 MOVX @ DPTR, A LJMP L03EE L015F: MOV DPTR, # L7FEA; uita acum la wValueL domeniul USB SETUP pachete de ; ; ; ; ; și așa mai departe ...................
|
port2: Microchip MPLAB ICD2 Fw client Or, la acest tabel lookup compensate 0x0622 care se potrivesc cu Kripton2035 port2: microcip MPLAB ICD2 Fw client
| Cod: | Tabelul 5-9. Implicit USB Device Descriptorul
RAM Valoarea Offset Câmp Descriere
0622 0x12 0 blength Lungime de acest Descriptorul = 18 octeți 0623 0x01 1 bDescriptorType = Descriptorul Tip Aparat 0624 0x00 2 bcdUSB (L) USB Specification Version 1.10 (L) 0625 0x01 3 bcdUSB (H) USB Specification Version 1.10 (H) 0626 0xFF 4 bDeviceClass Device Class (FF este vendor-specific) 0627 0xFF 5 bDeviceSubClass Aparat Sub-Class (FF este vendor-specific) 0628 0xFF 6 bDeviceProtocol Aparat Protocol (FF este vendor-specific) 0629 0x40 7 bMaxPacketSize0 Dimensiune maximă de pachete pentru EP0 = 64 octeți 062A 0xD8 8 idVendor (L) Vendor ID (L) microcip Tehnologie = 04D8H 062B 0x04 9 idVendor (H) Vendor ID (H) 062C 0x01 10 idProduct (L) Product ID-ul (L) ICD2 = 8001H 062D 0x80 11 idProduct (H) Product ID-ul (H) 062E 0x03 12 bcdDevice (L) Aparat de lansare Numărul (BCD, L) 062F 0x00 13 bcdDevice (H) Aparat de lansare Numărul (BCD, H) 0630 0x00 14 iManufacturer Producator Index String = None 0631 0x00 15 iProduct Product Index String = None 0632 0x00 16 iSerialNumber Număr de serie Index String = None 0633 0x01 17 bNumConfigurations Numărul de Configurațiile în această interfață = 1
Tabelul 5.10. USB configurația implicită Descriptorul
RAM Valoarea Offset Câmp Descriere
0634 0x09 0 blength Lungime de acest Descriptorul = 9 octeți 0635 0x02 1 bDescriptorType Descriptorul Type = Configurare 0636 0x74 2 wTotalLength (L) Lungimea totala (L) Inclusiv Interface și Descriptori final = 116 0637 0x00 3 wTotalLength (H) lungime totală (H) 0638 0x01 4 bNumInterfaces Numărul de Interfețe în această configurație 0639 0x01 5 bConfigurationValue Configurare Valoare folosita de Set_Configuration Cerere pentru a selecta această configurație 063A 0x00 6 iConfiguration Index of String descrie această configurare = None 063B 0x80 7 bmAttributes Atribute - Bus-Powered, nr Wakeup 063C 0x4B 8 MaxPower puterea maximă - 150 mA
Tabelul 5.11. Interfata USB implicit 0, alternativ Setarea 0 Descriptorul
RAM Valoarea Offset Câmp Descriere
063D 0x09 0 blength Lungime a interfeței Descriptorul 063E 0x04 1 bDescriptorType Descriptorul Type = Interface 063F 0x00 2 bInterfaceNumber Zero-bazat Index din acest Interface = 0 0640 0x00 3 bAlternateSetting alternativ Setarea Valoare = 0 0641 0x0E 4 bNumEndpoints Numărul de obiective în această interfață (fără a EPO) = 14 0642 0xFF 5 bInterfaceClass Interface Class = Vendor specifice 0643 0xFF 6 bInterfaceSubClass Interface Sub-clasa = Vendor specifice 0644 0xFF 7 bInterfaceProtocol Interface protocol = Vendor specifice 0645 0x00 8 iInterface Index la String Descriptorul pentru această interfață = None
Tabelul 5.14. Default Interface 0, alternativ Setarea 1, în masă final Descriptori
RAM Valoarea Offset Câmp Descriere
0646 0x07 0 blength Lungime de acest final Descriptorul 0647 0x05 1 bDescriptor Tip Descriptorul Tip = final 0648 0x01 2 bEndpointAddress final Directia (1) și Adresa = OUT1 0649 0x02 3 bmAttributes XFR Tip = vrac 064A 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 064B 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 064C 0x01 6 bInterval Interval de votare în milisecunde
064D 0x07 0 blength Lungime de acest final Descriptorul 064E 0x05 1 bDescriptor Tip Descriptorul Tip = final 064F 0x02 2 bEndpointAddress final Directia (1) și Adresa = OUT2 0650 0x02 3 bmAttributes XFR Tip = vrac 0651 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0652 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0653 0x01 6 bInterval Interval de votare în milisecunde
0654 0x07 0 blength Lungime de acest final Descriptorul 0655 0x05 1 bDescriptor Tip Descriptorul Tip = final 0656 0x03 2 bEndpointAddress final Directia (1) și Adresa = OUT3 0657 0x02 3 bmAttributes XFR Tip = vrac 0658 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0659 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 065A 0x01 6 bInterval Interval de votare în milisecunde
065B 0x07 0 blength Lungime de acest final Descriptorul 065C 0x05 1 bDescriptor Tip Descriptorul Tip = final 065D 0x04 2 bEndpointAddress final Directia (1) și Adresa = OUT4 065E 0x02 3 bmAttributes XFR Tip = vrac 065F 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0660 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0661 0x01 6 bInterval Interval de votare în milisecunde
0662 0x07 0 blength Lungime de acest final Descriptorul 0663 0x05 1 bDescriptor Tip Descriptorul Tip = final 0664 0x05 2 bEndpointAddress final Directia (1) și Adresa = OUT5 0665 0x02 3 bmAttributes XFR Tip = vrac 0666 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0667 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0668 0x01 6 bInterval Interval de votare în milisecunde
0669 0x07 0 blength Lungime de acest final Descriptorul 066A 0x05 1 bDescriptor Tip Descriptorul Tip = final 066B 0x06 2 bEndpointAddress final Directia (1) și Adresa = OUT6 066C 0x02 3 bmAttributes XFR Tip = vrac 066D 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 066E 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 066F 0x01 6 bInterval Interval de votare în milisecunde
0670 0x07 0 blength Lungime de acest final Descriptorul 0671 0x05 1 bDescriptor Tip Descriptorul Tip = final 0672 0x07 2 bEndpointAddress final Directia (1) și Adresa = OUT7 0673 0x02 3 bmAttributes XFR Tip = vrac 0674 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0675 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0676 0x01 6 bInterval Interval de votare în milisecunde
RAM Valoarea Offset Câmp Descriere
0677 0x07 0 blength Lungime de acest final Descriptorul 0678 0x05 1 bDescriptor Tip Descriptorul Tip = final 0679 0x81 2 bEndpointAddress final Directia (1) și Adresa = IN1 067A 0x02 3 bmAttributes XFR Tip = vrac 067B 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 067C 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 067D 0x01 6 bInterval Interval de votare în milisecunde
067E 0x07 0 blength Lungime de acest final Descriptorul 067F 0x05 1 bDescriptor Tip Descriptorul Tip = final 0680 0x82 2 bEndpointAddress final Directia (1) și Adresa = IN2 0681 0x02 3 bmAttributes XFR Tip = vrac 0682 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0683 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0684 0x01 6 bInterval Interval de votare în milisecunde
0685 0x07 0 blength Lungime de acest final Descriptorul 0686 0x05 1 bDescriptor Tip Descriptorul Tip = final 0687 0x83 2 bEndpointAddress final Directia (1) și Adresa = IN3 0688 0x02 3 bmAttributes XFR Tip = vrac 0689 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 068A 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 068B 0x01 6 bInterval Interval de votare în milisecunde
068C 0x07 0 blength Lungime de acest final Descriptorul 068D 0x05 1 bDescriptor Tip Descriptorul Tip = final 068E 0x84 2 bEndpointAddress final Directia (1) și Adresa = IN4 068F 0x02 3 bmAttributes XFR Tip = vrac 0690 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0691 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0692 0x01 6 bInterval Interval de votare în milisecunde
0693 0x07 0 blength Lungime de acest final Descriptorul 0694 0x05 1 bDescriptor Tip Descriptorul Tip = final 0695 0x85 2 bEndpointAddress final Directia (1) și Adresa = IN5 0696 0x02 3 bmAttributes XFR Tip = vrac 0697 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 0698 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 0699 0x01 6 bInterval Interval de votare în milisecunde
069A 0x07 0 blength Lungime de acest final Descriptorul 069B 0x05 1 bDescriptor Tip Descriptorul Tip = final 069C 0x86 2 bEndpointAddress final Directia (1) și Adresa = IN6 069D 0x02 3 bmAttributes XFR Tip = vrac 069E 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 069F 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 06A0 0x01 6 bInterval Interval de votare în milisecunde
06A1 0x07 0 blength Lungime de acest final Descriptorul 06A2 0x05 1 bDescriptor Tip Descriptorul Tip = final 06A3 0x87 2 bEndpointAddress final Directia (1) și Adresa = IN7 06A4 0x02 3 bmAttributes XFR Tip = vrac 06A5 0x40 4 wMaxPacketSize (L) maximă Packet size = 64 Bytes 06A6 0x00 5 wMaxPacketSize (H) Dimensiune maximă de pachete - High 06A7 0x01 6 bInterval Interval de votare în milisecunde
care este apoi urmată de unicode formă de zero sa încheiat cu coarde "Tehnologia microcip ICD2 USB Device"
|
Cu toate acestea, dacă rămâneți blocat bin cu 4550, am putea încerca să ajute prin adăugarea de comentarii în CY asm fișier. |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 03 aprilie 2006 17:10 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: icd2.dll |
|
| Max Silvio,
Multumesc pentru informatii, mult timp în urmă am avut de a analiza o bin fișier provenite dintr-o eprom chip. Nu m-am chiar nici un tip de procesor, nici circuit. Dar am avut de a găsi modul în care aceasta se referă la o cartelă de memorie, și este de date. Am presupus că este un fel de chip 8051 și a încercat o mulțime de disassemblers, și sa încheiat cu un 80C542 (i cant amintești care a fost exact o) Mi-am dat seama de la numerele de port și de modul în care se ocupa cu cod individuale port insigne. Dar ea a avut 2 săptămâni de zi și de noapte de lucru pentru mine, mulțime de citire / depanare / învățare. De aceea, am vrut o asamblare ce e capabil să facă lucruri pe care le menționat în loc să-mi ...  Vă mulțumim din nou Silvio.
-----------------------------
Iam incepand sa cred ca ai de toate, în funcție de bin fișiere. Am făcut o cercetare în ICD2 dll și a aflat că aceasta solicită GETUSBDESCRIPTOR și numere de controale în Descriptorul și dacă se potrivește ICD2 versiune mai nouă decât am semnat în 4550 de Descriptorul decât a face un apel send4550image! Și, de asemenea, există descriptori în fișiere bin identică cu cea Kripton încărcat. Un lucru nu înțeleg că este de ce te-au furnizat de boot imagine? Și de ce ICD2.dll Incearca sa descarce acest fișier? Dacă am ajuns acasă, voi încerca să stabilească meu descriptori pentru a se potrivi cu o l-am găsit în cutie și va încerca MPLAB pe el.
Cred că suntem apropie! 
Adăugat după 46 minute:
Și nu este un lucru magic în primul btyes de boot-bin: MCHP (microcip?) Am căutat-o, daca este mai târziu (după sarcină) înlocuiește aceste cu adevarat punct de intrare Goto sau ST, dar în ICD2.dll nu.
Adăugat 3 oră după 34 minute:
Uită-te la asta:
Am facut ceea ce am spus mai înainte, doar a seta numărul de versiune mai nou la el se așteaptă și MPLAB încearcă pentru a trimite OS! (Desigur Fw meu nu este un boot loader)
| Cod: | MPLAB ICD 2 Ready Conectarea la MPLAB ICD 2 ICD0289: Nu poate fi re-program ICD2 USB OS firmware. ICD0021: Nu se poate conecta cu MPLAB ICD 2 MPLAB ICD 2 Ready
|
Cumva de încărcare trebuie să lucreze, voi încerca să fac ceva pe timp de noapte. |
|
| Back to top | |
 |
narccizzo
Alăturat: 20 ianuarie 2006 Posts: 173 A ajutat: 4 Locatie: PATZCUARO, Michoacán, Mexic
| 03 aprilie 2006 18:43 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Max JaySlovak Nu, nu Im sigur, doar am deschis bin și salvați-l în format hex. |
|
| Back to top | |
 |
Jay.slovak
Alăturat: 23 martie 2006 Posts: 11
| 03 aprilie 2006 20:45 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| | narccizzo a scris: | Max JaySlovak Nu, nu Im sigur, doar am deschis bin și salvați-l în format hex.  |
Da, este ciudat ca text este de citit, doar codul nu face nimic |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 03 aprilie 2006 22:25 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: icd2.dll |
|
| Vești bune după 2 ore de depanare,
ICD2.dll nu utilizați ambele de bin fișiere. OS fișier vrea să fi descarcate numai pentru a ICD2s cu numărul de serie de noi produse. Dar când a modifica versiunea id in numele de fisier de la OS.bin * _FFFF.bin decât de a începe, pentru a verifica versiunea de bootloader uite:
| Cod: | Conectarea la MPLAB ICD 2 ICDWarn0062: USB Boot firmware de ICD2 este activă și furnizarea de comunicații cu ICD2. Acest firmware este depășit și trebuie să fie actualizate. Ea nu poate fi actualizat în timp ce este activ. Cu toate acestea, puteți continua să opereze cu curent de boot firmware, dacă alegeți să faceți acest lucru. Doriți să continuați?
|
Dacă apăsați pe Da, am aici decât el încearcă să se conecteze la ICD2 în sine, și blochează (am doar 4550 de instalat încă). Dacă aș presa NU decât se pare că încearcă să-și actualizeze, dar aici avem nevoie de un bootloader ca asta, asa ca apare acest mesaj:
| Cod: | ICD0288: Nu poate fi re-program ICD2 USB Boot firmware. ICD0021: Nu se poate conecta cu MPLAB ICD 2 MPLAB ICD 2 Ready
|
Bine baieti, cred cred cred cum putem folosi acest bin pentru a obține un grup de lucru într-un bootloader 4550!!!
Adăugat după 2 minute:
De asemenea, am compilat probei bootloader cu corecte Vid / PID, dar are aceleași rezultate ca și în cazul meu 4550.
Adăugat după 16 minute:
Aceasta poate fi, că nu ne putem lua primele inițială inițială:) o parte din bootloader care încarcă primul bootloader care încarcă os ...
Adăugat după 5 minute:
Acesta este momentul în care ar trebui să rkodaira dump lui 4550 pentru nivelul 0 bootloader. (cu o mare speranță, care nu este protejat ...)
Rkodaira Avem nevoie de tine |
|
| Back to top | |
 |
albert22
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 03 aprilie 2006 22:46 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| I s-au imprimat o analiza pe care le-am cu mine de BL010101. și să găsească unele lucruri. Se pare să accepte 5 comenzi venind fie de la PSP sau USART. 0x55 cu începere de la executarea unui cod 0x0010. 0x56 Load hex (asta pare a fi mai mult subcommands) 0x5a trimite datele 0x01 0x01 0x03 (Versiunea de BL????) Două alte comenzi doar porniți Eroare Ocupat și LED-uri și se blochează într-o buclă inffinite.
Următoarele rutine sunt legate de ceea ce am numit "sarcină hex" comandă:
Într-un alt rutină de BL trimite urmatorul sir de caractere 0x5b, "0810C9", 0x5d Alte trimite răspunsuri în embeded urmatorul sir de caractere 0x5b, "0A000", U, 0x31, U, 0x5d. (în cazul în care U, pare a fi 0x31, 0x34, 0x36 și 0x37).
I didnt au de mult timp pentru a continua cu analiza. Am văzut nici USB de monitorizare, care au fost postate, deoarece la un Im cibernetice. Dar cred că aceste date ar trebui să fie ambalate în USB comunicare |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 03 aprilie 2006 23:30 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Albert,
Am verificat de serie a Comitetului de față USB, USB utilizează un înveliș troacă de serie lucru. Se pare că-l folosește pentru EP1 control port (este și IN) și EP2 ca port de date, numai in (ICD-> PC). |
|
| Back to top | |
 |
albert22
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 05 aprilie 2006 6:39 Re: de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Iată-mi avansuri cu BL Nu au existat astfel de subcommands. De sarcină hex comandă doar ia hex înregistrări si scrie date la program 2 octeți de memorie la un moment dat. Este verificări pentru diferite greșeli, inclusiv gama de adresa. AP. pentru a evita intensificarea în BL program. Acest lucru confirmă faptul că BL allways este rezident la 877. A [0A000 ", U, 0x31, U]. (2 U este prima U 1) este puțin probabil să fie văzut, pentru că este un raport de eroare. Erori includ: rău format, de control, de rău și adresa gama EEPROM scrie eroare . Rutina asteapta 16 caractere incepand cu un 0x3c ('<') și se încheie cu un 0x3e ('>'). 16 caractere acest antet conține adresa, lungimea și de control pentru datele care urmează să fie scris într-ASCII. În cazul în care antetul este corect AP. BL de răspunsuri cu "[0810C9]" Datele cames după o 0x7b Acest format se pare a fi diferit de la un Intel hex format.
Zedman. Pot fi recunoscute ai ceva de genul asta in RS232 Mâine I va fi la casa mea și a putea instala hdd pentru a verifica log-urile și de a se vedea dacă pot fi de nici un ajutor. |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 05 aprilie 2006 12:17 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: mplab protocol icd2 icd2.dll icd2w2k.sys mplbcomm.dll |
|
| Am ramas cu USB lucru. Și eu sunt trist.
Eu nu prea știu ce să fac în continuare. Mi-am petrecut o gramada de timp de depanare a icd2.dll.
Problema este: Nu pot trimite chiar un octet înapoi la MPLAB.
Voi explica de ce am găsit până acum, cu toate că nici unul cu adevarat interesati in (vreau doar să ia terminat de lucru). (Cu excepția: Albert, Kripton, rkodaira, Silvio și băieți din acest fir)
Deci, MPLAB comunica cu ICD2 acest fel:
[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 aparat]
Dacă alegeți USB tip de conexiune va cere aparatul Descriptorul de la ICD2 și controale pentru produsul în versiune cuvânt, dacă este 0x0003 decât este o Cypress ICD2 bazează, în cazul în care acesta a 0x0010 decât că este un 4550 pe bază de unul. Dacă 0x0010 găsit decât se spune ceea ce am fost publicate înainte ca sistem de operare în ICD2 trebuie să fie modernizate. Este interesant faptul că în cazul în care versiune (0100), în numele de fișier de OS.bin este modificat pentru a FFFF decât a trece peste acest pas și a controalelor de bootloader versiune. Aici a trebuit să plasture ICD2.dll să-l încercați să verificați BL.bin fișier versiunea prea, este hardcoded care chiar este setat la FFFF este obiceiul încercați să faceți upgrade, de aceea am peticit-o (pentru a stabili hardcoded FFFF mai mici), astfel încât acum spune ce-am mentoined prea înainte: în bl. versiunea este prea veche, dar ea nu poate fi actualizat în timp ce este activ.
Bine. Am făcut o mică prog din eșantion bootloader, cu descriptorii corectă și încercarea de a comunica cu MPLAB pentru a decripta de protocol și de a încerca din nou BL în 4550 ICD2. ICD2 că Kripton utilizări, (chiparos versiune) seturi 7 / în obiective, dar în funcție de jurnalele foloseste numai pentru EP1 in / out și în EP2. (OUT mijloace PC-> Device) Se pare că-l trimite USB specifice și comenzi date prin EP1 afară, și pe EP1 în spate, și trimite octeți readed de la ICD2 de 877 separate prin final EP2 inch
Atunci când încearcă să MPLAB trimite-lea pentru a face upgrade de OS.bin Fw os le emite un apel pentru a getUSBdescriptor kernel driver, și trimite un 0x12 octeți lung, folosind comanda DeviceIOControl comanda. Am debugged, se ajunge cu succes în 4550. Decât MPLAB emite o GetStatus apel, și se pare că de la parametrii de apel pe care-l așteaptă 0x08 octeți de date înapoi. Am înființat meu tampon cu 8 octeți, și set de proprietate pentru a SIE. Dar niciodată nu-l trimite înapoi că 8 byte (acesta nu apare în USBMon). Doar asteapta. Nu pot exista mai multe lucruri. Poate că nu st probleme cu setarea de 4550, dar am incercat cu un alt progs și funcționează, puteți trimite înapoi octeți. Știu gazdă trebuie să trimită și la comandă pentru a lăsa aparatul trimite în ceea ce-l vrea. Dar când am debugged MBLBCOMM, am văzut că nu a reușit DeviceIOControl comanda! I tought care poate că unele secrete a fost construit în. Sys fișier și picături de pachete, din cauza conținutului este greșit, dar cred că ar trebui să fie un nivel mai ridicat sarcină. Când ajung acasa voi verifica GetLastError valoarea.
Oricine nu are nici o idee cum pot vedea daca a fost un pachet trimis, sau cum pot continua? |
|
| Back to top | |
 |
Kripton2035
Alăturat: 19 iulie 2001 Posts: 497 A ajutat: 16 Location: Earth
| 05 aprilie 2006 16:59 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| se poate, ar trebui să se conecteze la un 877 PSP port din 4550 pentru a vedea ce vine prin, și de program de 877 cu bootloader avem? poate fi de octeți pe care îl așteaptă provin de la EP2 și așa de 877?
vrei să trimiteți un alt fișier de log al unui precise condiție? de modul în care este sigur că aveți nevoie de un jurnal cu rokaida lui 4550 icd2 ..
PS: Nu sunt interesat de acest proiect .. Sunt doar curios! Am deja un usb icd2! |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 05 aprilie 2006 20:08 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| Multumesc Kripton,
Nu vom notifica atunci când am nevoie de mai multe dump , Este un pic mai complex decat sa trec pe la 877 octeți și spate, are un înveliș de protocol pe ea. Ce-ai spus a fost de mare ajutor, dar rkodeira obiceiul lui sacrify nou ICD2 ... Dacă el ar fi, decât cu dump de OS este procesul de actualizare ar defini protocolul de bine ... |
|
| Back to top | |
 |
Kripton2035
Alăturat: 19 iulie 2001 Posts: 497 A ajutat: 16 Location: Earth
| 05 aprilie 2006 22:09 de proiect pentru a înlocui CY7C64613 în ICD2 | | |
|
| | I dont bine cred că trebuie să sacrify lui icd2!! numai unele splin cu usbmon ca am facut .. sperăm icd2 mea este inca de lucru!!! |
|
| Back to top | |
 |
albert22
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 05 aprilie 2006 22:16 Re: Proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: icd2 incarca hex comandă |
|
| Nu pot instala HHD monitor pentru a vedea log-urile, pentru că am doar w98 acasă. Poti sa o export dump de sisteme de operare pentru a descărca un fișier. Txt, pentru mine? ------- Cum a CY reinițializează la 877? Nu este un semnal (PIN 43) la baza de Q1 al cărui colector este MCLR. Dar asta se duce la un conector numit PROG. Acum am dat seama că acest semnal trebuie să mergeți la 877 prea. Ne-ar trebui să știi ce USB comandă reinițializează la 877. Poate fi, este la un control de obiective? I dont know ce este în funcție de acest conector PROG. dar extra obiective pot fi legate de acesta. ---------- Unul din OS încărcate la ICD2 pare a fi: ICD01020405.hex am încercat să-l disassemby dar nu pot ajunge la disassembler pentru a înlocui hex adrese cu numele de registre. Se va lua mai mult timp pentru a da seama cum funcționează. Un fapt interesant este că codul incepe la 0x0010. Amintiți-vă că pe această adresă BL apeluri cu executa comanda.
În versiunea BL raportate de mplab este 01.01.01.00 acest merge destul de bine cu BL comandă care răspunde 01,01,01,03 --------- Nu există nici o DPot (MCP41xxxx) în ICD brazilian. Cum au stabilit Vpp? Cea mai mare parte a clone au un fix Vpp. Oare aceasta înseamnă că brazilian ICD este doar o clona low-cost și nu de la noi ICD2? I dont cred că a plecat pentru un microcip vpp fix. În cazul în care există o altă metodă de a controla vpp, altele decât DPot acesta ar avea nevoie de firmware modificări ale ICD OS. Vechiul sistem de operare nu ar lucra în cel nou. Acest lucru ar putea fi cauza care a DLL este verificarea versiune. |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 05 aprilie 2006 22:32 de proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: mplab protocol icd2 icd2w2k.sys icd2w2k descărca 4550 bootloader scrie icd2w2k.sys download download icd2w2k |
|
| Eu nu cred că ar trebui să trateze cu nimic în ceea ce privește circuitul sau de protocol sau de conexiune între 877 și 4550, încă. Cred că tot ce ne trebuie este scris în 4550 bins furnizate cu MPLAB. Noi ar trebui să scrie un bootloader compatibil cu icd2w2k.sys de a obtine OS.bin descarcat, si dupa aceea putem scracth capul nostru modul în care este conectat 877.
Adăugat după 5 minute:
În ICD2br foloseste un alt tip de cip care generează Vpp. Rkodaira mentoined, verificați înainte de posturi. |
|
| Back to top | |
 |
Silvio
Alăturat: 31 decembrie 2001 Posts: 800 A ajutat: 90
| 06 aprilie 2006 2:36 Re: de proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: icd2w2k.sys icd2w2k download 4550 bootloader scrie icd2w2k.sys download download icd2w2k |
|
| | Zedman a scris: | Noi ar trebui să scrie un bootloader compatibil cu icd2w2k.sys de a obtine OS.bin descarcat.
|
Da, acesta este principalul motiv pentru care am spus că dissasembling CY Fw este inutil, atât timp cât avem de sisteme de operare și BL bin fișier furnizate de microcip. Pentru a începe de la zero de codificare pentru 4550 și simularea CY Fw ar fi consumatoare de timp și de valoare. Asta-i apreciez zedman eforturile.
Cu toate acestea, uneori, nu pot să mă ajute să solicite această prostie întrebare: În cazul în care BL nu poate fi actualizat în timp ce este activ, ceea ce a fost scris microcip ICD2 designeri abordare pentru upgrade? În paralel, programator de lipit înainte de 4550? Sau prin ICSP cu o imagine curată bin descărcat după boot bloc șterse? Dacă se va constata că rkodaira CPB și EBTRB biții sunt eliminate , Atunci cum poate fi încărcat OS.bin în 4550? Am începe să pună ca tine: de ce ti-au furnizat de boot imagine? Or, astfel cum a fost Jay.slovak a spus că "este un sir de citit, doar codul nu face nimic" pentru ca este criptat și are sens doar pentru original boot cod. Deci, singura soluție este de a simula de 4550 de bootloader si sa oglindă bin imagine de sistem de operare? |
|
| Back to top | |
 |
albert22
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 06 aprilie 2006 4:36 Re: de proiect pentru a înlocui CY7C64613 în ICD2 | | | Tags: mplab protocol icd2 |
|
| | Citat: | În ICD2br foloseste un alt tip de cip care generează Vpp. Rkodaira mentoined, verificați înainte de posturi.
| I didnt reprezintă MIC2175, care este o comutare de reglementare ca MC34063. Am fost cu scopul de a DPOT sale și, în special, pentru a I2C sunt interfase, pentru că necesită suport de firmware la 877 pentru a seta corect Vpp tensiune. După cum am spus, dacă noi ICD2 bazează în alte componente pentru a modifica Vdd, toate firmware trebuie să se schimbe.
Poate fi Rkodaira ar putea verifica ithe circuit asociat cu codul PIN de 3 (FB) din MIC2172, pentru a vedea dacă vpp poate fi controlat sau este fix.
Lasă-mă să-mi fac o mică declarație clară. În cazul în care brazilian ICD nu are nici un control de Vpp este foarte probabil că acesta este doar o clona. 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. | Citat: | | 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: | Citat: | | 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
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 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
Alăturat: 08 iunie 2004 Posts: 332 Helped: 54 Locatie: Sao Paulo - Brazilia
| 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
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 06 Apr 2006 18:26 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Te rog 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. Mulțumesc |
|
| Back to top | |
 |
Kripton2035
Alăturat: 19 iulie 2001 Posts: 497 A ajutat: 16 Location: Earth
| 06 Apr 2006 19:31 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | rkodaira wrote: | Buna baieti! Vești proaste. 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
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 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
Alăturat: 06 aprilie 2006 Posts: 36
| 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
Alăturat: 20 iulie 2004 Posts: 95 A ajutat: 3
| 06 Apr 2006 23:17 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | Citat: | | 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, Grandios. I was just at the routines that handle connection with the ICD once the OS is loaded. Mulțumesc. |
|
| Back to top | |
 |
Zedman
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 06 Apr 2006 23:29 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplbcomm.dll i3kmc-0 |
|
| Hey Brem!
nice to see you here! Thanks for the infos on the protocol.
| Citat: | 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. 
-------------------
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): | Cod: | procedure TForm1.Button1Click(Sender: TObject); var hnd: cardinal; InBuffer: array[0..3] of byte; OutBuffer: array[0..17] of byte; bytesReturned: cardinal; a: integer; începe hnd:=CreateFile('\\.\i3kmc-0', $C0000000, 2, 0, 3, 0, 0);
if hnd <> INVALID_HANDLE_VALUE then începe // 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 începe 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 începe 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 începe 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... |
|
| Back to top | |
 |
Brem
Alăturat: 06 aprilie 2006 Posts: 36
| 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
Alăturat: 13 octombrie 2003 Posts: 294 A ajutat: 2
| 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!
| Cod: | 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 | |
 |