| Författare | Meddelande |
|---|
Kripton2035
Anställd: 19 juli 2001 Inlägg: 480 Hjälpt: 15 Ort: Earth
| 03 april 2006 8:28 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| | predrage skrev: | Mina vänner jag inte lyckas med planeringen ICD2_4550_BOOT_0180.BIN till 4550. I'v försökte öppna bin-filen med winpic 800 programvaran men det misslyckades. I tryed för att öppna den med alternativet "alla filer" under "filtyper" eftersom det inte finns något direkt stöd för bin-filer. ICprog ha som stöd (för att öppna bin filer), men kan inte programmera 4550. I själva verket finns det ingen 4550 i enhetens listan. Vad ska jag göra härnäst? Några förslag? Jag är bara en nybörjare men jag har goda vilja att hjälpa till. Ledsen för min dåliga engelska. |
byta namn på. BIN till. HEX och winpic kommer att öppna den! ibland en massa filer. BIN i verkligheten är Intel. hex! att vara säker på att öppna filen med notepad, om den innehåller rader som börjar med ":" byt namn till. hex och öppna den med winpic .. om det är skräp, så en bin2hex måste användas för att öppna den. |
|
| Tillbaka till toppen | |
 |
narccizzo
Anställd: 20 januari 2006 Inlägg: 173 Hjälpt: 4 Ort: PATZCUARO, Michoacán, MEXIKO
| 03 april 2006 9:42 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Dessa är de två filer bin omvandlas till hex har jag öppnat bin-filer med IC-PROG programvara sedan jag spara filerna i hex-format, om du tar en titt på dessa filer kan du se en läsbar string "Microchip Tecnology ICD2 USB Device icd2 usb" i adressen 0x0ee7 för boot.hex fil och samma sträng i 0x0b8e för os.hex fil, jag dont har en disassembler att undersöka mer i detalj här filer, men något säger mig att dessa två filer är allt vi behöver.
BR Narccizzo
|
|
| Tillbaka till toppen | |
 |
Jay.slovak
Anställd: 23 mars 2006 Inlägg: 11
| 03 april 2006 11:17 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| | narccizzo skrev: | Dessa är de två filer bin omvandlas till hex har jag öppnat bin-filer med IC-PROG programvara sedan jag spara filerna i hex-format, om du tar en titt på dessa filer kan du se en läsbar string "Microchip Tecnology ICD2 USB Device icd2 usb" i adressen 0x0ee7 för boot.hex fil och samma sträng i 0x0b8e för os.hex fil, jag dont har en disassembler att undersöka mer i detalj här filer, men något säger mig att dessa två filer är allt vi behöver.
BR Narccizzo |
Är du säker på att du har konverterat filerna korrekt? Om jag importera dem till MPLAB, koden är inte meningsfullt, allt det är bara att gå igenom programmet minne och gör NOPs. Inget användbart som händer i både uppstart och OS HEXs. Även config bitar är olika i de båda filerna! |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 03 april 2006 11:19 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Albert,
kärnan föraren (s) förväntar sig, det Cypress kommer att ansluta på en annan vid / pid när firt ansluten, och efter loader sys nerladdningar det är FW den kommer igen som en annan vid / pid så andra sys samtalen till det. Vi måste genomföra endast den andra en. Iam @ work så jag kan inte göra någonting här väntar hårda tänka ... |
|
| Tillbaka till toppen | |
 |
silvio
Anställd: 31 december 2001 Inlägg: 800 Hjälpt: 90
| 03 april 2006 11:31 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: mplab protokoll icd2 Cypress disassembler disassembler Cypress |
|
| Hej Zedman,
it's a must to understand what's under cover. Beträffande CY hex fil det är inte bara en fråga om god disassembler som vet cypress chip, men läsning av 436 sidor EZ-USB FX TechRefManual det är ett måste för att förstå vad som finns under luckan. Och jag tror inte du har tid för detta. Men om du inte är bekant med 8051 opcodes, analysera koden kommer att ta tid. (Jag vet att du familar med PIC sådana) with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Jag kan ersätta alla förekomsten av MOV DPTR, # LXXXX med lämpliga värden från CY7C64613 register 0x7800-0x7FFF men du kommer definitivt att hamna vrida sidor TechRefManual söker definitioner. Förutom att det skulle vissa hur svårt tilldela bitar namn som anges eller tydligt i programmet, så länge de inte är mappad i SFR rymden (som slutar på 0 eller 8). with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Det är lätt att ersätta MOV DPTR, # L7FB4 med MOV DPTR, # EP0CS men det är svårt att säga SETB HSNAK på grund av ovanstående skäl.
and EP0STAL L which are affected in the bellow code at 0x03E2. Låt oss ta exemplet bitar HSNAK och EP0STAL L som berörs i nedanstående kod på 0x03E2. | Kod: | L03E2: LCALL L0FBE JNC L03EE MOV DPTR, # L7FB4 MOVX A @ DPTR ORL A # 01H, någon form av SETB EP0STALL MOVX @ DPTR, A L03EE: MOV DPTR, # L7FB4 MOVX A @ DPTR ORL A # 02h; något slags SETB HSNAK MOVX @ DPTR, A RET
L0FBE: SETB C RET
|
Ta till exempel (CP_1.asm) koden rader som börjar med offset 0x0100 (en subrutin anropas från 0x05FA), den första koden linje används immediatelly nedan vektor avbryta tabellen På RAM 0x7FE9 hittar du 2:a byte av 8 bytes USB SETUP paketdata (se sidan 215 table9-1), vilket innebär bRequest området (se tabell 9-2).
| Kod: | L0100: MOV DPTR, # L7FE9 MOVX A @ DPTR JNZ L0109 LJMP L029B, om bRequest = GetStatus hoppa till 0x029B L0109: DEC A JNZ L010F LJMP L0317, om bRequest = Rensa Feature, hoppa till 0x0317 L010F: ADD A, # 0FEh JNZ L0116 LJMP L038E, om bRequest = Set Feature, hoppa till 0x038E L0116: ADD A, # 0FBh JNZ L011D LJMP L0295, om bRequest = Få Konfiguration hoppa till 0x0295 L011D: DEC A JNZ L0123 LJMP L028F, om bRequest = Set Konfiguration hoppa till 0x028F L0123: DEC A JNZ L0129 LJMP L0283, om bRequest = Få Interface, hoppa till 0x0283 L0129: DEC A JNZ L012F LJMP L0289, om bRequest = Set Interface, hoppa till 0x0289 L012F: ADD A # 05h JZ L0136 LJMP L03E2, om bRequest = inget av ovanstående, då bitar HSNAK och EP0STALL av EP0CS kontroll & status register och ; sedan RET på 0x05FD ; L0136: LCALL L0F7A, om bRequest = Få deskriptor, LCALL 0x0F7A där JC L013E, carry bit är satt som standard, så hoppa till 0x013E LJMP L03EE, om ens 0x0F7A transportera skulle vara 0 som standard, som bit HSNAK ; av EP0CS kontroll & status register och RET på 0x05FD ; L013E: MOV DPTR, # L7FEB; här eftersom bRequest var en Get deskriptor MOVX A @ DPTR; därmed kontrollera WValueH gäller USB SETUP paketkopplade ADD A, # 0FEh JZ L015F, om wValueH var 0x02 hoppa till 0x015F DEC A JZ L0190, om wValueH var 0x03 hoppa till 0x0190 ADD A, # 02h JZ L0150, om wValueH var 0x01 hoppa till 0x0150 LJMP L0279, om wValueh är annorlunda antingen 0x01 eller 0x02 eller 0x03 sedan ; bitar HSNAK och EP0STALL av EP0CS registrera och RET på 0x05FD ; L0150: MOV A, 0Ch; här eftersom wValueH var 0x01, så belastningen SUDPTR globala USB register MOV DPTR, # L7FD4, med värdet 0x0C0D, ställ sedan in lite HSNAK av EP0CS och RET på 0x05FD MOVX @ DPTR, A MOV A, 0Dh MOV DPTR, # L7FD5 MOVX @ DPTR, A LJMP L03EE L015F: MOV DPTR, # L7FEA, titta nu på wValueL området USB SETUP paketkopplade ; ; ; ; , och så vidare ...................
|
port2: Microchip MPLAB ICD2 Fw client Eller detta uppslagstabell i offset 0x0622 som matchar Kripton2035 port2: Microchip MPLAB ICD2 Fw klient
| Kod: | Tabell 5-9. USB standardenhet deskriptor
RAM Värde Offset Fält Beskrivning
0622 0x12 0 bLength Längd denna deskriptor = 18 bytes 0623 0x01 1 bDescriptorType deskriptor Typ = Anordning 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 klass (FF är leverantörsneutrala Särskilda) 0627 0xFF 5 bDeviceSubClass Anordning underklass (FF är leverantörsneutrala Särskilda) 0628 0xFF 6 bDeviceProtocol Anordning protokoll (FF är leverantörsneutrala Särskilda) 0629 0x40 7 bMaxPacketSize0 maximala paketstorleken för EP0 = 64 bytes 062A 0xD8 8 idVendor (L) Vendor ID (L) Microchip Technology = 04D8H 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) Anordning Releasedatum Antal (BCD, L) 062F 0x00 13 bcdDevice (H) Anordning Release Antal (BCD, H) 0630 0x00 14 iManufacturer Tillverkare Index String = Ingen 0631 0x00 15 iProduct Produktindex String = Ingen 0632 0x00 16 iSerialNumber Serienummer Index String = Ingen 0633 0x01 17 bNumConfigurations Antal Konfigurationer i detta interface = 1
Tabell 5-10. USB Standardkonfigurationen deskriptor
RAM Värde Offset Fält Beskrivning
0634 0x09 0 bLength Längd denna deskriptor = 9 bytes 0635 0x02 1 bDescriptorType deskriptor Typ = Konfiguration 0636 0x74 2 wTotalLength (L) Total längd (L) Inklusive Interface och Endpoint Deskriptorer = 116 0637 0x00 3 wTotalLength (H) Total längd (H) 0638 0x01 4 bNumInterfaces antal gränssnitt i detta Konfiguration 0639 0x01 5 bConfigurationValue Konfiguration värde som Set_Configuration Begär att välja Konfiguration 063A 0x00 6 iConfiguration Index String beskriver denna Konfiguration = Ingen 063B 0x80 7 bmAttributes Attribut - Bus-Powered, nr Wakeup 063C 0x4B 8 MaxPower Maximal effekt - 150 mA
Tabell 5-11. USB Standard Interface 0, Alternate Ställa 0 deskriptor
RAM Värde Offset Fält Beskrivning
063D 0x09 0 bLength längd gränssnittet deskriptor 063E 0x04 1 bDescriptorType deskriptor Typ = Interface 063F 0x00 2 bInterfaceNumber Zero-baserade Index denna Interface = 0 0640 0x00 3 bAlternateSetting Alternate Ställa Value = 0 0641 0x0E 4 bNumEndpoints Antal endpoint i denna Interface (Ej Counting EPO) = 14 0642 0xFF 5 bInterfaceClass Interface tCLASS = Vendor Särskilda 0643 0xFF 6 bInterfaceSubClass Interface underklass = Vendor Särskilda 0644 0xFF 7 bInterfaceProtocol Interface protokollet = Vendor Särskilda 0645 0x00 8 iInterface Index till String deskriptor för detta interface = Ingen
Tabell 5-14. Standard Interface 0, Alternate Inställning 1, Bulk Endpoint Deskriptorer
RAM Värde Offset Fält Beskrivning
0646 0x07 0 bLength längd denna endpoint deskriptor 0647 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0648 0x01 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = OUT1 0649 0x02 3 bmAttributes XFR Typ = BULK 064A 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 064B 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 064C 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
064D 0x07 0 bLength längd denna endpoint deskriptor 064E 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 064F 0x02 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = OUT2 0650 0x02 3 bmAttributes XFR Typ = BULK 0651 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0652 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0653 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0654 0x07 0 bLength längd denna endpoint deskriptor 0655 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0656 0x03 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = OUT3 0657 0x02 3 bmAttributes XFR Typ = BULK 0658 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0659 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 065A 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
065B 0x07 0 bLength längd denna endpoint deskriptor 065C 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 065D 0x04 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = OUT4 065E 0x02 3 bmAttributes XFR Typ = BULK 065F 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0660 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0661 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0662 0x07 0 bLength längd denna endpoint deskriptor 0663 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0664 0x05 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = OUT5 0665 0x02 3 bmAttributes XFR Typ = BULK 0666 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0667 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0668 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0669 0x07 0 bLength längd denna endpoint deskriptor 066A 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 066B 0x06 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = OUT6 066C 0x02 3 bmAttributes XFR Typ = BULK 066D 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 066E 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 066F 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0670 0x07 0 bLength längd denna endpoint deskriptor 0671 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0672 0x07 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = OUT7 0673 0x02 3 bmAttributes XFR Typ = BULK 0674 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0675 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0676 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
RAM Värde Offset Fält Beskrivning
0677 0x07 0 bLength längd denna endpoint deskriptor 0678 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0679 0x81 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = IN1 067A 0x02 3 bmAttributes XFR Typ = BULK 067B 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 067C 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 067D 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
067E 0x07 0 bLength längd denna endpoint deskriptor 067F 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0680 0x82 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = IN2 0681 0x02 3 bmAttributes XFR Typ = BULK 0682 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0683 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0684 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0685 0x07 0 bLength längd denna endpoint deskriptor 0686 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0687 0x83 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = IN3 0688 0x02 3 bmAttributes XFR Typ = BULK 0689 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 068A 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 068B 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
068C 0x07 0 bLength längd denna endpoint deskriptor 068D 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 068E 0x84 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = IN4 068F 0x02 3 bmAttributes XFR Typ = BULK 0690 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0691 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0692 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
0693 0x07 0 bLength längd denna endpoint deskriptor 0694 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 0695 0x85 2 bEndpointAddress Endpoint Direction (1 ligger i) och adress = IN5 0696 0x02 3 bmAttributes XFR Typ = BULK 0697 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 0698 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 0699 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
069A 0x07 0 bLength Längd för denna endpoint deskriptor 069B 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 069C 0x86 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = IN6 069D 0x02 3 bmAttributes XFR Typ = BULK 069E 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 069F 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 06A0 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
06A1 0x07 0 bLength längd denna endpoint deskriptor 06A2 0x05 1 bDescriptor Typ deskriptor Type = Endpoint 06A3 0x87 2 bEndpointAddress Endpoint Direction (1 ligger i) och Adress = IN7 06A4 0x02 3 bmAttributes XFR Typ = BULK 06A5 0x40 4 wMaxPacketSize (L) Max Packet Size = 64 Bytes 06A6 0x00 5 wMaxPacketSize (H) maximala paketstorleken - Hög 06A7 0x01 6 bInterval Undersökningar Intervalltiden i millisekunder
som sedan följdes av unicode form av noll slutade string "Microchip Technology ICD2 USB Device"
|
Men om du får problem med 4550 bin, jag kan försöka hjälpa genom att lägga till kommentarer i CY asm filen. |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 03 april 2006 17:10 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: icd2.dll |
|
| Hej Silvio,
tack för infos, länge sedan jag var tvungen att analysera en bin-fil som kommer från ett EPROM chip. Jag gjorde inte ens något bearbetningsföretaget typ eller krets. Men jag var tvungen att hitta hur man behandlar ett minneskort och det är uppgifter. Jag antog att det är en 8051 typ av chip och försökt en hel del disassemblers och slutade med en 80C542 (jag skränande minns som en var det exakt) Jag kom på det från hamnen nummer och hur koden behandlar enskild hamn stift. Men det tog 2 veckor dag och nattarbete för mig, mycket läsning / debugging / lärande. Det är därför jag ville ha en monteringsföretag vad som är kapabel att göra de saker du nämnde i stället mig ...  Tack igen Silvio.
-----------------------------
Nu börjar tro på er alla, enligt bin-filer. Jag gjorde en forskning i ICD2 dll och fick reda på att det kräver GETUSBDESCRIPTOR och kontroller nummer i deskriptor och om det matchar nyare version ICD2 än jag skrev i min 4550: s deskriptor än det gör en send4550image ringa! Och det finns beskrivningar i bin filer identisk med en Kripton upp. En sak jag inte förstår är varför de levererat boot image? Och varför ICD2.dll försöker ladda ner denna fil? Om jag kommer hem, jag ska försöka ställa in mina deskriptorer för att matcha en jag hittade i papperskorgen och kommer att försöka MPLAB på det.
Jag tror att vi närmar sig! 
Läggas till efter 46 minuter:
Och det finns en magisk sak i första btyes över uppstartsprocessen bin: MCHP (mikrochip?) Jag sökte på det, om det senare (efter belastning) ersätter dessa med verkliga ingång GOTO eller st, men i ICD2.dll inte.
Läggas till efter 3 timmar 34 minuter:
Kolla här:
Jag gjorde vad jag sagt tidigare, bara ställa in versionsnumret till nyare man förväntar och MPLAB försöker sända OS! (Självklart min FW är inte en starthanterare)
| Kod: | MPLAB ICD 2 Redo Ansluta till MPLAB ICD 2 ICD0289: Det går inte att återskapa program ICD2 USB OS firmware. ICD0021: Det går inte att ansluta med MPLAB ICD 2 MPLAB ICD 2 Redo
|
På något starthanteraren bör arbeta, jag ska försöka göra något på kvällen. |
|
| Tillbaka till toppen | |
 |
narccizzo
Anställd: 20 januari 2006 Inlägg: 173 Hjälpt: 4 Ort: PATZCUARO, Michoacán, MEXIKO
| 03 april 2006 18:43 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Hej JaySlovak Nej, Im inte säker, jag bara öppnat bin och spara den i hex-format. |
|
| Tillbaka till toppen | |
 |
Jay.slovak
Anställd: 23 mars 2006 Inlägg: 11
| 03 april 2006 20:45 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| | narccizzo skrev: | Hej JaySlovak Nej, Im inte säker, jag bara öppnat bin och spara den i hex-format.  |
Japp, det är konstigt eftersom strängen är lättläst, precis koden ingenting |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 03 april 2006 22:25 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: icd2.dll |
|
| Goda nyheter efter 2 timmar för felsökning,
ICD2.dll inte använda båda bin-filer. OS-fil vill bli hämtade endast ICD2s med nya serienummer. Men när du ändrar den version id i filnamnet för OS.bin till * _FFFF.bin än det börjar att se starthanteraren versionen se ut:
| Kod: | Ansluta till MPLAB ICD 2 ICDWarn0062: USB Boot firmware i ICD2 är aktiv och kommunikation med ICD2. Denna firmware är föråldrad och bör uppdateras. Det kan inte uppdateras medan aktiv. Du kan dock fortsätta att fungera med det nuvarande boot firmware om du väljer att göra det. Vill du fortsätta?
|
Om jag trycker på JA här än försöker ansluta till ICD2 själva, och fryser (jag har bara 4550 installerat ännu). Om jag trycker på NO än verkar det som den försöker att uppdatera den, men vi behöver här en bootloader så här, så detta meddelande visas:
| Kod: | ICD0288: Det går inte att återskapa program ICD2 USB Boot firmware. ICD0021: Det går inte att ansluta med MPLAB ICD 2 MPLAB ICD 2 Redo
|
Okej killar, tror tror tror Hur kan vi använda bin att få ett arbetstillstånd starthanteraren till 4550!
Läggas till efter 2 minuter:
Jag har också sammanställt provet starthanteraren med rätt VID / PID men fick samma resultat som med mina 4550.
Läggas till efter 16 minuter:
Det kan vara att vi inte kan få de första inledande första:) en del av starthanteraren som laddas första starthanterare som läser in oss ...
Läggas till efter 5 minuter:
Detta är den tid då rkodaira bör dumpa sin 4550 till 0-nivå starthanterare. (med en stor förhoppning om att inte skyddas ...)
Rkodaira Vi behöver dig |
|
| Tillbaka till toppen | |
 |
albert22
Anställd: 20 juli 2004 Inlägg: 95 Hjälpt: 3
| 03 april 2006 22:46 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Jag har varit att analysera en utskrift som jag har med mig av BL010101. och hitta saker. Det tycks acceptera 5 kommandon kommer antingen från PSP eller USART. 0x55 köra kod som börjar på 0x0010. 0x56 Ladda hex (här verkar ha mer subcommands) 0x5a skickar data 0x01 0x01 0x03 (version av BL????) Två andra kommandon bara att slå på fel och Upptagen lysdioder och hänger i en inffinite loop.
Följande rutiner är relaterade till vad jag kallade "load hex" kommando:
I en annan rutin för BL skickar följande sträng 0x5b "0810C9", 0x5d Andra skickar svar embeded i följande sträng 0x5b "0A000", U, 0x31, U, 0x5d. (där U verkar vara 0x31, 0x34, 0x36 och 0x37).
Jag gjorde så mycket tid att fortsätta med analysen. Jag varken såg USB övervakning som har postat eftersom Im vid en cyber. Men jag tror att dessa uppgifter ska vara förpackade i USB-kommunikation |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 03 april 2006 23:30 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Albert,
Jag kollade den seriella comm kontra USB, USB använder en wrapper via seriell sak. Det verkar som den använder EP1 för kontroll port (det är ut och in) och EP2 som data port, bara i (ICD-> pc). |
|
| Tillbaka till toppen | |
 |
albert22
Anställd: 20 juli 2004 Inlägg: 95 Hjälpt: 3
| 05 april 2006 6:39 Re: Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Här är mina framsteg med BL Det fanns inga sådana subcommands. Belastningen hex kommandot bara tar hex protokoll och skriver data till programmet minne 2 byte i taget. Det kontroller för olika fel inklusive rad adress. Ap. att undvika att trappa till BL programmet. Detta bekräftar att BL är alltid bosatt på 877. De [0A000 ", U, 0x31, U]. (2: a U är den första U 1) Det är osannolikt att ses eftersom det är en felrapport. Fel: dåliga format kontrollsumma, dålig adressintervall och EEPROM skriva fel . Den rutinmässiga väntar på 16 tecken som börjar med en 0x3c ('<') och avslutas med en 0x3e ('>'). denna 16 tecken rubrikinformation innehålla adress, längd och kontrollsumman för de uppgifter som skall skrivas i ASCII. Om rubriken är korrekt Ap. den BL svar med "[0810C9]" Uppgifterna cames efter en 0x7b Detta format verkar vara olika från en Intel hex format.
Zedman. Får du erkänt något sådant i RS232 I morgon wil vara mitt hem och kunna installera hdd att kontrollera loggarna och se om jag kan vara till någon hjälp. |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 05 april 2006 12:17 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: mplab protokoll icd2 icd2.dll icd2w2k.sys mplbcomm.dll |
|
| Jag fastnade med denna USB sak. Och jag är ledsen.
Jag vet inte riktigt vad jag ska göra härnäst. Jag tillbringade mycket tid debugging den icd2.dll.
Problemet är: Jag kan inte skicka med ett byte tillbaka till MPLAB.
Jag ska förklara vad jag har hittat hittills, även om ingen egentligen är intresserade av (bara vill ta det färdiga sak). (Utom Albert, Kripton, rkodaira, Silvio och killarna i denna tråd)
Så MPLAB kommunicerar med ICD2 detta sätt:
[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 enhet]
Om du väljer USB typ sammanhang kommer att be enheten deskriptor från ICD2 och kontroller för produkten version ordet, om det är 0x0003 än det är en Cypress bygger ICD2, om det är 0x0010 än det är ett 4550 grundat ett. Om 0x0010 hittat än säger vad jag har postat före OS i ICD2 måste uppvärderas. Det är intressant att om version (0100) i filnamnet för OS.bin ändras till FFFF än hoppar över detta steg och kontroller starthanteraren version. Här var jag tvungen att plåstret ICD2.dll att få det att försöka kontrollera BL.bin filens version också, det är hårdkodad att även det är inställt på FFFF det wont försöker uppgradera, det är därför jag lappat den (ange hårdkodad FFFF till lägre) så nu säger vad jag mentoined även före det bl versionen är för gammal, men det kan inte uppgraderas, medan det är aktivt.
Okej. Jag gjorde ett litet prog från provet starthanterare, med rätt deskriptorer och försöker kommunicera med MPLAB för att dekryptera protokollet och att emulera BL i den nya 4550 ICD2. ICD2 att Kripton användningsområden (cypress version) innehåller 7 OUT / IN endpoints men enligt loggarna den använder bara EP1 för IN / UT och EP2 för IN. (UR betyder PC-> Enhetshanteraren) Det verkar det sänder USB särskilda kommandon och data via EP1 ut och tillbaka på EP1 i och skickar bytes readed från ICD2 s 877 genom separata endpoint EP2 i.
När MPLAB försöker skicka e OS.bin att uppgradera FW os den utfärdar en getUSBdescriptor samtal till kärnan föraren, och sänder ut en 0x12 bytes lång kommando använder DeviceIOControl kommando. Jag debugged, det anländer framgång till 4550. Than MPLAB frågor en GetStatus samtal, och det verkar från samtalet parametrar som man förväntar 0x08 bytes data tillbaka. Jag in min buffert med 8 byte, och fastställa äganderätten till Sie. Men det aldrig skickar den 8 byte tillbaka (det visas inte i USBMon). Bara väntar. Det kan vara många saker. Kanske jag st fel med installationen av 4550, men jag försökte det med ett progs och det fungerar, kan skicka bytes tillbaka. Jag vet värdlandet måste skicka och som befälhavare för att låta enheten sända vad den vill. Men när jag debugged MBLBCOMM såg jag att DeviceIOControl misslyckades! Jag trodde att kanske en del intelligens byggdes till. Sys fil och det droppar paketet eftersom det är fel innehåll, men jag tycker det ska vara en högre uppgift. När jag kommer hem Jag ska kolla Getlasterror värde.
Alla som har någon aning om hur kan jag se om det fanns ett paket som skickas ut, eller hur kan jag fortsätta? |
|
| Tillbaka till toppen | |
 |
Kripton2035
Anställd: 19 juli 2001 Inlägg: 480 Hjälpt: 15 Ort: Earth
| 05 april 2006 16:59 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| kan du ansluta en 877 till PSP port av 4550 för att se vad som kommer igenom, och programmera 877 med bootloader vi har? kan vara byte du väntar kommer från EP2 varför 877?
vill du att jag ska skicka en loggfil på en exakt skick? av hur det är att du behöver en rokaida log med sina 4550 icd2 ..
PS: jag är inte intresserad av att projektet .. Jag är bara nyfiken! Jag har redan en usb icd2! |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 05 april 2006 20:08 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| Tack Kripton,
Jag kommer att meddela dig när jag behöver mer dumpa , Det är lite mer komplicerat än bara passerar genom byte till 877 och tillbaka, har det ett protokoll täckblad på det. Det du sa var mycket hjälpsamma, men rkodeira wont sacrify hans splitternya ICD2 ... Om han skulle, än med dumpfilen av det är OS uppdateringsprocessen skulle definiera protokollet väl ... |
|
| Tillbaka till toppen | |
 |
Kripton2035
Anställd: 19 juli 2001 Inlägg: 480 Hjälpt: 15 Ort: Earth
| 05 april 2006 22:09 Projekt för att ersätta CY7C64613 i ICD2 | | |
|
| | och jag dont tror att han behöver sacrify hans icd2! bara några tippar med usbmon som jag gjorde .. förhoppningsvis min icd2 fortfarande fungerar! |
|
| Tillbaka till toppen | |
 |
albert22
Anställd: 20 juli 2004 Inlägg: 95 Hjälpt: 3
| 05 april 2006 22:16 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: icd2 belastning hex kommandot |
|
| Jag kan inte installera HHD övervaka att se loggarna eftersom jag bara har w98 hemma. Kan du exporterar en dump av OS ladda ner till en. Txt för mig? ------- Hur CY återställer 877? Det är en signal (pin 43) på grund av Q1 vars Collector är MCLR. Men detta går till en kontakt som kallas PROG. Jag nu inser att denna signal ska gå till 877 också. Vi skulle behöva veta vilka USB-kommando återställer 877. Får man på en av kontrollen effektmått? Jag vet inte vad som är funktionen av denna PROG kontakten. men extra effektmått kan vara relaterade till den. ---------- En av de OS lastade med den ICD2 verkar vara: ICD01020405.hex Jag har försökt att disassemby det men jag kan inte få disassembler att ersätta hex adress med namnet på registren. Det tar mer tid att fundera ut hur det fungerar. Ett intressant faktum är att koden börjar vid 0x0010. Kom ihåg att BL samtal denna adress med köra kommandot.
Den BL version rapporterats av mplab är 01.01.01.00 detta går ganska bra med BL kommando som svar 01,01,01,03 --------- Det finns ingen DPot (MCP41xxxx) i den brasilianska ICD. Hur kan de ställa VPP? De flesta av de kloner som har en fast VPP. Innebär detta att den brasilianska ICD är bara en låg kostnad klon och inte den nya ICD2? I dont tror att mikrochip gick för en bestämd VPP. Om det finns en annan metod för att kontrollera VPP, än DPot det skulle behöva firmware förändringar av ICD OS. Den gamla OS skulle inte fungera i det nya. Detta kan vara orsaken till att DLL kontrollerar versionen. |
|
| Tillbaka till toppen | |
 |
Zedman
Anställd: 13 oktober 2003 Inlägg: 294 Hjälpt: 2
| 05 april 2006 22:32 Projekt för att ersätta CY7C64613 i ICD2 | | | taggar: mplab protokoll icd2 icd2w2k.sys icd2w2k hämta 4550 starthanteraren skriva icd2w2k.sys hämta hämta icd2w2k |
|
| Jag tror inte att vi bör ta itu med allt som har med den krets eller protokoll eller samband mellan 877 och 4550 ännu. Jag tror att allt vi behöver är skrivet i 4550 lådor levereras med MPLAB. Vi borde skriva en starthanterare förenligt med icd2w2k.sys att få OS.bin hämtat, och efter att vi kan scracth våra huvuden hur 877 är ansluten.
Läggas till efter 5 minuter:
I ICD2br använder en annan typ av chip som genererar VPP. Rkodaira mentoined, se inlägg innan. |
|
| Tillbaka till toppen | |
 |
silvio
Anställd: 31 december 2001 Inlägg: 800 Hjälpt: 90
| 06 april 2006 2:36 Re: Projekt för att ersätta CY7C64613 i ICD2 | | | tags: icd2w2k.sys icd2w2k download 4550 bootloader write icd2w2k.sys download download icd2w2k |
|
| | Zedman wrote: | We should write a bootloader compatible with the icd2w2k.sys to get the OS.bin downloaded.
|
Yes, this is the main reason for which I said that dissasembling CY fw it's useless as long as we have the OS and BL bin file provided by Microchip. To start coding from scratch for 4550 and simulate the CY fw would be time consuming and worthless. That's I appreciate zedman's efforts.
However sometimes I can't help myself to ask this stupid question : If the BL cannot be upgraded while it's active, what was Microchip's ICD2 designers approach for upgrade ? In parallel programmer before soldering 4550 ? Or through ICSP with a clean bin image downloaded after boot block erased ? If rkodaira will find that CPB and EBTRB bits are cleared , then how can OS.bin be loaded in 4550 ? I start asking like you : why did they supplied the boot image ? Or, as Jay.slovak said "the string is readable, just the code does nothing" because it's encrypted and makes sense only for original boot code. So, the only solution is to simulate the 4550's bootloader and get the mirror bin image of OS ? |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 4:36 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplab protocol icd2 |
|
| | Quote: | In ICD2br uses another kind of chip which generates the Vpp. Rkodaira mentoined, check the posts before.
| I didnt mean the MIC2175, which is a switching regulator as the MC34063. I was aiming at the DPOT and specifically to its I2C interfase because it requires the support of the firmware in the 877 to set the correct Vpp voltage. As I said before if the new ICD2 relies in other component to change the Vdd, all the firmware needs to change.
May be Rkodaira could check ithe circuit associated with pin 3 (FB) of the MIC2172 to see if vpp can be controlled or it is fixed.
Let me make my statement a little clear. If the Brazilian ICD has no control of Vpp it is highly probable that it is just a clone. In that case there is no warranty that the real new ICD2 is based on a 4550 and a 877. It could be just a 4450 alone for example (why not) in that case the following statement would not be true. | Quote: | | I think ALL we need is written in the 4550 bins supplied with MPLAB. | As we dont know for sure the arquitecture of the new ICD we need to emulate the CY. However chances are that the 4550BINs will still be usefull to solve the USB protocol. I tried to disassemble it today but found nothing coherent yet.
To the question: | Quote: | | why did they supplied the boot image ? | They supplied the BL010101.hex which needs to be programmed at the factory for the ICD to work.[/quote] |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 06 Apr 2006 11:48 Re: Project to replace CY7C64613 in the ICD2 | | | tags: icd2 load hex command |
|
| Silvio,
the BL cannot be upgraded thing was a little trick. Actually MPLAB is set to check the BL's version against 0xFFFF, and if 0xFFFF (it's only a word) is lower than it will try to upgrade the bootloader. So it wont ever get here, because larger number than 0xFFFF cannot be set on a word. So I patched it to skip this test and try to do it, but anyway it's a BUILT IN function in MPLAB! It CAN update the boot image too. I just patched the version check out. But think: it's not accidentaly set to 0xFFFF, they may not want to use this function yet. According to the OS.bin file, if the product version is 0x0010 than it's downloaded all the time. Maybe 0x0010 is the BL's version only, and set to lower when OS will run in it! The OS.bin's version is also checked against 0xFFFF. If it's equals to 0xFFFF it's starts the checking for the BOOT.bin file as I mentoined above.
I'll check how it handles the active check when it complains about "it cannot be upgraded while active".
Another strange thing is if the original bootloader handles the decryption of the OS.bin image, than it will be a nice thing to clone... Anyway there is no processing on the .bin files in the software as I saw.
the DeviceIOControl command returns 0x57: The parameter is incorrect. (ERROR_INVALID_PARAMETER)
If we get the OS.bin downloaded than we can read it back with another icd2 and see how it works.
Albert,
they wont change the 877 firmware. They have a lot of hexs supplied with MPLAB should work with both versions. They may do minor changes, but thats all. Sorry I misunderstood that DPOT thing. The question "Why they supplied the boot image?" I asked was for the 4550_boot.bin file. |
|
| Back to top | |
 |
rkodaira
Joined: 08 Jun 2004 Posts: 332 Helped: 54 Location: Sao Paulo - Brasil
| 06 Apr 2006 14:19 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Hi guys !
Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.
About the Vpp control, I think that there is only the high voltage generator for Vpp and there is another way to control this voltage. I don´t know if the DG411 has this role, and there is a power mosfet also in the circuit.
I don´t think my clone is the new ICD2 from Microchip. I suppose the local manufacturer only made a clone using more available parts and making some changes in the firmware to adequate the new parts. Sorry I cannot make any attempt to read the 18F4550 contents.
Added after 15 minutes:
One more thing:
I tried to build the PICKIT2 programmer (onlu the basic part: the PIC, crystal and some connections) some weeks ago. It has the schematic and "all" the software available for download in the Microchip pages. I bought some 18F2550 and programmed with the firmware provided. I installed the programmer software and connected the hardware to the USB port. The PC recognized it once but the software did not. I think that there is something missing in the package, that blocks the programmer to communicate with the software. Could be the same case be happening with the hex files provided for the ICD2 ? Or in other words: Microchip does´t provide the complete code for the ICD2. |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 18:26 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Please Can somebody export to .txt the USB log files captured by HDD monitor? I cannot install this soft at my home. Otherwise Ill have to wait until next week to read them on my PC at work. I am now studying the protocol between the CY and the 877 OS. If they are too big. A connect log, and a program log would be nice. Thanks |
|
| Back to top | |
 |
Kripton2035
Joined: 19 Jul 2001 Posts: 480 Helped: 15 Location: Earth
| 06 Apr 2006 19:31 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | rkodaira wrote: | Hi guys ! Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.
|
may be you can try this one : they say it works under w98... http://www.perisoft.net/bushound/
zedman needs a log of a real 4550... my cypress clone doesnt give all he needs... |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 06 Apr 2006 20:14 Project to replace CY7C64613 in the ICD2 | | |
|
| | It can be exported from USBMon to HTML format, but I have only serial ICD2. |
|
| Back to top | |
 |
Brem
Joined: 06 Apr 2006 Posts: 36
| 06 Apr 2006 20:22 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplab protocol icd2 icd2 load hex command |
|
| Hi group,
Zedman drew my attention to this thread. I find it very interesting.
Last winter my hobby project was to build an ICD clone on a 2455/2550. I used the CDC firmware for RS232 emulation to connect to MPLAB. I disassambled the 877 firmware and made it more readable with a VB program. As far as I can tell the protocol CY<->877 and the protocol RS232<->877 are the same. There are no USB specific things in the 877 firmware.
I'll try to explain what I learned of the protocol.
MPLAB starts a connection by sending a 'Z'. ICD should reply with some kind of version nr in binary: 0x01,0x01,0x03.
Now MPLAB sends a 'V' if it wants to connect to the bootloader, ICD should reply with a 'v' 'U' if it wants to connect to the OS, ICD should reply 'u'
Next is the version of the ICD hardware, this has to be compatible with the old ICD1, so its different from all other commands: MPLAB send '$7F00\r', ICD replies '02' for ICD2
From here on all commands are send in packets in the form: '<', packet len, command, [params], checksum, '>' all items are sent in hex, packet length is including the <>. An example: '<0801C9>', len=8, cmd=1 (GETFIRMWAREVERSION), no params, checksum=0xC9
Reply's to commands are in the same form, except packed in []. Reply to the above example would be: '[0E0102630102]', len=14, cmd=1 (GETFIRMWAREVERSION), param 2.99.1, checksum=0x02.
Large chunks of data are sent in {} packets : {data [,data..], checksum}. For example the write program command: MPLAB: <184300005DC000000120FF>, len 24, cmd=0x43 (WRITEPROGRAM), program size= 0x05DC, start address=0x0120, checksum = 0xFF ICD: [0843CF], len 8, cmd 0x43, checksum 0xCF MPLAB: {FF3FFF3F.....3C} , data data data.., checksum-0x3C ICD: [0843CF], ack cmd 0x43 again
I used the information from this thread to connect my existing program with the real ICD USB Driver. I got so far that I receive the GETFIRMWAREVERSION command, but my response seems not to be understood. It sends the same command again and then hangs (?) . |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 23:17 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | Quote: | | It can be exported from USBMon to HTML format, but I have only serial ICD2. | Zedman may be you can open the log files that had been posted here and export them to html. No need to have the USB ICD2.
Brem, Great. I was just at the routines that handle connection with the ICD once the OS is loaded. Thanks. |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 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. 
-------------------
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... |
|
| Back to top | |
 |
Brem
Joined: 06 Apr 2006 Posts: 36
| 07 Apr 2006 0:31 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Hi Zedman,
Besides some recognizable data like the 'Z', the 'U' and <0801C9>, I receive packets I don't understand. They are all 18 bytes long, 1st char is 0x00,0x01 or 0x02, 2nd char seems to be some kind of seq.nr, 3rd byte a length.
First packet received is: HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I reply with 8 x 0 DEV->HOST: 00 00 00 00 00 00 00 00 00 Second packet received is: HOST->DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00 Here the first byte 0x01 seems to mean "data incoming", 3rd bytes undicates length. I dont send reply on this packet. Next rcvd is a singe 'Z', I reply with the hardware version HOST->DEV: 5A DEV->HOST: 01 01 03 Next again a packet starting with 0x02, same reply HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DEV->HOST: 00 00 00 00 00 00 00 00 00 then a "data incoming" packet folowed by a 'U', connect to OS HOST-DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00 HOST-DEV: 55 Now MPLAB seems to want 8 bytes so I send a 'u' with 7 zeros DEV->HOST: 75 00 00 00 00 00 00 00
Now comes the tricky part. A packet starting with 0x02 means MPLAB wants data on EP2. HOST-DEV: 02 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DEV-HOST (on EP2!!): 75 DEV-HOST (on EP1): 00 00 00 00 00 00 00 00
And here I get stuck at the moment. MPLAB sends a <0801C9> but my response is ignored. I think from here on the ICD should send all data over EP2. |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 07 Apr 2006 10:51 Project to replace CY7C64613 in the ICD2 | | |
|
| Brem,
Iam a lamer. PLEASE TELL ME how do you reply? How the hell does it work for you? What am I missing? If I set up the shared ram with 0s set the Cnt to 8 and set UOWN bit to SIE, MPLAB wont send me ANY more data, and UOWN never get cleared!! But from this I see u managed it to work!!!
HELP ME PLEASE!
| Code: | HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I reply with 8 x 0 DEV->HOST: 00 00 00 00 00 00 00 00 00
|
|
|
| Back to top | |
 |