Reguli | recente | subiect RSS | Cauta | Inregistrare | Autentificare

De proiect pentru a înlocui CY7C64613 în ICD2


Mergi la pagina anterioară 1, 2, 3, 4 ... 59, 60, 61 Next
Salt la pagina:

Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrolere -> Proiect pentru a înlocui CY7C64613 în ICD2
Arabă versiunea Versiunea bulgară Catalană versiunea Versiunea cehă Versiunea daneză Versiunea germană Versiunea în limba greacă Versiunea în limba engleză Limba spaniolă Versiunea finlandeză Versiunea franceză Hindi versiunea Croată versiunea Indoneziană versiunea Versiunea italiană Ebraică versiunea Versiune japoneză Coreeană versiunea Versiunea lituaniană Versiunea letonă Versiunea olandeză Norvegiană versiunea Poloneză versiunea Versiunea portugheză Versiunea română Versiune rusă Versiunea slovacă Versiunea slovenă Sârbă versiunea Versiunea suedeză Filipinez versiunea Ucraineană versiunea Vietnameză versiunea Chineză versiune
Autor Mesaj
Kripton2035



Alăturat: 19 iulie 2001
Posts: 497
A ajutat: 16
Location: Earth


Post 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
View user's profile
narccizzo



Alăturat: 20 ianuarie 2006
Posts: 173
A ajutat: 4
Locatie: PATZCUARO, Michoacán, Mexic


Post 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


Ne pare rău, dar ai nevoie de autentificare pentru a vizualiza acest atașament

Back to top
View user's profile
Jay.slovak



Alăturat: 23 martie 2006
Posts: 11


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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 ' Rolling Eyes ...
Back to top
View user's profile
Silvio



Alăturat: 31 decembrie 2001
Posts: 800
A ajutat: 90


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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 Neutru 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 ... Foarte fericit
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! Răcoros

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
View user's profile
narccizzo



Alăturat: 20 ianuarie 2006
Posts: 173
A ajutat: 4
Locatie: PATZCUARO, Michoacán, Mexic


Post 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. Trist
Back to top
View user's profile
Jay.slovak



Alăturat: 23 martie 2006
Posts: 11


Post 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. Trist


Da, este ciudat ca text este de citit, doar codul nu face nimic Trist
Back to top
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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 Zâmbi
Back to top
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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
View user's profile
Kripton2035



Alăturat: 19 iulie 2001
Posts: 497
A ajutat: 16
Location: Earth


Post 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 .. Zâmbi Sunt doar curios! Am deja un usb icd2! Zâmbi
Back to top
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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 Zâmbi , 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 ... Zâmbi Dacă el ar fi, decât cu dump de OS este procesul de actualizare ar defini protocolul de bine ...
Back to top
View user's profile
Kripton2035



Alăturat: 19 iulie 2001
Posts: 497
A ajutat: 16
Location: Earth


Post 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
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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
View user's profile
Silvio



Alăturat: 31 decembrie 2001
Posts: 800
A ajutat: 90


Post 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 Plâns sau foarte trist , 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
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 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
View user's profile
rkodaira



Alăturat: 08 iunie 2004
Posts: 332
Helped: 54
Locatie: Sao Paulo - Brazilia


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
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Kripton2035



Alăturat: 19 iulie 2001
Posts: 497
A ajutat: 16
Location: Earth


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 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
View user's profile
Brem



Alăturat: 06 aprilie 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
View user's profile
albert22



Alăturat: 20 iulie 2004
Posts: 95
A ajutat: 3


Post 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 2


Post 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. Plâns sau foarte trist

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

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... Neutru
Back to top
View user's profile
Brem



Alăturat: 06 aprilie 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
View user's profile
Zedman



Alăturat: 13 octombrie 2003
Posts: 294
A ajutat: 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!

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
View user's profile
Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrollers -> Project to replace CY7C64613 in the ICD2
Page 3 of 61 Ora este GMT 2 ore
Goto page Previous 1 , 2 , 3 , 4 ... 59 , 60 , 61 Next
Salt la pagina:


Abuz | | Administrator | | Moderatori | | Sustineti-ne | | harta site
subiect RSS