Regeln | Neue Beiträge | Thema RSS | Suche | Registrieren | Log-in

Projekt zu ersetzen CY7C64613 in der ICD2


Gehe zu Seite Zurück 1, 2, 3, 4 ... 59, 60, 61 Weiter
Gehe zu Seite:

Post new topic Reply to topic EDAboard.com Foren-Übersicht -> Microcontrollers -> Projekt zu ersetzen CY7C64613 in der ICD2
Arabische Fassung Bulgarische Version Katalanischen Version Tschechische Version Dänische Fassung Deutsch Version Griechische Fassung Englisch Version Spanische Version Finnische Fassung Französische Version Hindi-Version Kroatische Version Indonesisch-Version Italienische Version Hebräisch-Version Japanische Version German Version Litauische Fassung Lettische Fassung Niederländische Fassung Norwegische Version Polnische Fassung Portugiesische Version Romanian version Russische Version Slowakische Fassung Slowenisch-Version Serbisch-Version Schwedische Version Tagalog Version Ukrainisch Version Vietnamesisch-Version Chinesische Version
Autor Nachricht
Kripton2035



Beitritt: 19. Jul 2001
Beiträge: 482
Geholfen: 15
Ort: Earth


Post 03 Apr 2006 8:28 Re: Projekt zu ersetzen CY7C64613 in der ICD2

predrage schrieb:
Meine Freunde habe ich nicht gelingt, in der Programmierung ICD2_4550_BOOT_0180.BIN in 4550. I'v
versucht, offen bin Datei mit winpic 800 Software aber nicht. I tryed, um es zu öffnen mit der Option "Alle Dateien" in "Dateitypen", denn es gibt keine direkte Unterstützung für bin Dateien. ICprog haben, dass die Unterstützung (BIN-Dateien zu öffnen), kann aber nicht Programm 4550. In der Tat gibt es keine 4550 im Geräte-Liste. Was sollte ich als Nächstes tun? Haben Sie Vorschläge? Ich bin nur ein Anfänger, aber ich habe guten Willen zu helfen.
Sorry about my bad Englisch.


Benennen Sie die. bin. HEX und winpic wird es!
manchmal sehr viele Dateien sind. bin in der Realität sind Intel. hex!
um sicher zu sein, öffnen Sie die Datei mit Notepad, wenn sie enthält Zeilen beginnend mit ":" und dann auf Umbenennen. Hex und öffnen Sie sie mit winpic .. wenn es Müll, dann bin2hex verwendet werden muss, um es zu öffnen.
Zurück zum Anfang
narccizzo



Beitritt: 20. Jan 2006
Beiträge: 173
Geholfen: 4
Lage: Patzcuaro, Michoacán, Mexiko


Post 03 Apr 2006 9:42 Re: Projekt zu ersetzen CY7C64613 in der ICD2

Dies sind die beiden Dateien bin in hex, ich öffnete die bin-Dateien mit der
ic-prog Software dann speichere ich die Dateien im Hex-Format, wenn Sie einen Blick auf diese Dateien, die Sie sehen können, eine lesbare Zeichenkette "Microchip Technologie ICD2 USB Device ICD2 USB" in der Adresse 0x0ee7 für die boot.hex-Datei und die gleiche Zeichenkette in der 0x0b8e für die
os.hex Datei, i dont haben einen Disassembler, um im Detail dieser Dateien, aber etwas sagt mir, dass diese beiden Dateien sind alle, die wir brauchen.

BR
Narccizzo


Es tut uns leid, aber Sie müssen zum Login, um die Anlage

Zurück zum Anfang
Jay.slovak



Beitritt: 23. März 2006
Beiträge: 11


Post 03 Apr 2006 11:17 Re: Projekt zu ersetzen CY7C64613 in der ICD2

narccizzo schrieb:
Dies sind die beiden Dateien bin in hex, ich öffnete die bin-Dateien mit der
ic-prog Software dann speichere ich die Dateien im Hex-Format, wenn Sie einen Blick auf diese Dateien, die Sie sehen können, eine lesbare Zeichenkette "Microchip Technologie ICD2 USB Device ICD2 USB" in der Adresse 0x0ee7 für die boot.hex-Datei und die gleiche Zeichenkette in der 0x0b8e für die
os.hex Datei, i dont haben einen Disassembler, um im Detail dieser Dateien, aber etwas sagt mir, dass diese beiden Dateien sind alle, die wir brauchen.

BR
Narccizzo


Sind Sie sicher, dass Sie die Dateien konvertiert werden? Wenn ich sie in MPLAB, wird der Code ist nicht sinnvoll, alle es ist einfach nur durch das Programm-Speicher und NOPs tun. Nützlich ist, ist nichts passiert in den Boot-und OS HEXs. Auch config Bits sind in beiden Dateien!
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 03 Apr 2006 11:19 Projekt zu ersetzen CY7C64613 in der ICD2

Albert,

die Kernel-Treiber (n) erwarten, die Zypressen verbindet auf einem anderen vid / pid FIRT, wenn die Verbindung hergestellt ist, und nach der Loader sys Downloads FW es wird wieder wie ein anderes VID / PID, so dass die Gespräche zu anderen Systemen ist. Wir haben für die Umsetzung nur die zweite.
Iam @ work, so kann ich nicht tun, hier erwarten harte thinkin ' Rolling Eyes ...
Zurück zum Anfang
silvio



Beitritt: 31. Dezember 2001
Beiträge: 800
Geholfen: 90


Post 03 Apr 2006 11:31 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: MPLAB ICD2 Protokoll Zypressen Disassembler Disassembler Zypresse

Hi Zedman,

it's a must to understand what's under cover. Was CY hex-Datei ist es nicht nur eine Frage der guten Disassembler, das weiß, die Zypressen-Chip, aber das Lesen von 436 Seiten EZ-USB-FX TechRefManual ist es ein Muss zu verstehen, was unter dem Deckmantel.
Und ich glaube nicht, dass Sie für diese Zeit. Dennoch, wenn Sie nicht mit 8051 Opcodes, Parsen der Code wird einige Zeit in Anspruch nehmen. (Ich weiß, Sie sind vertraut mit PIC)
with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Ich kann ersetzen alle Vorkommen von MOV DPTR, # lxxxx mit den entsprechenden Werten aus CY7C64613 Register 0x7800-0x7FFF aber Sie definitiv am Ende aus den Seiten der TechRefManual Suche nach Definitionen.
Neben dem, dass es einige, wie schwierig, um Namen, die Bits gesetzt sind oder eindeutig in das Programm, solange sie nicht im Raum SFR (die endet in 0 oder 8).
with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Es ist einfach zu ersetzen, MOV DPTR, # L7FB4 mit MOV DPTR, # EP0CS, aber es ist schwer zu sagen, setb HSNAK aufgrund der oben genannten Gründen.

and EP0STAL L which are affected in the bellow code at 0x03E2. Nehmen wir das Beispiel Bits HSNAK und EP0STAL L, die betroffen sind in der Balg-Code auf 0x03E2.
Code:

L03E2: LCALL L0FBE
JNC L03EE
MOV DPTR, # L7FB4
MOVX A, @ DPTR
ORL A, # 01h; eine Art setb EP0STALL
MOVX @ DPTR, A
L03EE: MOV DPTR, # L7FB4
MOVX A, @ DPTR
ORL A, # 02h; eine Art setb HSNAK
MOVX @ DPTR, A
RET

L0FBE: setb C
RET


Nehmen wir als Beispiel (CP_1.asm) die Code-Zeilen, beginnend mit Offset 0x0100 (ein Unterprogramm von 0x05FA genannt), die erste Zeile Code verwendet sofort Balg Interrupt Vektor Tabelle
Auf RAM 0x7FE9 finden Sie 2. Byte der 8 Byte USB SETUP Paketdaten (siehe Seite 215 table9-1), was bedeutet, dass bRequest Bereich (siehe Tabelle 9-2).


Code:

L0100: MOV DPTR, # L7FE9
MOVX A, @ DPTR
JNZ L0109
LJMP L029B, wenn bRequest = GetStatus springen zum 0x029B
L0109: DEC A
JNZ L010F
LJMP L0317, wenn bRequest = Frei Feature, springen zum 0x0317
L010F: ADD A, # 0FEh
JNZ L0116
LJMP L038E, wenn bRequest = Feature-Set, springen zum 0x038E
L0116: ADD A, # 0FBh
JNZ L011D
LJMP L0295, wenn bRequest = Get Configuration, springen zum 0x0295
L011D: DEC A
JNZ L0123
LJMP L028F, wenn bRequest = Set-Konfiguration, springen zum 0x028F
L0123: DEC A
JNZ L0129
LJMP L0283, wenn bRequest = Get Interface, springen zum 0x0283
L0129: DEC A
JNZ L012F
LJMP L0289, wenn bRequest = Set-Schnittstelle, springen zum 0x0289
L012F: ADD A, # 05h
JZ L0136
LJMP L03E2, wenn bRequest = keine der oben genannten, dann Bits HSNAK
und EP0STALL der EP0CS Control & Status-Register und
, dann RET auf 0x05FD
;
L0136: LCALL L0F7A, wenn bRequest = Get Descriptor, LCALL 0x0F7A, wo
JC L013E, die etwas ist voreingestellt, so dass direkt zum 0x013E
LJMP L03EE; wenn 0x0F7A führen würde 0 von Standard-, Satz-Bit HSNAK
; der EP0CS Control & Status-Register und RET auf 0x05FD
;
L013E: MOV DPTR, # L7FEB; hier, weil bRequest war ein Get Descriptor
MOVX A, @ DPTR, so dass die WValueH Bereich der USB-SETUP Päckchen
ADD A, # 0FEh
JZ L015F, wenn wValueH wurde 0x02 Wechseln zu 0x015F
DEC A
JZ L0190, wenn wValueH wurde 0x03 springen zum 0x0190
ADD A, # 02h
JZ L0150, wenn wValueH wurde 0x01 springen zum 0x0150
LJMP L0279, wenn wValueh unterscheidet sich entweder 0x01 oder 0x02 oder 0x03 dann
; Bits HSNAK und EP0STALL der EP0CS registrieren und RET auf 0x05FD
;
L0150: MOV A, 0Ch; hier, weil wValueH wurde 0x01, so laden SUDPTR globalen USB-Register
MOV DPTR, # L7FD4; mit dem Wert 0x0C0D, dann Bit HSNAK der EP0CS und RET auf 0x05FD
MOVX @ DPTR, A
MOV A, 0Dh
MOV DPTR, # L7FD5
MOVX @ DPTR, A
LJMP L03EE
L015F: MOV DPTR, # L7FEA; sich nun auf wValueL Bereich der USB-SETUP Päckchen
;
;
;
;
und so weiter ...................


port2: Microchip MPLAB ICD2 Fw client Oder dieser Lookup-Tabelle bei Offset 0x0622, die mit der Kripton2035 port2: Microchip MPLAB ICD2 Fw-Client


Code:

Tabelle 5-9. Standard-USB-Device Descriptor

RAM Preis Offset Feld Beschreibung

0622 0x12 0 bLength Länge dieser Descriptor = 18 Bytes
0623 0x01 1 bDescriptorType Descriptor Device Type =
0624 0x00 2 bcdUSB (L) USB-Spezifikation Version 1.10 (L)
0625 0x01 3 bcdUSB (H) USB-Spezifikation Version 1.10 (H)
0626 0xFF 4 bDeviceClass Device Class (FF ist Hersteller-spezifisch)
0627 0xFF 5 bDeviceSubClass Device Sub-Klasse (FF ist Hersteller-spezifisch)
0628 0xFF 6 bDeviceProtocol Device Protocol (FF ist Hersteller-spezifisch)
0629 0x40 7 bMaxPacketSize0 maximale Paketgröße für EP0 = 64 Bytes
062A 0xD8 8 idVendor (L) Vendor ID (L) = 04D8H Microchip Technology
062B 0x04 9 idVendor (H) Vendor ID (H)
062C 0x01 10 idProduct (L) Produkt-ID (L) ICD2 = 8001H
062D 0x80 11 idProduct (H) Produkt-ID (H)
062E 0x03 12 bcdDevice (L) Geräte-Release-Nummer (BCD, L)
062F 0x00 13 bcdDevice (H) Geräte-Release-Nummer (BCD, H)
0630 0x00 14 iManufacturer Hersteller Index string = None
0631 0x00 15 iProduct Produkt Index string = None
0632 0x00 16 iSerialNumber Seriennummer Index string = None
0633 0x01 17 bNumConfigurations Anzahl der Konfigurationen in diesem Interface = 1

Tabelle 5-10. USB-Standard-Konfiguration Descriptor

RAM Preis Offset Feld Beschreibung

0634 0x09 0 bLength Länge dieser Descriptor = 9 Bytes
0635 0x02 1 bDescriptorType Descriptor Type = Konfiguration
0636 0x74 2 wTotalLength (L) Gesamtlänge (L) Einschließlich Interface und Endpoint Descriptors = 116
0637 0x00 3 wTotalLength (H) Gesamt-Länge (H)
0638 0x01 4 bNumInterfaces Anzahl der Schnittstellen in dieser Konfiguration
0639 0x01 5 Konfiguration bConfigurationValue Wertes, den Antrag auf Set_Configuration Wählen Sie diese Konfiguration
063A 0x00 6 iConfiguration Index der String Beschreibung dieser Konfiguration = None
063B 0x80 7 bmAttributes Attribute - Bus-Powered, keine Wakeup
063C 0x4B 8 maxpower Maximale Power - 150 mA

Tabelle 5-11. USB-Interface-Standard-0, Alternative Einstellung 0 Descriptor

RAM Preis Offset Feld Beschreibung

063D 0x09 0 bLength Länge der Interface-Descriptor
063E 0x04 1 bDescriptorType Descriptor Type = Schnittstelle
063F 0x00 2 bInterfaceNumber Zero-Index auf der Grundlage dieses Interface = 0
0640 0x00 3 bAlternateSetting Alternative Einstellung Wert = 0
0641 0x0E 4 bNumEndpoints Anzahl der Endpunkte in diesem Interface (ohne EPA) = 14
0642 0xFF 5 bInterfaceClass Interface Klasse = Vendor Specific
0643 0xFF 6 bInterfaceSubClass Schnittstelle Sub-class = Vendor Specific
0644 0xFF 7 bInterfaceProtocol Interface Protocol = Vendor Specific
0645 0x00 8 iInterface Index zu String Descriptor für dieses Interface = None

Tabelle 5-14. Standard-Schnittstelle 0, Alternate Setting 1, Bulk Endpoint Descriptors

RAM Preis Offset Feld Beschreibung

0646 0x07 0 bLength Länge dieser Endpoint Descriptor
0647 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0648 0x01 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = OUT1
0649 0x02 3 bmAttributes XFR Type = BULK
064A 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
064B 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
064C 0x01 6 bInterval Polling-Intervall in Millisekunden

064D 0x07 0 bLength Länge der Endpoint Descriptor
064E 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
064F 0x02 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = OUT2
0650 0x02 3 bmAttributes XFR Type = BULK
0651 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0652 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0653 0x01 6 bInterval Polling-Intervall in Millisekunden

0654 0x07 0 bLength Länge dieser Endpoint Descriptor
0655 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0656 0x03 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = OUT3
0657 0x02 3 bmAttributes XFR Type = BULK
0658 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0659 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
065A 0x01 6 bInterval Polling-Intervall in Millisekunden

065B 0x07 0 bLength Länge dieser Endpoint Descriptor
065C 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
065D 0x04 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = OUT4
065E 0x02 3 bmAttributes XFR Type = BULK
065F 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0660 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0661 0x01 6 bInterval Polling-Intervall in Millisekunden

0662 0x07 0 bLength Länge dieser Endpoint Descriptor
0663 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0664 0x05 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = OUT5
0665 0x02 3 bmAttributes XFR Type = BULK
0666 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0667 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0668 0x01 6 bInterval Polling-Intervall in Millisekunden

0669 0x07 0 bLength Länge dieser Endpoint Descriptor
066A 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
066B 0x06 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = OUT6
066C 0x02 3 bmAttributes XFR Type = BULK
066D 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
066E 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
066F 0x01 6 bInterval Polling-Intervall in Millisekunden

0670 0x07 0 bLength Länge dieser Endpoint Descriptor
0671 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0672 0x07 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = OUT7
0673 0x02 3 bmAttributes XFR Type = BULK
0674 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0675 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0676 0x01 6 bInterval Polling-Intervall in Millisekunden

RAM Preis Offset Feld Beschreibung

0677 0x07 0 bLength Länge dieser Endpoint Descriptor
0678 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0679 0x81 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = IN1
067A 0x02 3 bmAttributes XFR Type = BULK
067B 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
067C 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
067D 0x01 6 bInterval Polling-Intervall in Millisekunden

067E 0x07 0 bLength Länge dieser Endpoint Descriptor
067F 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0680 0x82 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = IN2
0681 0x02 3 bmAttributes XFR Type = BULK
0682 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0683 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0684 0x01 6 bInterval Polling-Intervall in Millisekunden

0685 0x07 0 bLength Länge dieser Endpoint Descriptor
0686 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0687 0x83 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = IN3
0688 0x02 3 bmAttributes XFR Type = BULK
0689 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
068A 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
068B 0x01 6 bInterval Polling-Intervall in Millisekunden

068C 0x07 0 bLength Länge dieser Endpoint Descriptor
068D 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
068E 0x84 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = In4
068F 0x02 3 bmAttributes XFR Type = BULK
0690 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0691 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0692 0x01 6 bInterval Polling-Intervall in Millisekunden

0693 0x07 0 bLength Länge dieser Endpoint Descriptor
0694 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
0695 0x85 2 bEndpointAddress Endpoint Richtung (1 in) und Anschrift = IN5
0696 0x02 3 bmAttributes XFR Type = BULK
0697 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
0698 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
0699 0x01 6 bInterval Polling-Intervall in Millisekunden

069A 0x07 0 bLength Länge dieser Endpoint Descriptor
069B 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
069C 0x86 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = IN6
069D 0x02 3 bmAttributes XFR Type = BULK
069E 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
069F 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
06A0 0x01 6 bInterval Polling-Intervall in Millisekunden

06A1 0x07 0 bLength Länge der Endpoint Descriptor
06A2 0x05 1 bDescriptor Typ Descriptor Type = Endpunkt
06A3 0x87 2 bEndpointAddress Endpunkt Richtung (1 in) und Anschrift = IN7
06A4 0x02 3 bmAttributes XFR Type = BULK
06A5 0x40 4 wMaxPacketSize (L) maximale Paketgröße = 64 Bytes
06A6 0x00 5 wMaxPacketSize (H) maximale Paketgröße - Hohe
06A7 0x01 6 bInterval Polling-Intervall in Millisekunden

die dann gefolgt von Unicode-Form von Null beendete Zeichenkette
"Microchip Technology ICD2 USB Device"



Allerdings, wenn Sie stecken mit 4550 bin, kann ich versuchen zu helfen, durch das Hinzufügen von Kommentaren in der Datei CY asm.
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 03 Apr 2006 17:10 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: icd2.dll

Hi Silvio,

Vielen Dank für die Infos, vor langer Zeit musste ich analysiert bin Datei aus einem EPROM-Chip. Ich habe noch nicht einmal nicht den Prozessor-Typ noch die Schaltung. Aber ich hatte zu finden, wie sie sich mit einer Speicherkarte, und die Daten.
Bin ich davon ausgegangen, es ist eine Art von Chip 8051 und versuchte viel Disassemblern, und endete mit einem 80C542 (i cant erinnern, war es genau) habe ich es aus den Port-Nummern und wie Sie den Code mit einzelnen Port Pins.
Aber es dauerte 2 Wochen Tag und Nacht arbeiten Neutral für mich, viel zu lesen / Debugging / Lernen.
Deshalb wollte ich ein Assembler, was der Lage zu tun, die Dinge, die Sie anstelle mir ... Very Happy
Nochmals vielen Dank Silvio.

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

Iam ab zu glauben, Sie alle, so bin-Dateien. Ich habe in einem Forschungs-ICD2 dll und fand heraus, dass es Anrufe GETUSBDESCRIPTOR und Kontrollen Zahlen in der Schlagwort-und, wenn sie mit neueren Version ICD2 als ich in meinem 4550 das Schlagwort, als es einen send4550image Anruf!
Und außerdem gibt es in der Deskriptoren bin Dateien identisch mit dem Kripton hochgeladen.
Eine Sache, die ich nicht verstehen, dass ist der Grund, warum haben sie die die Boot-Image?
Und warum ICD2.dll versucht, diese Datei? Wenn ich zu Hause, ich werde versuchen, meine Deskriptoren auf die ich in den Papierkorb und versuchen MPLAB ist.

Ich denke, wir werden immer näher! Kühl

Hinzugefügt nach 46 Minuten:

Und es ist ein magischer, was in der ersten btyes von der Boot-bin: MCHP (Mikrochip?)
Ich habe für sie hast, wenn es später (nach Belastung) ersetzt diese mit echten Zugang GOTO oder st, aber in der ICD2.dll nicht.

Hinzugefügt nach 3 Stunden 34 Minuten:

Look at this:

Ich habe, was ich gesagt habe, nur die Versionsnummer zu den neueren sie erwartet und MPLAB versucht, um das Betriebssystem! (Natürlich meine FW ist keine Boot-Loader)

Code:

MPLAB ICD 2 Ready
Anschließen an MPLAB ICD 2
ICD0289: Unable to re-Programm ICD2 USB OS Firmware.
ICD0021: Es konnte keine Verbindung mit MPLAB ICD 2
MPLAB ICD 2 Ready


Irgendwie Bootloader funktionieren sollte, werde ich versuchen, etwas zu tun in der Nacht.
Zurück zum Anfang
narccizzo



Beitritt: 20. Jan 2006
Beiträge: 173
Geholfen: 4
Lage: Patzcuaro, Michoacán, Mexiko


Post 03 Apr 2006 18:43 Projekt zu ersetzen CY7C64613 in der ICD2

Hi JaySlovak
Nein, Im nicht sicher, ich bin erst, und speichern Sie sie in Hex-Format. Traurig
Zurück zum Anfang
Jay.slovak



Beitritt: 23. März 2006
Beiträge: 11


Post 03 Apr 2006 20:45 Re: Projekt zu ersetzen CY7C64613 in der ICD2

narccizzo schrieb:
Hi JaySlovak
Nein, Im nicht sicher, ich bin erst, und speichern Sie sie in Hex-Format. Traurig


Ja, es ist seltsam, wie der String lesbar ist, nur der Code nichts Traurig
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 03 Apr 2006 22:25 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: icd2.dll

Gute Nachrichten nach 2 Stunden der Fehlersuche,

ICD2.dll funktioniert sowohl von BIN-Dateien. Die OS-Datei heruntergeladen werden will, nur zu ICD2s mit neuen Produkt-Seriennummer.
Aber wenn Sie die Versions-ID in den Dateinamen der zu OS.bin * _FFFF.bin, als sie beginnt, um die Bootloader-Version aussehen:

Code:

Anschließen an MPLAB ICD 2
ICDWarn0062: Die USB-Boot-Firmware des ICD2 aktiv ist und die Kommunikation mit dem ICD2. Diese Firmware ist veraltet und sollte aktualisiert werden. Es kann nicht aktualisiert werden, während aktiv. Sie können jedoch weiterhin mit der aktuellen Firmware-Boot, wenn Sie dies zu tun. Möchten Sie fortfahren?


YES drücken, wenn ich hier, als sie versucht, eine Verbindung zu ICD2 selbst, und friert ein (ich habe nur die 4550 noch nicht installiert).
Wenn ich, drücken Sie NEIN, als es scheint, versucht er zu aktualisieren, aber wir brauchen hier einen Bootloader wie dieser, so dass diese Meldung angezeigt wird:

Code:

ICD0288: Unable to re-Programm ICD2 USB-Boot-Firmware.
ICD0021: Es konnte keine Verbindung mit MPLAB ICD 2
MPLAB ICD 2 Ready


Okay Jungs, denken denken denken, wie können wir, dass bin, um eine Bootloader in ein 4550!

Hinzugefügt nach 2 Minuten:

Ich habe auch unter der Probe mit dem richtigen Bootloader VID / PID, sondern haben die gleichen Ergebnisse wie bei meinem 4550.

Hinzugefügt nach 16 Minuten:

Es kann sein, dass wir nicht die ersten ersten initial:) Ein Teil der Bootloader, die Lasten der ersten Bootloader, die Lasten der Os ...

Hinzugefügt nach 5 Minuten:

Dies ist die Zeit, wenn rkodaira sollte Dump seiner 4550 für die 0-Ebene Bootloader. (mit einer großen Hoffnung, dass es nicht ...)

Rkodaira Wir brauchen Sie Lächeln
Zurück zum Anfang
albert22



Beitritt: 20. Jul 2004
Beiträge: 95
Geholfen: 3


Post 03 Apr 2006 22:46 Re: Projekt zu ersetzen CY7C64613 in der ICD2

Ich habe die Analyse ein Ausdruck, dass ich mich mit der BL010101. und finden Sie einige Dinge.
Es scheint zu akzeptieren, 5 Befehle kommen entweder aus der PSP oder der USART.
0x55 Code ab 0x0010.
0x56 Load hex (dieser scheint mehr Sub)
0x5a sendet die Daten 0x01 0x01 0x03 (Version des BL?)
Zwei weitere Befehle einfach auf die Fehler-und Besetzt-LEDs und hängt in einer Schleife inffinite.

Die folgenden Routinen sind mit dem, was ich als "Last-Hex"-Befehl:

In einem anderen Routine der BL sendet den folgenden String 0x5b "0810C9", 0x5d
Weitere Antworten sendet eingebettet in den folgenden String 0x5b "0A000", U, 0x31, U, 0x5d. (U, wo zu sein scheint 0x31, 0x34, 0x36 und 0x37).

I didnt haben viel Zeit, um mit der Analyse. Ich sah weder das USB-Überwachung, die gebucht, weil bei einer Im Cyber. Aber ich denke, diese Daten sollten verpackt in die USB-Kommunikation
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 03 Apr 2006 23:30 Projekt zu ersetzen CY7C64613 in der ICD2

Albert,

Ich habe die serielle comm gegenüber dem USB, USB verwendet einen Wrapper durch die serielle Sache.
Es scheint, es nutzt EP1-Port für die Kontrolle (es ist OUT und IN) und EP2 als Daten-Port, nur in (ICD-> pc).
Zurück zum Anfang
albert22



Beitritt: 20. Jul 2004
Beiträge: 95
Geholfen: 3


Post 05 Apr 2006 6:39 Re: Projekt zu ersetzen CY7C64613 in der ICD2

Hier sind meine Fortschritte mit der BL
Es gab keine solche Sub. Die Last-Hex-Befehl nur die Hex-Daten und schreibt die Daten in das Programm-Speicher 2 Bytes zu einer Zeit. Es prüft, für verschiedene Fehler, einschließlich der Auswahl der Adresse. Ap. zu vermeiden, Verstärkung in die BL-Programm. Dies bestätigt, dass die BL ansässig ist immer auf der 877.
Die [0A000 ", U, 0x31, U]. (2. U ist die erste U 1) ist unwahrscheinlich, zu sehen, weil es sich um eine Fehlermeldung. Fehler sind: Bad-Format, Prüfsumme, Bad-Adresse und EEPROM Schreibfehler .
Die Routine wartet auf 16 Zeichen beginnend mit einem 0x3c ('<') und endet mit einem 0x3e ('>'). Diese 16 Zeichen enthalten, die Header-Adresse, Länge und eine Prüfsumme für die Daten, die in ASCII.
Wenn der Kopf richtig Ap. BL die Antworten mit "[0810C9]"
Die Daten nach einer Cames 0x7B
Dieses Format scheint anders zu sein, von einem Intel-Hex-Format.

Zedman.
Können Sie so etwas wie dieses erkannt in den RS232 -
Morgen möchte ich auf meinem Haus und in der Lage zu installieren hdd, um die Protokolle und sehen, ob ich kann jede Hilfe.
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 05 Apr 2006 12:17 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: MPLAB ICD2-Protokoll icd2.dll icd2w2k.sys mplbcomm.dll

Ich bin mit diesem USB-geklebt ist. Und ich bin traurig.

Ich weiß nicht, was als nächstes zu tun ist. Ich verbrachte eine Menge Zeit Debugging der icd2.dll.

Das Problem ist: Ich kann nicht senden, auch ein Byte zurück zur MPLAB.

Ich werde erklären, was ich bis jetzt gefunden, obwohl niemand wirklich interessiert (nur greifen wollen, die Sache abgeschlossen). (Ausnahme: Albert, Kripton, rkodaira, Silvio und die Jungs in diesem Thread)

So, MPLAB ICD2 kommuniziert mit dem auf diese Weise:

[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 Gerät]

Wenn Sie USB-Typ-Verbindung wird das Gerät fragen Schlagwort von der ICD2 und Kontrollen für die Produkt-Version Wort, wenn es als 0x0003 Es ist ein Cypress basiert ICD2, wenn es als 0x0010 Es ist ein 4550 auf der Basis. Wenn 0x0010 gefunden, als sie sagt, was ich schon gebucht, bevor das Betriebssystem in der ICD2 muss aktualisiert werden. Es ist interessant, dass, wenn die Version (0100) in den Dateinamen des OS.bin wird geändert, um FFFF als überspringt diesen Schritt, und überprüft die Bootloader-Version. Hier musste ich Patch ICD2.dll, um es versuchen, um die Datei BL.bin-Version zu, es ist sogar fest, dass es auf FFFF es gewohnt Versuch, ein Upgrade, das ist der Grund, warum ich es gepatcht (Set fest FFFF zu senken), so dass nun sagt, was ich zu mentoined vor: die BL-Version zu alt ist, aber es kann nicht aktualisiert werden, während es aktiv ist.

Okay. Ich habe ein kleines prog Bootloader von der Probe, mit der richtigen Deskriptoren und zu versuchen, die Kommunikation mit MPLAB, um das Protokoll zu entschlüsseln und an das BL in den neuen 4550 ICD2.
ICD2 dass Kripton verwendet, (Zypresse-Version) wird 7 / IN Endpunkte, sondern nach der Protokolle verwendet sie nur für EP1 IN / OUT und EP2 für IN. (OUT bedeutet PC-> Device)
Es scheint, wird die USB-spezifische Befehle und Daten über EP1, und zurück auf EP1, und sendet die Bytes gelesen von der ICD2's 877 mit getrennten Endpunkt EP2 in.

Wenn MPLAB versucht th OS.bin um die Verbesserung des FW os getUSBdescriptor es eine Aufforderung an die Kernel-Treiber, und sendet einen Befehl 0x12 Bytes lang mit DeviceIoControl Befehl. Ich debuggt, es kommt auf den 4550 erfolgreich.
MPLAB als eine GetStatus Anruf, und es scheint, aus der die Parameter, dass es erwartet, 0x08 Bytes Daten zurück.
Ich habe meine Puffer mit 8 Bytes, und das Eigentum an SIE. Aber es nie sendet, dass 8-Byte zurück (es erscheint nicht in USBMon). Nur wartet.
Es gibt viele Dinge.
Vielleicht bin ich st falsch mit dem Setup von 4550, aber ich versuchte es mit einem anderen progs und es funktioniert, können Sie Bytes zurück.
Ich weiß, dass der Host muss und in der Anwendung Command zu vermieten das Gerät senden, was sie will.
Aber wenn ich gedebuggt MBLBCOMM, ich sah, dass der Befehl DeviceIoControl nicht!
Ich tought, dass vielleicht einige Intelligenz wurde in der. Sys-Datei, und es fällt das Paket, weil es die falsche Inhalte, aber ich denke, es sollte eine höhere Aufgabe.
Wenn ich zu Hause werde ich die GetLastError Wert.


Jeder hat eine Vorstellung davon, wie kann ich sehen, ob ein im Paket verschickt, oder wie kann ich auf?
Zurück zum Anfang
Kripton2035



Beitritt: 19. Jul 2001
Beiträge: 482
Geholfen: 15
Ort: Earth


Post 05 Apr 2006 16:59 Projekt zu ersetzen CY7C64613 in der ICD2

können Sie sich an eine 877 bis das PSP-Port des 4550 zu sehen, was kommt durch, und das 877-Programm mit dem Bootloader haben wir? kann die Bytes Sie warten aus dem EP2, so dass die 877?

Wollen Sie mir, um eine weitere Log-Datei einer genauen Zustand? durch die Art und Weise ist es sicher, dass Sie brauchen eine rokaida Protokoll mit seinen 4550 ICD2 ..

PS: Ich bin nicht interessiert an diesem Projekt .. Lächeln Ich bin nur neugierig! Ich habe bereits ein USB-ICD2! Lächeln
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 05 Apr 2006 20:08 Projekt zu ersetzen CY7C64613 in der ICD2

Dank Kripton,

Ich werden Sie benachrichtigen, wenn ich mehr Dump Lächeln , Es ist ein wenig komplexer, als nur durch die Bytes auf 877 und zurück, es hat ein Protokoll Wrapper auf.
Was Sie gesagt haben, war sehr hilfreich, aber rkodeira wont sacrify seines neuen ICD2 ... Lächeln Wenn er möchte, als mit der Müllkippe seiner OS Update würden das Protokoll auch ...
Zurück zum Anfang
Kripton2035



Beitritt: 19. Jul 2001
Beiträge: 482
Geholfen: 15
Ort: Earth


Post 05 Apr 2006 22:09 Projekt zu ersetzen CY7C64613 in der ICD2

Nun, ich glaube, er braucht keine zu sacrify seine ICD2! nur einige Deponien mit usbmon wie ich .. hoffentlich mein ICD2 ist noch!
Zurück zum Anfang
albert22



Beitritt: 20. Jul 2004
Beiträge: 95
Geholfen: 3


Post 05 Apr 2006 22:16 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: ICD2 laden Hex-Befehl

Ich kann nicht installiert werden HHD überwachen, um zu sehen, die Protokolle, weil ich nur zu Hause W98.
Können Sie exportieren Dump des OS Download einer. Txt, für mich?
-------
Wie die CY setzt die 877?
Es ist ein Signal (Pin 43) auf der Basis von Q1, dessen Kollektor ist MCLR. Aber das geht an einen Anschluss namens PROG. Ich komme jetzt klar, dass dieses Signal sollte auf die 877 zu.
Wir müssen wissen, welche USB-Kommando setzt die 877. Kann es an einem der Endpunkte Kontrolle?
Ich weiß nicht, was ist die Funktion dieser PROG-Anschluss. aber die zusätzliche Endpunkte können in Verbindung stehen.
----------
Einer der OS geladen, um die ICD2 zu sein scheint: ICD01020405.hex Ich habe versucht, disassemby, aber ich kann nicht den Disassembler an die Stelle der Hex-Adressen mit den Namen der Register. Es wird mehr Zeit in Anspruch nehmen, um herauszufinden, wie es funktioniert.
Eine interessante Tatsache ist, dass Code beginnt mit der 0x0010. Denken Sie daran, dass die BL fordert diese Adresse mit dem Befehl ausführen.

Der BL-Version von MPLAB ist 01.01.01.00 das geht recht gut mit dem BL-Kommando die Antworten 01,01,01,03
---------
Es gibt keine DPot (MCP41xxxx) in der brasilianischen ICD. Wie kann sie Vpp?
Die meisten der Klone haben eine feste Vss. Heißt das, dass die brasilianischen ICD ist nur ein Low-Cost-Klon und nicht die neue ICD2? I dont think Mikrochip, dass sich für eine feste VPP. Wenn es eine andere Methode zur Kontrolle der VPP, andere als die DPot müsste Firmware-Änderungen von der ICD-OS. Die alte OS nicht in die neue. Das kann dazu führen, dass die DLL ist die Version.
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Beiträge: 294
Geholfen: 2


Post 05 Apr 2006 22:32 Projekt zu ersetzen CY7C64613 in der ICD2
Tags: MPLAB ICD2-Protokoll icd2w2k.sys icd2w2k Download 4550 Bootloader schreiben icd2w2k.sys Download Download icd2w2k

Ich glaube nicht, dass wir mit allem in Bezug auf die Schaltung oder des Protokolls oder der Verbindung zwischen 877 und 4550 noch nicht. Ich denke, Alles, was wir brauchen, ist in der 4550 Kästen mit MPLAB.
Wir schreiben ein Bootloader mit dem icd2w2k.sys, um die OS.bin heruntergeladen, und nach, dass wir scracth unseren Köpfen, wie die 877 angeschlossen ist.

Hinzugefügt nach 5 Minuten:

In ICD2br verwendet eine andere Art von Chip, das die Vss. Rkodaira mentoined, überprüfen Sie die Beiträge vor.
Zurück zum Anfang
silvio



Beitritt: 31. Dezember 2001
Beiträge: 800
Geholfen: 90


Post 06 Apr 2006 2:36 Re: Projekt zu ersetzen CY7C64613 in der ICD2
Tags: icd2w2k.sys icd2w2k Download 4550 Bootloader schreiben icd2w2k.sys Download Download icd2w2k

Zedman schrieb:

Wir schreiben ein Bootloader mit dem icd2w2k.sys, um die OS.bin heruntergeladen.


Ja, das ist der Hauptgrund dafür, weshalb ich gesagt habe, dass dissasembling CY fw ist es nutzlos, so lange, wie wir das Betriebssystem und der BL-bin-Datei von Microchip. Um Codierung von Grund auf neu für 4550 und simulieren die CY FW wäre zeitaufwändig und wertlos.
Das ist zedman Ich schätze die Bemühungen.

Aber manchmal kann ich nicht helfen, mich zu fragen, dieser dumme Frage: Wenn der BL kann nicht aktualisiert werden, während es aktiv ist, was der Microchip ICD2 Designer Konzept für die Aktualisierung? Parallel Programmierer vor dem Löten 4550? Oder durch ICSP bin mit einem sauberen Image heruntergeladen, nachdem Boot-Block gelöscht?
Wenn rkodaira finden, dass die CPB und EBTRB Bit gelöscht werden Crying or Very sad , then how can OS.bin be loaded in 4550 ? I start asking like you : why did they supplied the boot image ?
Or, as Jay.slovak said "the string is readable, just the code does nothing" because it's encrypted and makes sense only for original boot code.
So, the only solution is to simulate the 4550's bootloader and get the mirror bin image of OS ?
Zurück zum Anfang
albert22



Joined: 20 Jul 2004
Posts: 95
Helped: 3


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

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

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

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

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

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

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

They supplied the BL010101.hex which needs to be programmed at the factory for the ICD to work.[/quote]
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


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

Silvio,

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

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

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

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

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

Albert,

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



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


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

Hi guys !

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

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

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

Added after 15 minutes:

One more thing:

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



Joined: 20 Jul 2004
Posts: 95
Helped: 3


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

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



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


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

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


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

zedman needs a log of a real 4550... my cypress clone doesnt give all he needs...
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


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

It can be exported from USBMon to HTML format, but I have only serial ICD2.
Zurück zum Anfang
Brem



Joined: 06 Apr 2006
Posts: 36


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

Hi group,

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

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

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

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

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

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

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

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

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



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



Joined: 20 Jul 2004
Posts: 95
Helped: 3


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

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

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

Brem,
Great. I was just at the routines that handle connection with the ICD once the OS is loaded. Thanks.
Zurück zum Anfang
Zedman



Joined: 13 Oct 2003
Posts: 294
Helped: 2


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

Hey Brem!

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

Quote:

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



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

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

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

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

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

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

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

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

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



the 3rd DeviceIOControl returns failed.

I can't even remeber how my wife look like... Neutral
Zurück zum Anfang
Brem



Joined: 06 Apr 2006
Posts: 36


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

Hi Zedman,

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

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

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

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



Joined: 13 Oct 2003
Posts: 294
Helped: 2


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

Brem,

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

HELP ME PLEASE!

Code:

HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
I reply with 8 x 0
DEV->HOST: 00 00 00 00 00 00 00 00 00
Zurück zum Anfang
Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrollers -> Project to replace CY7C64613 in the ICD2
Page 3 of 61 Alle Zeiten sind GMT 2 Stunden
Goto page Previous 1 , 2 , 3 , 4 ... 59 , 60 , 61 Next
Jump to page:


Missbrauch | | Administrator | | Moderatoren | | Unterstützen Sie uns | | sitemap
Thema RSS