| Autor | Mensagem |
|---|
Kripton2035
Joined: 19 jul 2001 Lugares: 482 Ajudado: 15 Localização: Terra
| 03 abr 2006 8:28 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| | predrage escreveu: | Meus amigos eu também não teve sucesso na programação ICD2_4550_BOOT_0180.BIN em 4550. I'v tentou abrir bin com winpic 800 software, mas ele falhou. Eu tryed para abri-lo com a opção "todos os arquivos" em "tipos de arquivo", porque não existe apoio directo por bin arquivos. ICprog ter esse apoio (para abrir arquivos bin), mas não pode programa 4550. Na verdade não existe um dispositivo na lista 4550. O que devo fazer? Alguma sugestão? Eu sou apenas um iniciante, mas tenho boa vontade para ajudar. Desculpa lá o meu mau Inglês. |
renomeie o. BIN para. HEX e winpic vai abri-lo! às vezes um lote de arquivos são. BIN, na realidade, são Intel. hex! para ter certeza, abra o arquivo com o Bloco de Notas, se contiver linhas começando com ":", em seguida, renomeie para. hex e abri-lo com winpic .. se é lixo, então um bin2hex deve ser usado para abri-lo. |
|
| Voltar ao topo | |
 |
narccizzo
Joined: 20 jan 2006 Lugares: 173 Ajudado: 4 Localização: Pátzcuaro, Michoacán, México
| 03 abr 2006 9:42 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| Estes são os dois arquivos bin convertidos em hex, eu abri a Bin arquivos com o ic-prog software então eu salvar os arquivos em formato hexadecimal, se você tomar um olhar para estes arquivos que você pode ver um readable string "Microchip Tecnology ICD2 USB icd2 USB" no endereço 0x0ee7 para o arquivo e boot.hex a mesma seqüência no 0x0b8e para o os.hex arquivo, eu não ter um disassembler para explorar com mais pormenor este arquivos, mas algo me diz que estes dois arquivos são tudo o que precisamos.
BR Narccizzo
|
|
| Voltar ao topo | |
 |
Jay.slovak
Joined: 23 mar 2006 Lugares: 11
| 03 abr 2006 11:17 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| | narccizzo escreveu: | Estes são os dois arquivos bin convertidos em hex, eu abri a Bin arquivos com o ic-prog software então eu salvar os arquivos em formato hexadecimal, se você tomar um olhar para estes arquivos que você pode ver um readable string "Microchip Tecnology ICD2 USB icd2 USB" no endereço 0x0ee7 para o arquivo e boot.hex a mesma seqüência no 0x0b8e para o os.hex arquivo, eu não ter um disassembler para explorar com mais pormenor este arquivos, mas algo me diz que estes dois arquivos são tudo o que precisamos.
BR Narccizzo |
Tem certeza de que têm os ficheiros convertidos corretamente? Se eu importar-los em MPLAB, o código não faz sentido, tudo que faz é simplesmente passando o Programa de memória e fazer nops. Nada útil está a acontecer em ambos os Boot e SO HEXs. Mesmo config bits são diferentes em ambos os ficheiros! |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 03 abr 2006 11:19 Projeto para substituir CY7C64613 no ICD2 | | |
|
| Albert,
o kernel driver (s) de esperar, o cipreste vai ligar em um diferente vid / pid firt quando ligado, e após o carregador sys downloads é fw ele volte como outro vid / pid-lo a outros sistemas conversações para ele. Temos de aplicar apenas a um segundo. Iam @ trabalho para que eu não posso fazer nada aqui esperam duro pensando ... |
|
| Voltar ao topo | |
 |
silvio
Joined: 31 dez 2001 Lugares: 800 Ajudado: 90
| 03 abr 2006 11:31 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: mplab protocolo icd2 cipreste disassembler disassembler cipreste |
|
| Oi Zedman,
it's a must to understand what's under cover. Quanto CY hex arquivo não é só uma questão de bom disassembler que conhece o cipreste chip, mas leitura de 436 páginas EZ-USB FX TechRefManual é um imperativo para compreender o que está sob a cobertura. E eu não acredito que você tenha tempo para isso. No entanto, se você não estiver familiarizado com opcodes 8051, ao analisar o código irá demorar algum tempo. (Eu sei que você está familar com os PIC) with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Eu posso substituir todas as ocorrências de DPtr MOV, # LXXXX com valores adequados de CY7C64613 registos 0x7800-0x7FFF mas você definitivamente acabam transformando as páginas de TechRefManual procurando definições. Além de que seria difícil fazer algumas bits para atribuir nomes que são estabelecidas ou clara no programa, desde que não são mapeados em SFR espaço (que termina em 0 ou 8). with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. É fácil substituir MOV DPtr, # L7FB4 com DPtr MOV, # EP0CS mas é difícil dizer SETB HSNAK devido às razões acima expostas.
and EP0STAL L which are affected in the bellow code at 0x03E2. Vejamos o exemplo bits HSNAK e EP0STAL L, que são afetadas no código abaixo em 0x03E2. | Código: | L03E2: LCALL L0FBE JNC L03EE MOVIMENTOS DPtr, # L7FB4 Movx A, @ DPtr ORL A, # 01h; algum tipo de SETB EP0STALL Movx @ DPtr, A L03EE: MOV DPtr, # L7FB4 Movx A, @ DPtr ORL A, # 02h; algum tipo de SETB HSNAK Movx @ DPtr, A RET
L0FBE: SETB C RET
|
Tomemos por exemplo (CP_1.asm) o código linhas começando com offset 0x0100 (uma chamada de subrotina 0x05FA), o primeiro código linha utilizada vetor interromper imediatamente abaixo tabela Na RAM 0x7FE9 você pode encontrar 2. Byte do 8 bytes USB CONFIGURAR pacotes de dados (ver página 215 table9-1), significando bRequest campo (ver tabela 9-2).
| Código: | L0100: MOV DPTR,#L7FE9 Movx A, @ DPtr JNZ L0109 LJMP L029B; se bRequest = GetStatus saltar para 0x029B L0109: DEC UM JNZ L010F LJMP L0317; se bRequest = Limpar Feature, salta à 0x0317 L010F: ADD A, # 0FEh JNZ L0116 LJMP L038E; se bRequest = Set Feature, salte para 0x038E L0116: ADD A, # 0FBh JNZ L011D LJMP L0295; se bRequest = Obter Configuração, saltar para 0x0295 L011D: DEC UM JNZ L0123 LJMP L028F; se bRequest = Definir configuração, saltar para 0x028F L0123: DEC UM JNZ L0129 LJMP L0283; se bRequest = Obter Interface, saltar para 0x0283 L0129: DEC UM JNZ L012F LJMP L0289; se bRequest = Set Interface, saltar para 0x0289 L012F: ADD A, # 05h JZ L0136 LJMP L03E2; se bRequest = nenhuma das opções acima, então definir bit HSNAK ; e EP0STALL de EP0CS & estatuto registo e controlo ; depois RET em 0x05FD ; L0136: LCALL L0F7A; se bRequest = Get Descriptor, LCALL 0x0F7A onde JC L013E; carry bit é definido por padrão, para saltar para 0x013E LJMP L03EE; se pelo 0x0F7A proceder seria 0, por padrão, defina bit HSNAK ; EP0CS de registo e controlo & estado RET em 0x05FD ; L013E: MOV DPtr, # L7FEB; aqui, porque foi um bRequest Get Descriptor Movx A, @ DPtr; assim, verifique as WValueH domínio do USB CONFIGURAR pacotes ADD A, # 0FEh JZ L015F; se wValueH foi 0x02 saltar para 0x015F DEC UM JZ L0190; se wValueH foi 0x03 saltar para 0x0190 ADD A, # 02h JZ L0150; se wValueH foi 0x01 saltar para 0x0150 LJMP L0279; se wValueh é diferente de qualquer das 0x01 ou 0x02 ou 0x03, em seguida, defina ; bits HSNAK e EP0STALL de registo e EP0CS RET em 0x05FD ; L0150: MOV A, 0Ch; aqui porque wValueH foi 0x01, para carregar SUDPTR mundial USB registo MOVIMENTOS DPtr, # L7FD4; com valor 0x0C0D, então definir bit HSNAK de EP0CS e RET em 0x05FD Movx @ DPtr, A MOV A, 0DH MOVIMENTOS DPtr, # L7FD5 Movx @ DPtr, A LJMP L03EE L015F: MOV DPtr, # L7FEA; olhada agora no campo do USB wValueL pacotes SETUP ; ; ; ; e assim por diante ...................
|
port2: Microchip MPLAB ICD2 Fw client Ou nesta tabela em offset 0x0622 que correspondem à Kripton2035 port2: Microchip MPLAB ICD2 Fw cliente
| Código: | Tabela 5-9. Padrão USB Device Descriptor
RAM Valor Offset Campo Descrição
0622 0x12 0 bLength Comprimento deste Descriptor = 18 bytes 0623 0x01 1 bDescriptorType Descriptor Type = Dispositivo 0624 0x00 2 bcdUSB (L) Especificação USB Versão 1.10 (L) 0625 0x01 3 bcdUSB (C) Especificação USB Versão 1.10 (H) 0626 0xFF 4 bDeviceClass Dispositivo Classe (FF é Vendor-específicas) 0627 0xFF 5 bDeviceSubClass Dispositivo Sub-Class (FF é Vendor-específicas) 0628 0xFF 6 bDeviceProtocol Dispositivo Protocolo (FF é Vendor-específicas) 0629 0x40 7 bMaxPacketSize0 tamanho máximo de pacote para EP0 = 64 bytes 062A 0xD8 8 idVendor (L) Vendor ID (L) = 04D8H Microchip Technology 062B 0x04 9 idVendor (H) Vendor ID (H) 062C 0x01 10 idProduct (L) ID do produto (L) ICD2 = 8001H 062D 0x80 11 idProduct (H) Product ID (H) 062E 0x03 12 bcdDevice (L) Dispositivo Versão Número (BCD, L) 062F 0x00 13 bcdDevice (H) Dispositivo Versão Número (BCD, H) 0630 0x00 14 iManufacturer Fabricante Índice String = None 0631 0x00 15 iProduct Product Index String = None 0632 0x00 16 iSerialNumber Serial Number Index String = None 0633 0x01 17 bNumConfigurations Número de Configurações neste Interface = 1
Tabela 5-10. Configuração padrão USB Descriptor
RAM Valor Offset Campo Descrição
0634 0x09 0 bLength Comprimento deste Descriptor = 9 bytes 0635 0x02 1 bDescriptorType Descriptor Type = Configuração 0636 0x74 2 wTotalLength (L) comprimento total (L) Incluindo Interface e Endpoint Descriptors = 116 0637 0x00 3 wTotalLength (H) comprimento total (H) 0638 0x01 4 bNumInterfaces Número de Interfaces nesta configuração 0639 0x01 5 bConfigurationValue Configuração valor utilizado pelas Set_Configuration Pedido para selecionar esta configuração 063A 0x00 6 iConfiguration Índice de Cordas Descrevendo esta configuração = None 063B 0x80 7 bmAttributes Atributos - Bus-Powered, No despertar 063C 0x4b maxpower 8 da potência máxima - 150 mA
Tabela 5-11. USB interface padrão 0, Alternativo Configuração 0 Descriptor
RAM Valor Offset Campo Descrição
063D 0x09 0 bLength Comprimento do Interface Descriptor 063E 0x04 1 bDescriptorType Descriptor Type = Interface 063F 0x00 2 bInterfaceNumber Zero-based Index desta interface = 0 0640 0x00 3 bAlternateSetting Alternate Setting Value = 0 0641 0x0E 4 bNumEndpoints Número de parâmetros neste Interface (não contando IEP) = 14 0642 0xFF 5 bInterfaceClass Interface Class = Vendor Específicos 0643 0xFF 6 bInterfaceSubClass interface Sub-class = Vendor Específicos 0644 0xFF 7 bInterfaceProtocol Interface protocolo específico Vendor = 0645 0x00 8 iInterface Índice de Cordas Descriptor para esta interface = None
Tabela 5-14. Padrão Interface 0, Alternate Setting 1, Bulk Endpoint Descriptors
RAM Valor Offset Campo Descrição
0646 0x07 0 bLength Comprimento deste Endpoint Descriptor 0647 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 0648 0x01 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT1 0649 0x02 3 bmAttributes XFR Type = A GRANEL 064A 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 064B 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 064C 0x01 6 bInterval Polling Interval em Milissegundos
064D 0x07 0 bLength Comprimento deste Endpoint Descriptor 064E 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 064F 0x02 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT2 0650 0x02 3 bmAttributes XFR Type = A GRANEL 0651 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0652 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0653 0x01 6 bInterval Polling Interval em Milissegundos
0654 0x07 0 bLength Comprimento deste Endpoint Descriptor 0655 0x05 1 bDescriptor Tipo Endpoint Descriptor Type = 0656 0x03 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT3 0657 0x02 3 bmAttributes XFR Type = A GRANEL 0658 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0659 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 065A 0x01 6 bInterval Polling Interval em Milissegundos
065B 0x07 0 bLength Comprimento deste Endpoint Descriptor 065C 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 065D 0x04 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT4 065E 0x02 3 bmAttributes XFR Type = A GRANEL 065F 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0660 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0661 0x01 6 bInterval Polling Interval em Milissegundos
0662 0x07 0 bLength Comprimento deste Endpoint Descriptor 0663 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 0664 0x05 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT5 0665 0x02 3 bmAttributes XFR Type = A GRANEL 0666 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0667 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0668 0x01 6 bInterval Polling Interval em Milissegundos
0669 0x07 0 bLength Comprimento deste Endpoint Descriptor 066A 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 066B 0x06 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT6 066C 0x02 3 bmAttributes XFR Type = A GRANEL 066D 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 066E 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 066F 0x01 6 bInterval Polling Interval em Milissegundos
0670 0x07 0 bLength Comprimento deste Endpoint Descriptor 0671 0x05 1 bDescriptor Tipo Endpoint Descriptor Type = 0672 0x07 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = OUT7 0673 0x02 3 bmAttributes XFR Type = A GRANEL 0674 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0675 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0676 0x01 6 bInterval Polling Interval em Milissegundos
RAM Valor Offset Campo Descrição
0677 0x07 0 bLength Comprimento deste Endpoint Descriptor 0678 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 0679 0x81 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN1 067A 0x02 3 bmAttributes XFR Type = A GRANEL 067B 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 067C 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 067D 0x01 6 bInterval Polling Interval em Milissegundos
067E 0x07 0 bLength Comprimento deste Endpoint Descriptor 067F 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 0680 0x82 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN2 0681 0x02 3 bmAttributes XFR Type = A GRANEL 0682 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0683 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0684 0x01 6 bInterval Polling Interval em Milissegundos
0685 0x07 0 bLength Comprimento deste Endpoint Descriptor 0686 0x05 1 bDescriptor Tipo Endpoint Descriptor Type = 0687 0x83 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN3 0688 0x02 3 bmAttributes XFR Type = A GRANEL 0689 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 068A 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 068B 0x01 6 bInterval Polling Interval em Milissegundos
068C 0x07 0 bLength Comprimento deste Endpoint Descriptor 068D 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 068E 0x84 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN4 068F 0x02 3 bmAttributes XFR Type = A GRANEL 0690 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0691 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0692 0x01 6 bInterval Polling Interval em Milissegundos
0693 0x07 0 bLength Comprimento deste Endpoint Descriptor 0694 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 0695 0x85 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN5 0696 0x02 3 bmAttributes XFR Type = A GRANEL 0697 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 0698 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 0699 0x01 6 bInterval Polling Interval em Milissegundos
069A 0x07 0 bLength Comprimento deste Endpoint Descriptor 069B 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 069C 0x86 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN6 069D 0x02 3 bmAttributes XFR Type = A GRANEL 069E 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 069F 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 06A0 0x01 6 bInterval Polling Interval em Milissegundos
06A1 0x07 0 bLength Comprimento deste Endpoint Descriptor 06A2 0x05 1 bDescriptor Tipo Descriptor Type = Endpoint 06A3 0x87 2 bEndpointAddress Endpoint Direção (1 está em) e Endereço = IN7 06A4 0x02 3 bmAttributes XFR Type = A GRANEL 06A5 0x40 4 wMaxPacketSize (L) tamanho máximo de pacote = 64 Bytes 06A6 0x00 5 wMaxPacketSize (C) tamanho máximo de pacote - Alto 06A7 0x01 6 bInterval Polling Interval em Milissegundos
que é seguida pelo unicode forma de zero terminou string "ICD2 Microchip Technology USB Device"
|
No entanto, se você ficar com 4550 bin, posso tentar ajudar, acrescentando observações na CY asm arquivo. |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 03 abr 2006 17:10 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: icd2.dll |
|
| Oi Silvio,
obrigado pela infos, muito tempo atrás eu tinha de analisar um bin provenientes de uma EPROM chip. Eu nem sequer nenhum tipo, nem o processador do circuito. Mas eu tinha que saber como se trata de um cartão de memória, e é dados. Achei que ele é um tipo de chip 8051 e tentou um monte de disassemblers, e acabou com uma 80C542 (i cant lembro que foi exatamente um) Descobri-o a partir do número da porta e como lida com o código individual porto pinos. Mas demorou 2 semanas trabalhar dia e noite para mim, muita leitura / debugging / aprendizagem. É por isso que eu queria o que é um montador capaz de fazer as coisas que você mencionou em mim ...  Obrigado novamente Silvio.
-----------------------------
Iam começar a acreditar que todos, de acordo com Bin arquivos. Eu fiz uma pesquisa em ICD2 dll e descobri que ela chama GETUSBDESCRIPTOR e verifica números do descritor e se corresponde a uma versão mais nova do que eu ICD2 assinado em 4550 do meu Descritor do que uma chamada send4550image! E também existem descritores no bin idêntica à uma Kripton carregado. Uma coisa que não entendo é por isso que eles fornecido o arranque imagem? E porquê ICD2.dll tenta baixar esse arquivo? Se eu chegar em casa, vou tentar definir o meu descritores para corresponder a uma Achei no bin e tentará MPLAB nele.
Acho que estamos chegando mais perto! 
Adicionado após 46 minutos:
E há uma coisa mágica no primeiro btyes da bota bin: MCHP (microchip?) Eu tenho procurado, se é mais tarde (depois de carregar), substitui-los com verdadeiro entrada ponto GOTO ou st, mas no ICD2.dll não.
Adicionado após 3 horas 34 minutos:
Olha isto:
Eu fiz o que eu disse antes, basta definir o número de versão para a versão mais recente de que espera que MPLAB e tenta enviar o SO! (Claro meu fw não é um gestor de arranque)
| Código: | MPLAB ICD 2 Ready Ligar a MPLAB ICD 2 ICD0289: Não é possível re-programa ICD2 USB SO firmware. ICD0021: Não é possível conectar com MPLAB ICD 2 MPLAB ICD 2 Ready
|
De alguma forma o gestor de arranque deve funcionar, vou tentar fazer alguma coisa durante a noite. |
|
| Voltar ao topo | |
 |
narccizzo
Joined: 20 jan 2006 Lugares: 173 Ajudado: 4 Localização: Pátzcuaro, Michoacán, México
| 03 abr 2006 18:43 Projeto para substituir CY7C64613 no ICD2 | | |
|
| Oi JaySlovak Não, Im não tenho certeza, eu só abriu a Bin e salvá-lo no formato hexadecimal. |
|
| Voltar ao topo | |
 |
Jay.slovak
Joined: 23 mar 2006 Lugares: 11
| 03 abr 2006 20:45 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| | narccizzo escreveu: | Oi JaySlovak Não, Im não tenho certeza, eu só abriu a Bin e salvá-lo no formato hexadecimal.  |
Sim, é estranho que a string é legível, apenas o código não faz nada |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 03 abr 2006 22:25 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: icd2.dll |
|
| Boas notícias depois de 2 horas de depuração,
ICD2.dll faz uso tanto de bin arquivos. O arquivo SO quer ser baixados apenas para ICD2s com o novo produto de série. Mas quando você modificar a versão id no nome do ficheiro de OS.bin para * _FFFF.bin que ele começa a verificar o bootloader versão olhada:
| Código: | Ligar a MPLAB ICD 2 ICDWarn0062: O USB Boot firmware do ICD2 está ativa e fornecendo comunicações com o ICD2. Este firmware está fora de prazo e deve ser atualizado. Ela não pode ser atualizada enquanto ativa. No entanto, você pode continuar a operar com o actual firmware inicialização se você optar por fazê-lo. Você deseja continuar?
|
Se eu pressionar SIM aqui do que ele tenta se conectar a ICD2 si, e congela (só tenho o 4550 instalado ainda). Se eu NÃO prima do que parece, tenta atualizá-lo, mas temos aqui um bootloader como este, pelo que esta mensagem aparece:
| Código: | ICD0288: Não é possível re-programa ICD2 USB Boot firmware. ICD0021: Não é possível conectar com MPLAB ICD 2 MPLAB ICD 2 Ready
|
Ok caras, acho que pensar pensar como é que podemos usar isso para obter um trabalho bin bootloader em um 4550!
Adicionado após 2 minutos:
Eu também compilou a amostra com o bootloader correto VID / PID, mas tenho os mesmos resultados que com o meu 4550.
Adicionado após 16 minutos:
Pode ser, que não podemos obter o inicial inicial inicial:) parte do bootloader que carrega o primeiro bootloader que carrega o SO ...
Adicionado após 5 minutos:
Este é o momento em que rkodaira deve despejar sua 4550 para o nível 0 bootloader. (com uma grande esperança de que não está protegido ...)
Rkodaira Precisamos de você |
|
| Voltar ao topo | |
 |
albert22
Joined: 20 jul 2004 Lugares: 95 Ajudado: 3
| 03 abr 2006 22:46 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| Fui analisando uma impressão que eu tenho comigo do BL010101. e encontrar algumas coisas. Afigura-se a aceitar 5 próximos comandos, quer a partir da PSP ou da USART. 0x55 Executa código começando em 0x0010. Carga 0x56 hex (este parece ter mais um subcomandos) 0x5a envia os dados 0x01 0x01 0x03 (Versão do BL??) Dois outros comandos basta ligar o erro e Ocupado LEDs e pára em um loop inffinite.
As seguintes rotinas estão relacionados ao que eu chamei a "carga hex" comando:
Em outra rotina a BL envia a seguinte string 0x5b ", 0810C9", 0x5d Outros envia respostas embeded na seguinte seqüência 0x5b, "0A000", U, 0x31, U, 0x5d. (onde U parece ser 0x31, 0x34, 0x36 e 0x37).
I didnt têm muito tempo para continuar com a análise. Eu nem vi o USB acompanhamento que foram postadas porque Im em um cyber. Mas acho que esses dados devem ser embalados na comunicação USB |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 03 abr 2006 23:30 Projeto para substituir CY7C64613 no ICD2 | | |
|
| Albert,
Verifiquei o serial comm versus o USB, USB usa um wrapper vale a série coisa. Parece que ele utiliza para controlar EP1 porto (é OUT e IN) e EP2 como porta de dados, apenas na (CID-> pc). |
|
| Voltar ao topo | |
 |
albert22
Joined: 20 jul 2004 Lugares: 95 Ajudado: 3
| 05 abr 2006 6:39 Re: Projeto para substituir CY7C64613 no ICD2 | | |
|
| Aqui estão meus avanços com o BL Não houve tal subcomandos. A carga só toma o comando hex hex registros e escreve os dados para o programa de memória 2 bytes de cada vez. Ele verifica a existência de diversos erros, incluindo o intervalo de endereço. Ap. para evitar a intensificação na BL programa. Isto confirma que a BL é allways residente no 877. O [0A000 ", U, 0x31, U]. (A 2. U é o primeiro U 1), é pouco provável que seja visto, porque é um relatório de erro. Erros incluem: má formatação, checksum, mau endereço gama e escrever EEPROM erro . A rotina espera por 16 caracteres começando com uma 0x3c ('<') e terminando com uma 0x3e ('>'). 16 caracteres este cabeçalho conter o endereço, comprimento e checksum para os dados que devem ser escritos em ASCII. Se o cabeçalho está correto AP. o BL respostas com "[0810C9]" Os dados cames após uma 0x7B Este formato parece ser diferente de um intel hex formato.
Zedman. Pode ser-lhe reconhecido algo como isto no RS232 Amanhã eu wil ser na minha casa e conseguir instalar hdd para verificar os logs e ver se posso ser de alguma ajuda. |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 05 abr 2006 12:17 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: mplab protocolo icd2 icd2.dll icd2w2k.sys mplbcomm.dll |
|
| Estou preso com esta coisa USB. E eu estou triste.
Eu realmente não sei o que fazer a seguir. Passei muito tempo a depuração icd2.dll.
O problema é: eu não posso ainda enviar um byte de volta para MPLAB.
Vou explicar o que eu encontrei até agora, embora ninguém realmente interessado em (apenas quero agarrar a coisa terminou). (Excepto: albert, Kripton, rkodaira, Silvio e os caras nesta discussão)
Então, MPLAB comunica com o ICD2 desta forma:
[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 dispositivo]
Se você optar por tipo de ligação USB que irá pedir ao dispositivo a partir do descritor ICD2 e verifica a versão do produto palavra, se é que ele é um 0x0003 Cypress baseada ICD2, se é 0x0010 que é um 4550 um baseado. Se 0x0010 encontrados do que diz o que eu tenho sido postados antes que o SO no ICD2 deve ser atualizado. É interessante que, se a versão (0100) no nome do ficheiro do OS.bin FFFF é modificado para que ele ignora este passo e verifica o bootloader versão. Aqui eu tive que patch ICD2.dll para tentar obtê-lo para verificar a versão do arquivo BL.bin também, é que mesmo codificados é definido para FFFF ele vai tentar atualizar, é por isso que é remendado (set codificados FFFF para baixo) agora diz o que eu mentoined muito antes: a bl versão é muito antiga, mas não pode ser atualizada enquanto ela é ativa.
Certo. Fiz um pequeno progresso a partir da amostra bootloader, com o correto dos descritores e tentando se comunicar com MPLAB, a fim de decifrar o protocolo e para emular o BL no novo 4550 ICD2. ICD2 que utiliza Kripton, (versão cipreste) define 7 OUT / IN desfechos, mas de acordo com os registos que utiliza apenas EP1 para IN / OUT e no EP2. (OUT meio PC-> Device) Parece que envia os comandos e dados específicos usb através EP1 fora, e volta no EP1, e envia os bytes readed da ICD2's 877 separados por ponto final EP2 pol
Quando tenta enviar MPLAB ª OS.bin para actualizar o fw os que emite uma chamada para o kernel getUSBdescriptor condutor, e envia um comando 0x12 bytes usando DeviceIoControl comando. Eu depurado, ela chega com sucesso para o 4550. Than MPLAB questões GetStatus uma chamada, e parece que a chamada a partir de parâmetros que espera 0x08 bytes de dados de volta. Eu configurar meu tampão com 8 bytes, e defina a propriedade para SIE. Mas ele nunca envia que 8 byte de volta (ela não aparece na USBMon). Basta aguardar. Não pode ser muitas coisas. Talvez eu st errado com a configuração de 4550, mas eu tentei com outro progs e ele funciona, pode enviar bytes volta. Sei que o acolhimento deve enviar e no comando para deixar o dispositivo em enviar o que quer. Mas quando eu depurou MBLBCOMM, eu vi que o DeviceIoControl comando falhou! I tought que talvez alguns inteligência foi construído no. Sys e ele cai, porque o pacote de conteúdo que é errado, mas eu acho que deveria ser uma tarefa de nível superior. Quando eu chegar em casa eu vou verificar o valor do GetLastError.
Alguém tem alguma idéia de como posso ver se existe um pacote enviado a EM, ou como posso continuar a? |
|
| Voltar ao topo | |
 |
Kripton2035
Joined: 19 jul 2001 Lugares: 482 Ajudado: 15 Localização: Terra
| 05 abr 2006 16:59 Projeto para substituir CY7C64613 no ICD2 | | |
|
| Pode ser que você deveria ligar para um 877 da PSP do porto 4550 para ver o que está passando, e com o programa a 877 bootloader temos? pode ser o que você está esperando bytes provêm do EP2 e assim o 877?
queres que eu enviar outro arquivo de log uma condição precisa? pela forma, é certo que você precisa rokaida um registo com os seus 4550 icd2 ..
PS: Não estou interessado em que o projecto .. Estou apenas curioso! Já tenho um usb icd2! |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 05 abr 2006 20:08 Projeto para substituir CY7C64613 no ICD2 | | |
|
| Graças Kripton,
Vou avisá-lo quando eu precisar de mais despejo , É um pouco mais complexa do que só de passagem para os bytes 877 e verso, que tem um protocolo wrapper sobre ela. O que você disse foi extremamente útil, mas rkodeira afeito sacrify seu novíssimo ICD2 ... Se ele seria, do que com o despejo de seu processo de atualização OS definir o protocolo bem ... |
|
| Voltar ao topo | |
 |
Kripton2035
Joined: 19 jul 2001 Lugares: 482 Ajudado: 15 Localização: Terra
| 05 abr 2006 22:09 Projeto para substituir CY7C64613 no ICD2 | | |
|
| | bem eu não acho que ele precisa de sacrify seu icd2! apenas algumas lixeiras com usbmon como eu fiz .. espero que o meu icd2 ainda está a trabalhar! |
|
| Voltar ao topo | |
 |
albert22
Joined: 20 jul 2004 Lugares: 95 Ajudado: 3
| 05 abr 2006 22:16 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: icd2 carga comando hex |
|
| Não consigo instalar o HHD monitorar os logs para ver, porque eu só tenho w98 em casa. Você pode exportar um dump do SO para baixar um arquivo. Txt, para mim? ------- Como o CY redefine o 877? Há um sinal (pino 43) à base de Q1 cujo coletor é MCLR. Mas isso vai para um conector chamado PROG. Agora percebo que este sinal deve ir para o 877 também. Não seria necessário saber qual o comando reinicializa USB 877. Pode ser que está em um dos parâmetros de controle? Eu não sei qual é a função deste PROG conector. mas o excesso de parâmetros podem ser relacionados a ela. ---------- Um dos SO carregado para o ICD2 parece ser: ICD01020405.hex tenho tentado disassemby-lo, mas eu não posso chegar a disassembler para substituir o hex endereços com o nome dos ficheiros. Vai levar mais tempo para descobrir como ele funciona. Um fato interessante é que o código começa a 0x0010. Lembre-se que o BL chamadas este endereço com o comando executar.
BL A versão relatada por mplab é 01.01.01.00 este vai bastante bem com o comando que responde BL 01,01,01,03 --------- Não há DPot (MCP41xxxx) no Brasil CID. Como eles fixados Vpp? A maioria dos clones tem um fixo Vpp. Será que isto significa que o brasileiro CID é apenas um clone de baixo custo e não o novo ICD2? Eu não acho que fui para um microchip fixo VPP. Se existe um outro método de controle da VPP, diferente do que seria necessário DPot firmware alterações do CID OS. O antigo SO não iria funcionar no novo um. Essa pode ser a causa de que a DLL está verificando a versão. |
|
| Voltar ao topo | |
 |
Zedman
Joined: 13 out 2003 Lugares: 294 Ajudado: 2
| 05 abr 2006 22:32 Projeto para substituir CY7C64613 no ICD2 | | | tags: mplab protocolo icd2 icd2w2k.sys icd2w2k download 4550 bootloader escrever icd2w2k.sys download download icd2w2k |
|
| Não penso que se deve lidar com qualquer coisa no que respeita ao circuito ou protocolo ou de ligação entre 877 e 4550 ainda. Penso que todos nós precisamos é escrito em 4550 as caixas fornecidas com MPLAB. Devíamos escrever um bootloader compatível com o icd2w2k.sys para obter o OS.bin baixado, e depois disso podemos scracth nossas cabeças como o 877 está conectado.
Adicionado após 5 minutos:
Em ICD2br usa outro tipo de chip que gera o Vpp. Rkodaira mentoined, marque os lugares antes. |
|
| Voltar ao topo | |
 |
silvio
Joined: 31 dez 2001 Lugares: 800 Ajudado: 90
| 06 abr 2006 2:36 Re: Projeto para substituir CY7C64613 no ICD2 | | | tags: icd2w2k.sys icd2w2k download 4550 bootloader escrever icd2w2k.sys download download icd2w2k |
|
| | Zedman escreveu: | Devíamos escrever um bootloader compatível com o icd2w2k.sys para obter o OS.bin baixado.
|
Sim, esta é a principal razão pela qual eu disse que dissasembling CY fw é inútil, enquanto temos o SO e BL bin fornecidos pela Microchip. Para iniciar a codificação a partir do zero para 4550 e simular o CY fw seria morosa e inútil. That's Aprecio os esforços da zedman.
No entanto, por vezes, não posso ajudar-me a pedir esta pergunta estúpida: Se o BL não pode ser atualizada enquanto ela é ativa, o que era da Microchip ICD2 designers abordagem para a atualização? Paralelamente programador antes solda 4550? Ou através ICSP com uma imagem limpa bin baixado após boot bloco apagado? Se rkodaira vai achar que a CEC ea EBTRB bits são apuradas E, em seguida, como pode ser carregado OS.bin em 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 ? |
|
| Voltar ao topo | |
 |
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] |
|
| Voltar ao topo | |
 |
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. |
|
| Voltar ao topo | |
 |
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. |
|
| Voltar ao topo | |
 |
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 |
|
| Voltar ao topo | |
 |
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... |
|
| Voltar ao topo | |
 |
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. |
|
| Voltar ao topo | |
 |
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 (?) . |
|
| Voltar ao topo | |
 |
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. |
|
| Voltar ao topo | |
 |
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... |
|
| Voltar ao topo | |
 |
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. |
|
| Voltar ao topo | |
 |
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
|
|
|
| Voltar ao topo | |
 |