| Auteur | Message |
|---|
Kripton2035
Inscrit le: 19 juillet 2001 Messages: 482 A aidé: 15 Location: Earth
| 03 avril 2006 8:28 Re: Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| | predrage a écrit: | Mes amis, je n'ai pas réussi à la programmation ICD2_4550_BOOT_0180.BIN en 4550. I'v essayé d'ouvrir le fichier bin winpic 800 avec le logiciel, mais il a échoué. I tryed de l'ouvrir avec l'option "tous les fichiers" dans "les types de fichiers", car il n'y a pas de soutien direct à des fichiers bin. ICprog qui ont l'appui (pour ouvrir les fichiers bin), mais ne pouvez pas programmer 4550. En fait, il n'y a pas de liste de périphériques en 4550. Que dois-je faire ensuite? Des suggestions? Je ne suis qu'un débutant, mais j'ai de bonne volonté pour vous aider. Désolé pour mon mauvais anglais. |
renommer le fichier. BIN d'. HEX winpic et l'ouvrira! parfois beaucoup de fichiers. BIN, en réalité, sont intel. hexagone! pour être sûr, ouvrir le fichier avec le bloc-notes, si elle contient des lignes commençant par ":" puis à renommer. hexagone et l'ouvrir avec winpic .. si c'est les ordures, puis un bin2hex doit être utilisé pour l'ouvrir. |
|
| Haut de page | |
 |
narccizzo
Inscrit le: 20 Jan 2006 Messages: 173 Helped: 4 Lieu: Patzcuaro, Michoacán, Mexique
| 03 avril 2006 9:42 Re: Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| Ce sont les deux fichiers bin convertie en hexadécimal, j'ai ouvert la boîte de fichiers avec les ic-prog le logiciel puis-je sauvegarder les fichiers au format hexadécimal, si vous jetez un œil à ces fichiers, vous pouvez voir une chaîne de caractères lisible "Tecnology ICD2 Microchip USB Device icd2 usb" dans l'adresse 0x0ee7 pour la boot.hex dossier et la même chaîne dans le 0x0b8e pour la os.hex file, i dont un désassembleur pour explorer plus en détail ces fichiers, mais quelque chose me dit que ces deux fichiers sont tous de ce que nous avons besoin.
BR Narccizzo
|
|
| Haut de page | |
 |
Jay.slovak
Inscrit le: 23 Mar 2006 Messages: 11
| 03 avril 2006 11:17 Re: Projet de remplacer CY7C64613 dans le ICD2 | | |
|
| | narccizzo a écrit: | Ce sont les deux fichiers bin convertie en hexadécimal, j'ai ouvert la boîte de fichiers avec les ic-prog le logiciel puis-je sauvegarder les fichiers au format hexadécimal, si vous jetez un œil à ces fichiers, vous pouvez voir une chaîne de caractères lisible "Tecnology ICD2 Microchip USB Device icd2 usb" dans l'adresse 0x0ee7 pour la boot.hex dossier et la même chaîne dans le 0x0b8e pour la os.hex file, i dont un désassembleur pour explorer plus en détail ces fichiers, mais quelque chose me dit que ces deux fichiers sont tous de ce que nous avons besoin.
BR Narccizzo |
Etes-vous sûr que vous avez converti les fichiers correctement? Si je les importer dans MPLAB, le code n'a pas de sens, elle ne fait simplement par l'intermédiaire du Programme de la mémoire et de faire PON. Rien d'utile qui se passe dans les deux OS de démarrage et HEXs. Même les bits de configuration sont différentes dans les deux fichiers! |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 03 avril 2006 11:19 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| ALBERT,
le pilote du noyau (s) attendent, les cyprès se connecter sur un VID / PID lorsque FIRT connecté, et après le chargeur sys téléchargements c'est fw il reconnecter comme un autre vid / pid si les autres systèmes de négociations de celui-ci. Nous devons mettre en oeuvre que la seconde. Iam @ work je ne peux donc pas faire n'importe quoi s'attendre ici dur thinkin ' ... |
|
| Haut de page | |
 |
silvio
Inscription: 31 décembre 2001 Messages: 800 A aidé: 90
| 03 avril 2006 11:31 Re: Projet de remplacer CY7C64613 dans le ICD2 | | | tags: MPLAB protocole icd2 cyprès désassembleur désassembleur cyprès |
|
| Salut Zedman,
it's a must to understand what's under cover. En ce qui concerne le fichier hex CY ce n'est pas seulement une question de bon désassembleur qui connaît le cyprès puce, mais la lecture des 436 pages EZ-USB FX TechRefManual c'est un must pour comprendre ce qui est sous le couvert. Et je ne crois pas que vous avez le temps pour cela. Néanmoins, si vous n'êtes pas familier avec opcodes 8051, l'analyse du code va prendre du temps. (Je sais que vous êtes familiers avec les PIC) with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Je peux remplacer toutes les occurrence de MOV DPTR, # LXXXX avec les valeurs de CY7C64613 registres 0x7800-0x7FFF mais vous aurez certainement finir par tourner les pages de TechRefManual recherche de définitions. En outre, il serait une façon difficile d'attribuer des noms de bits qui sont définis ou clairement dans le programme tant qu'elles ne sont pas mappées dans l'espace SFR (qui se termine par 0 ou 8). with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Il est facile de remplacer DPTR MOV, MOV # L7FB4 avec DPTR, # EP0CS mais il est difficile de dire SETB HSNAK en raison de ces motifs.
and EP0STAL L which are affected in the bellow code at 0x03E2. Prenons l'exemple HSNAK bits et EP0STAL L qui sont touchées dans le code au-dessous 0x03E2. | Code: | L03E2: LCALL L0FBE JNC L03EE MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 01h; une sorte de SETB EP0STALL MOVX @ DPTR, A L03EE: MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 02h; une sorte de SETB HSNAK MOVX @ DPTR, A RET
L0FBE: SETB C RET
|
Prenez par exemple (CP_1.asm) les lignes de code à partir de compenser 0x0100 (une sous-routine appelée à partir de 0x05FA), la première ligne de code utilisé immédiatement dessous de table vecteur d'interruption À 0x7FE9 RAM, vous pouvez trouver le 2ème octet de 8 octets de données par paquets USB SETUP (voir page 215 table9-1), ce qui signifie bRequest domaine (voir le tableau 9-2).
| Code: | L0100: MOV DPTR, # L7FE9 MOVX A, @ DPTR JNZ L0109 LJMP L029B, si bRequest = getStatus Passer à la 0x029B L0109: DEC A JNZ L010F LJMP L0317, si bRequest = Clair Long, saut à 0x0317 L010F: ADD A, # 0FEh JNZ L0116 LJMP L038E, si bRequest = Feature Set, saut à 0x038E L0116: ADD A, # 0FBh JNZ L011D LJMP L0295, si vous bRequest = Configuration, saut à 0x0295 L011D: DEC A JNZ L0123 LJMP L028F, si bRequest Set = Configuration, saut à 0x028F L0123: DEC A JNZ L0129 LJMP L0283, si vous bRequest = Interface, saut à 0x0283 L0129: DEC A JNZ L012F LJMP L0289, si bRequest = Set Interface, saut à 0x0289 L012F: ADD A, # 05h JZ L0136 LJMP L03E2; si bRequest = none de la ci-dessus, puis HSNAK bits et EP0STALL de EP0CS contrôle et registre d'état et , puis à RET 0x05FD ; L0136: LCALL L0F7A; si bRequest = Get Descriptor, LCALL 0x0F7A où JC L013E; procéder bit est réglé par défaut, ainsi, passer à 0x013E LJMP L03EE; si au 0x0F7A procéder serait 0 par défaut, mis en peu HSNAK ; EP0CS de contrôle et registre d'état et de RET à 0x05FD ; L013E: MOV DPTR, # L7FEB; ici, parce que bRequest a Get Descriptor MOVX A, @ DPTR, donc vérifier la WValueH domaine de l'USB SETUP sachet ADD A, # 0FEh JZ L015F, si wValueH était 0x02 Passer à la 0x015F A DEC JZ L0190, si wValueH est 0x03 Passer à 0x0190 ADD A, # 02h JZ L0150, si wValueH est 0x01 Passer à 0x0150 LJMP L0279; wValueh s'il est différent de l'une des 0x01 ou 0x02 ou 0x03 alors ; HSNAK bits et EP0STALL de registre et EP0CS RET à 0x05FD ; L0150: MOV A, 0CH; ici, parce que wValueH était 0x01, donc chargez SUDPTR mondial USB registre MOV DPTR, # L7FD4; avec la valeur 0x0C0D, puis peu HSNAK de EP0CS et RET à 0x05FD MOVX @ DPTR, A MOV A, 0Dh MOV DPTR, # L7FD5 MOVX @ DPTR, A LJMP L03EE L015F: MOV DPTR, # L7FEA; aller maintenant au domaine de l'USB wValueL SETUP sachet ; ; ; ; , et ainsi de suite ...................
|
port2: Microchip MPLAB ICD2 Fw client Ou cette table de 0x0622 au décalage qui correspondent à la Kripton2035 port2: Microchip MPLAB ICD2 Fw client
| Code: | Tableau 5-9. Default USB Device Descriptor
RAM Offset Valeur Description du champ
0622 0x12 0 blength de cette Descriptor Longueur = 18 octets 0623 0x01 1 bDescriptorType Descriptor Device Type = 0624 0x00 2 bcdUSB (L) USB Specification Version 1,10 (L) 0625 0x01 3 bcdUSB (H) USB Specification Version 1,10 (H) 0626 0xFF 4 bDeviceClass Device Class (FF est spécifique au fournisseur) 0627 0xFF 5 bDeviceSubClass Device Sous-classe (FF est spécifique au fournisseur) 0628 0xFF 6 bDeviceProtocol Device Protocol (FF est spécifique au fournisseur) 0629 0x40 7 bMaxPacketSize0 Taille maximale de paquet pour EP0 = 64 octets 062A 0xD8 8 idVendor (L) Vendor ID (L) = 04D8H Microchip Technology 062B 0x04 9 idVendor (H) Vendor ID (H) 062C 0x01 10 idProduct (L) ID de produit (L) ICD2 = 8001H 062D 0x80 11 idProduct (H) ID de produit (H) 062E 0x03 12 bcdDevice (L) Nombre de périphériques de sortie (BCD, L) 062F 0x00 13 bcdDevice (H) Nombre de périphériques de sortie (BCD, H) 0630 0x00 14 iManufacturer Fabricant Index String = None 0631 0x00 15 iProduct produit String = None 0632 0x00 16 Numéro de série iSerialNumber Index String = None 0633 0x01 17 bNumConfigurations certain nombre de configurations dans cette interface = 1
Tableau 5-10. USB par défaut Configuration Descriptor
RAM Offset Valeur Description du champ
0634 0x09 0 blength Longueur de cette Descriptor = 9 octets 0635 0x02 1 bDescriptorType Descriptor Type = Configuration 0636 0x74 2 wTotalLength (L) Longueur totale (L) Y compris interface et Endpoint Descriptors = 116 0637 0x00 3 wTotalLength (H) Longueur totale (H) 0638 0x01 4 bNumInterfaces nombre d'interfaces dans cette configuration 0639 0x01 5 bConfigurationValue valeur de configuration utilisées par Set_Configuration Sélectionnez cette demande de configuration 063A 0x00 6 iConfiguration Index de String décrivant cette configuration = None 063B 0x80 7 bmAttributes Attributs - Bus-Powered, No Wakeup 063C 0x4B MaxPower 8 Maximum Power - 150 mA
Tableau 5-11. Interface USB par défaut 0, Autres 0 Configuration Descriptor
RAM Offset Valeur Description du champ
063D 0x09 blength 0 Durée de l'Interface Descriptor 063E 0x04 1 bDescriptorType Interface Descriptor Type = 063F 0x00 2 bInterfaceNumber base zéro Index de cette interface = 0 0640 0x00 3 bAlternateSetting Autres Réglage Valeur = 0 0641 0x0E 4 Nombre de bNumEndpoints Endpoints dans cette interface (sans compter OEB) = 14 0642 0xFF 5 bInterfaceClass Interface Class = Vendor Specific 0643 0xFF 6 Interface bInterfaceSubClass Sous-class = Vendor Specific 0644 0xFF 7 bInterfaceProtocol Protocole Interface = Vendor Specific 0645 0x00 8 iInterface Index String Descriptor pour cette interface = None
Tableau 5-14. L'interface par défaut 0, Autres Réglage 1, Bulk Endpoint Descriptors
RAM Offset Valeur Description du champ
0646 0x07 blength 0 Durée de la présente Endpoint Descriptor 0647 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0648 0x01 2 bEndpointAddress Endpoint Direction (1 est) et adresse OUT1 = 0649 0x02 3 bmAttributes XFR Type = VRAC 064A 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 064B 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 064C 0x01 6 bInterval d'interrogation en millisecondes
064D 0x07 0 blength Longueur de cette Endpoint Descriptor 064E 0x05 1 bDescriptor Type Descriptor Type = Paramètre 064F 0x02 2 bEndpointAddress Endpoint Direction (1 est) et Address = OUT2 0650 0x02 3 bmAttributes XFR Type = VRAC 0651 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0652 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0653 0x01 6 bInterval d'interrogation en millisecondes
0654 0x07 blength 0 Durée de la présente Endpoint Descriptor 0655 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0656 0x03 2 bEndpointAddress Endpoint Direction (1 est) et OUT3 Address = 0657 0x02 3 bmAttributes XFR Type = VRAC 0658 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0659 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 065A 0x01 6 bInterval d'interrogation en millisecondes
065B 0x07 0 blength Longueur de cette Endpoint Descriptor 065C 0x05 1 bDescriptor Type Descriptor Type = Paramètre 065D 0x04 2 bEndpointAddress Endpoint Direction (1 est) et OUT4 Address = 065E 0x02 3 bmAttributes XFR Type = VRAC 065F 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0660 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0661 0x01 6 bInterval d'interrogation en millisecondes
0662 0x07 blength 0 Durée de la présente Endpoint Descriptor 0663 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0664 0x05 2 bEndpointAddress Endpoint Direction (1 est) et OUT5 Address = 0665 0x02 3 bmAttributes XFR Type = VRAC 0666 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0667 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0668 0x01 6 bInterval d'interrogation en millisecondes
0669 0x07 blength 0 Durée de la présente Endpoint Descriptor 066A 0x05 1 bDescriptor Type Descriptor Type = Paramètre 066B 0x06 2 bEndpointAddress Endpoint Direction (1 est) et OUT6 Address = 066C 0x02 3 bmAttributes XFR Type = VRAC 066D 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 066E 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 066F 0x01 6 bInterval d'interrogation en millisecondes
0670 0x07 0 blength Longueur de cette Endpoint Descriptor 0671 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0672 0x07 2 bEndpointAddress Endpoint Direction (1 est) et OUT7 Address = 0673 0x02 3 bmAttributes XFR Type = VRAC 0674 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0675 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0676 0x01 6 bInterval d'interrogation en millisecondes
RAM Offset Valeur Description du champ
0677 0x07 blength 0 Durée de la présente Endpoint Descriptor 0678 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0679 0x81 2 bEndpointAddress Endpoint Direction (1 est) et Address = IN1 067A 0x02 3 bmAttributes XFR Type = VRAC 067B 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 067C 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 067D 0x01 6 bInterval d'interrogation en millisecondes
067E 0x07 0 blength Longueur de cette Endpoint Descriptor 067F 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0680 0x82 2 bEndpointAddress Endpoint Direction (1 est) et Address = IN2 0681 0x02 3 bmAttributes XFR Type = VRAC 0682 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0683 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0684 0x01 6 bInterval d'interrogation en millisecondes
0685 0x07 blength 0 Durée de la présente Endpoint Descriptor 0686 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0687 0x83 2 bEndpointAddress Endpoint Direction (1 est) et Address = IN3 0688 0x02 3 bmAttributes XFR Type = VRAC 0689 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 068A 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 068B 0x01 6 bInterval d'interrogation en millisecondes
068C 0x07 0 blength Longueur de cette Endpoint Descriptor 068D 0x05 1 bDescriptor Type Descriptor Type = Paramètre 068E 0x84 2 bEndpointAddress Endpoint Direction (1 est) et Address = IN4 068F 0x02 3 bmAttributes XFR Type = VRAC 0690 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0691 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0692 0x01 6 bInterval d'interrogation en millisecondes
0693 0x07 blength 0 Durée de la présente Endpoint Descriptor 0694 0x05 1 bDescriptor Type Descriptor Type = Paramètre 0695 0x85 2 bEndpointAddress Endpoint Direction (1 est) et IN5 Address = 0696 0x02 3 bmAttributes XFR Type = VRAC 0697 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 0698 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 0699 0x01 6 bInterval d'interrogation en millisecondes
069A 0x07 0 blength Longueur de cette Endpoint Descriptor 069B 0x05 1 bDescriptor Type Descriptor Type = Paramètre 069C 0x86 2 bEndpointAddress Endpoint Direction (1 est) et IN6 Address = 069D 0x02 3 bmAttributes XFR Type = VRAC 069E 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 069F 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 06A0 0x01 6 bInterval d'interrogation en millisecondes
06A1 0x07 0 blength Longueur de cette Endpoint Descriptor 06A2 0x05 1 bDescriptor Type Descriptor Type = Paramètre 06A3 0x87 2 bEndpointAddress Endpoint Direction (1 est) et IN7 Address = 06A4 0x02 3 bmAttributes XFR Type = VRAC 06A5 0x40 4 wMaxPacketSize (L) Taille maximale de paquet = 64 Bytes 06A6 0x00 5 wMaxPacketSize (H) Taille maximale de paquet - High 06A7 0x01 6 bInterval d'interrogation en millisecondes
qui est ensuite suivie par unicode sous forme de chaîne de zéro terminé "Microchip Technology ICD2 USB Device"
|
Toutefois, si vous êtes coincé avec 4550 bin, je peux essayer d'aider par l'ajout de commentaires dans le fichier asm CY. |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 03 avril 2006 17:10 Re: Projet de remplacer CY7C64613 dans le ICD2 | | | tags: icd2.dll |
|
| Salut Silvio,
merci pour l'infos, Il ya longtemps j'ai eu un bac à analyser provenant d'un fichier eprom puce. Je n'ai pas même pas le type de processeur, ni le circuit. Mais j'ai eu à trouver la façon dont elle traite avec une carte mémoire, et ses données. Je suppose que c'est un type de chipset 8051 et j'ai essayé beaucoup de démonteurs et s'est terminé avec un 80C542 (i cant rappeler celui qui a été exactement) J'ai tout compris à partir de numéros de port et de la manière dont le code traite de port pins. Mais il a fallu 2 jours semaine et le travail de nuit pour moi, beaucoup de lecture / / débogage apprentissage. C'est pourquoi je voulais un assembleur ce qui est capable de faire ce que vous avez mentionné au lieu de moi ...  Merci encore Silvio.
-----------------------------
Iam commence à croire que vous tous, selon bin. J'ai fait une recherche dans ICD2 dll et découvert qu'il GETUSBDESCRIPTOR appels et vérifie les numéros dans le descripteur et s'il correspond ICD2 version plus récente que j'ai signé dans ma Descripteur de 4550 que ce qu'elle fait un appel send4550image! Et aussi il ya des descripteurs de fichiers dans le bac identique à celui Kripton transféré. Une chose que je ne comprends pas c'est pourquoi ont-ils fourni à l'image de démarrage? Et pourquoi ICD2.dll essaie de télécharger ce fichier? Si je rentre, je vais essayer de configurer mon descripteurs pour correspondre à celle que j'ai trouvée dans la poubelle et essayer MPLAB sur lui.
Je pense que nous nous rapprochons! 
Ajouté après 46 minutes:
Et il ya une chose que la magie de la première de la chaussure btyes bin: MCHP (puce?) J'ai cherché pour elle, si c'est plus tard (après charge) les remplace avec un réel point d'entrée ou de GOTO er, mais dans le ICD2.dll pas.
Ajouté après 3 heures 34 minutes:
Look at this:
J'ai fait ce que j'ai dit auparavant, vient de mettre le numéro de version à la plus récente, il s'attend à MPLAB et essaie d'envoyer les OS! (Bien sûr, mon fw n'est pas un chargeur de démarrage)
| Code: | MPLAB ICD 2 Ready Connexion à MPLAB ICD 2 ICD0289: Impossible de re-programme ICD2 USB OS firmware. ICD0021: Impossible de se connecter avec MPLAB ICD 2 MPLAB ICD 2 Ready
|
Quelque part le chargeur de démarrage doit travailler, je vais essayer de faire quelque chose pendant la nuit. |
|
| Haut de page | |
 |
narccizzo
Inscrit le: 20 Jan 2006 Messages: 173 Helped: 4 Lieu: Patzcuaro, Michoacán, Mexique
| 03 avril 2006 18:43 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| Salut JaySlovak Non, Im not sure, j'ai seulement ouvert la boîte et de l'enregistrer dans le format hexadécimal. |
|
| Haut de page | |
 |
Jay.slovak
Inscrit le: 23 Mar 2006 Messages: 11
| 03 avril 2006 20:45 Re: Projet de remplacer CY7C64613 dans le ICD2 | | |
|
| | narccizzo a écrit: | Salut JaySlovak Non, Im not sure, j'ai seulement ouvert la boîte et de l'enregistrer dans le format hexadécimal.  |
Yep, il est étrange que la chaîne est lisible, que le code ne fait rien |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 03 avril 2006 22:25 Re: Projet de remplacer CY7C64613 dans le ICD2 | | | tags: icd2.dll |
|
| Bonne nouvelle, après 2 heures de débogage,
ICD2.dll utilise les deux fichiers de bin. L'OS se veut le fichier téléchargé avec seulement d'ICD2s nouveau numéro de série du produit. Mais lorsque vous modifiez la version id dans le nom du fichier de OS.bin * _FFFF.bin pour que ça commence à vérifier la version de démarrage look:
| Code: | Connexion à MPLAB ICD 2 ICDWarn0062: Le firmware USB de démarrage de l'ICD2 est actif et des communications avec l'ICD2. Ce firmware est obsolète et doit être mis à jour. Il ne peut pas être mis à jour tout actif. Toutefois, vous mai continuer à fonctionner avec le firmware de boot, si vous choisissez de le faire. Voulez-vous continuer?
|
Si je presse, ici, que OUI, il essaie de se connecter à lui-même ICD2, et gèle (je n'ai que le 4550 encore installé). Si je presse le NO, il semble que il essaye de le mettre à jour, mais nous avons besoin ici un chargeur de démarrage comme celle-ci, ce message apparaît:
| Code: | ICD0288: Impossible de re-programme ICD2 USB Boot firmware. ICD0021: Impossible de se connecter avec MPLAB ICD 2 MPLAB ICD 2 Ready
|
Bon les gars, pense pense pense Comment pouvons-nous utiliser ce bac pour obtenir un travail dans un bootloader 4550!
Ajouté après 2 minutes:
J'ai également compilé l'échantillon avec le bon démarrage VID / PID, mais a obtenu les mêmes résultats qu'avec ma 4550.
Ajouté après 16 minutes:
Il peut être, que nous ne pouvons pas obtenir la première initiale initial:) partie de l'amorçage qui charge le premier chargeur de démarrage qui charge les os ...
Ajouté après 5 minutes:
C'est le moment où rkodaira devrait larguer son 4550 pour le niveau 0 de démarrage. (avec un grand espoir qui ne sont pas protégés ...)
Rkodaira NOUS AVONS BESOIN DE VOUS |
|
| Haut de page | |
 |
albert22
Inscrit le: 20 juillet 2004 Posts: 95 Helped: 3
| 03 avril 2006 22:46 Re: Projet de remplacer CY7C64613 dans le ICD2 | | |
|
| J'ai été l'analyse d'une impression que j'ai avec moi des BL010101. et trouver certaines choses. Il semble accepter de 5 commandes venant soit de la PSP ou de l'USART. 0x55 exécution de code à partir de 0x0010. 0x56 hex charge (ce qui semble avoir plus subcommands) 0x5a envoie les données 0x01 0x01 0x03 (Version de la BL?) Deux autres commandes à partir de la tour sur l'erreur et Busy Leds et se bloque dans une boucle inffinite.
Les routines suivantes sont liées à ce que j'ai appelé la "charge hex" commande:
Dans une autre routine de la BL envoie la chaîne de caractères suivante 0x5b ", 0810C9", 0x5d Autres réponses envoie embarqués dans la chaîne de caractères suivante 0x5b ", 0A000", U, 0x31, U, 0x5d. (où U semble 0x31, 0x34, 0x36 et 0x37).
I didnt ont beaucoup de temps pour poursuivre l'analyse. Je ne voit le port USB de surveillance qui ont été émis en raison Im un cyber. Mais je pense que ces données devraient être intégrées à la communication USB |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 03 avril 2006 23:30 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| ALBERT,
J'ai vérifié la série contre les comm USB, USB utilise un wrapper de la série à travers chose. Il semble qu'il utilise EP1 pour le contrôle du port (il est OUT et IN) et EP2 comme port de données, seulement IN (icd-> pc). |
|
| Haut de page | |
 |
albert22
Inscrit le: 20 juillet 2004 Posts: 95 Helped: 3
| 05 avril 2006 6:39 Re: Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| Voici mes avancées avec le BL Il n'y avait pas de tels subcommands. La charge hex la commande ne prend hex dossiers et écrit les données à la mémoire de programme 2 octets à la fois. Il vérifie pour les différentes erreurs, y compris la gamme d'adresse. Ap. pour éviter l'intensification de la BL programme. Cela confirme que la BL est toujours résident de la 877. Le [0A000 ", U, 0x31, U]. (Le 2e est le premier U U 1) a peu de chances d'être vu car il est un rapport d'erreur. Erreurs comprennent: le mauvais format, de contrôle, mauvaise plage d'adresse et d'écrire EEPROM erreur . La routine attend 16 caractères commençant par un 0x3c ('<') et se terminant avec un 0x3e ('>'). cette tête de 16 caractères contenant l'adresse, la longueur et de contrôle pour les données à être écrite en ASCII. Si l'en-tête est correct Ap. BL avec les réponses "[0810C9]» Les profilés de données après une 0x7b Ce format semble être différent d'un intel hex format.
Zedman. Mai-vous être reconnu quelque chose de ce genre dans le RS232 Demain, je souhaite être à ma maison et en mesure d'installer le disque dur pour vérifier les logs et voir si je peux être d'aucun secours. |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 05 avril 2006 12:17 Re: Projet de remplacer CY7C64613 dans le ICD2 | | | tags: MPLAB protocole icd2 icd2.dll icd2w2k.sys mplbcomm.dll |
|
| Je suis coincé avec ce USB chose. Et je suis triste.
Je ne sais pas vraiment quoi faire ensuite. J'ai passé beaucoup de temps à déboguer la icd2.dll.
Le problème est: Je ne peux pas envoyer un seul octet à MPLAB.
Je vais expliquer ce que j'ai trouvé jusqu'à maintenant, bien qu'il n'y ait pas vraiment intéressés à un (tiens simplement à attirer l'fini chose). (Sauf: albert, Kripton, rkodaira, silvio et les gars dans ce fil)
Ainsi, communique avec le MPLAB ICD2 de cette façon:
[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 périphérique]
Si vous choisissez le type de connexion USB, il demandera à l'appareil de la Descripteur ICD2 et contrôles de la version du produit mot, si elle est 0x0003 que c'est un Cypress ICD2 fondée, si elle est 0x0010 que c'est une autre sur 4550. Si 0x0010 trouvé que ce qu'il dit ce que j'ai été posté avant que l'OS dans le ICD2 doit être mis à jour. Il est intéressant de noter que si la version (0100) dans le nom du fichier de la OS.bin FFFF est modifié pour qu'il saute cette étape de démarrage et vérifie la version. Ici, j'ai dû ICD2.dll patch pour le faire essayer de vérifier la version du fichier BL.bin trop, c'est dur que même il est mis à FFFF il coutume essayez de mettre à niveau, c'est pourquoi je lui patché (FFFF fixé en dur à la baisse) alors maintenant dit ce que je mentoined trop avant: le bl version est trop ancienne, mais elle ne peut pas être mis à jour alors qu'il est actif.
Okay. J'ai fait un petit prog de l'échantillon d'amorçage, avec le bon de descripteurs et d'essayer de communiquer avec MPLAB pour décrypter le protocole et de s'inspirer de la BL dans le nouveau 4550 ICD2. ICD2 que Kripton utilise, (version cyprès) définit 7 OUT / IN Endpoints, mais, selon les journaux, il utilise seulement EP1 pour IN / OUT et IN pour EP2. (OUT moyens PC-> Device) Il semble que l'usb, il envoie des commandes spécifiques et des données par le biais de EP1, et sur les EP1, et envoie des octets lus à partir de l'ICD2 de 877 par critère distinct EP2 po
Lorsque MPLAB essaie d'envoyer des e OS.bin à améliorer les fw os getUSBdescriptor il émet un appel vers le pilote, et envoie un 0x12 octets de long, au moyen de DeviceIoControl commande. Je débogué, il parvient avec succès à la 4550. Than MPLAB getStatus émet un appel, et semble-t-il des paramètres de l'appel qu'elle prévoit 0x08 octets de données. J'ai créé mon buffer de 8 octets, et de la propriété de SIE. Mais il ne vous envoie jamais que 8 octets de retour (il ne figure pas dans USBMon). Juste attend. Il ne peut y avoir beaucoup de choses. Peut-être que je ne st mal avec la configuration de 4550, mais j'ai essayé avec un autre progs et il fonctionne, peut envoyer des octets de retour. Je sais que le pays hôte doit faire parvenir au commandement et à laisser l'appareil envoyer ce qu'il veut. Mais quand je débogué MBLBCOMM, j'ai vu que la commande DeviceIoControl échoué! I tought que peut-être des renseignements a été construit dans le fichier. Sys et il laisse tomber le paquet parce que c'est une erreur de contenu, mais je pense que ce devrait être une tâche de niveau supérieur. Quand je suis arrivée chez moi, je vais vérifier la valeur du GetLastError.
Quiconque a une idée de comment puis-je voir s'il y avait un paquet, ou comment puis-je continuer? |
|
| Haut de page | |
 |
Kripton2035
Inscrit le: 19 juillet 2001 Messages: 482 A aidé: 15 Location: Earth
| 05 avril 2006 16:59 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| mai, vous devez être connecter un 877 à la port de la PSP 4550 pour voir ce qui va arriver par le biais, de programmes et de la 877 avec le chargeur de démarrage que nous avons? mai le octets vous attendez proviennent de l'EP2 et donc le 877?
voulez-vous me faire parvenir un autre fichier de log d'un état précis? par la façon dont il est sûr que vous avez besoin d'un journal rokaida avec sa 4550 icd2 ..
PS: je ne suis pas intéressée à ce projet .. Je suis seulement curieux! J'ai déjà un usb icd2! |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 05 avril 2006 20:08 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| Merci Kripton,
Je vous informe lorsque j'ai besoin de plus de dump , C'est un peu plus complexe que le simple passant par les octets à 877 et à l'arrière, il dispose d'un protocole sur l'emballage. Qu'est-ce que vous avez dit a été très utile, mais rkodeira habitude sacrify son tout nouveau ... ICD2 Si il, que de la décharge de son processus de mise à jour OS serait bien de définir le protocole ... |
|
| Haut de page | |
 |
Kripton2035
Inscrit le: 19 juillet 2001 Messages: 482 A aidé: 15 Location: Earth
| 05 avril 2006 22:09 Projet de remplacer CY7C64613 dans l'ICD2 | | |
|
| | et je ne pense pas qu'il doit sacrify son icd2! avec seulement quelques décharges usbmon comme je l'ai fait .. espérons que ma icd2 travaille encore! |
|
| Haut de page | |
 |
albert22
Inscrit le: 20 juillet 2004 Posts: 95 Helped: 3
| 05 avril 2006 22:16 Re: Projet de remplacer CY7C64613 dans le ICD2 | | | tags: icd2 charge hex commande |
|
| Je ne peux pas installer HHD surveiller pour voir les journaux, car je ne dispose que de w98 à la maison. Pouvez-vous exporter un dump de la télécharger sur un OS. Txt, pour moi? ------- Comment réinitialise le CY 877? Il s'agit d'un signal (broche 43) à la base dont le collecteur de Q1 est MCLR. Mais cela va à un connecteur appelé PROG. Je réalise maintenant que ce signal doit aller à la 877 aussi. Nous aurions besoin de savoir qui commande USB réinitialise le 877. Mai que ce soit à l'un des paramètres de contrôle? Je ne sais pas quelle est la fonction de ce connecteur PROG. mais les critères d'évaluation supplémentaires mai être liées à celle-ci. ---------- Un chargement de l'OS à la ICD2 semble être: ICD01020405.hex j'ai essayé de disassemby, mais je ne peux pas obtenir le désassembleur pour remplacer le hex adresses avec le nom des registres. Il faudra plus de temps pour comprendre comment il fonctionne. Un fait intéressant est que le code commence à 0x0010. Rappelez-vous que le BL demande cette adresse et l'exécution de la commande.
Le BL version rapportée par MPLAB est 01.01.01.00 cela va assez bien avec la commande qui BL réponses 01,01,01,03 --------- Il n'y a pas de DPot (MCP41xxxx) dans le brésilien CIM. Comment fonctionnent-ils ensemble Vpp? La plupart des clones ont un fixe Vpp. Est-ce que cela signifie que le brésilien de CIM est un clone de faible coût et non pas la nouvelle ICD2? Je ne pense pas que la puce a été fixée pour une Vpp. Si il ya une autre méthode de contrôle de la Vpp, autres que les DPot il faudrait un changement de firmware, la CIM OS. L'ancien système d'exploitation ne fonctionne pas dans le nouveau. Cette mai être la cause que la DLL est la vérification de la version. |
|
| Haut de page | |
 |
Zedman
Inscrit le: 13 octobre 2003 Messages: 294 Helped: 2
| 05 avril 2006 22:32 Projet de remplacer CY7C64613 dans l'ICD2 | | | tags: MPLAB protocole icd2 icd2w2k.sys icd2w2k bootloader 4550 télécharger télécharger télécharger icd2w2k.sys écrire icd2w2k |
|
| Je ne pense pas que nous devrions faire face à tout ce qui concerne le circuit ou d'un protocole ou de connexion entre 877 et 4550 pour le moment. Je pense que tous nous avons besoin, c'est écrit dans les bacs de 4550 avec MPLAB. Nous devons écrire un chargeur de démarrage compatible avec le icd2w2k.sys pour obtenir le OS.bin téléchargé, et après que nous pouvons de nos têtes scracth la façon dont le 877 est connecté.
Ajouté après 5 minutes:
En ICD2br utilise un autre type de puce qui génère les Vpp. Rkodaira mentoined, avant de vérifier les messages. |
|
| Haut de page | |
 |
silvio
Inscription: 31 décembre 2001 Messages: 800 A aidé: 90
| 06 avril 2006 2:36 Re: Projet de remplacer CY7C64613 dans l'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: 482 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 | |
 |