Página 1 de 1
Atualização de firmware(bootloader)

Enviado:
20 Jan 2009 10:32
por baltazar
Olá senhores,
Estou desenvolvendo um projeto com um PIC18F4580 e quero atualizar o firmware em campo.
Meu bootloader funcionar perfeitamente, o problema é que não sei como escrever um software para enviar o .HEX para o PIC.
Estou utilizando outros softwares só para enviar o .HEX para o PIC, mas preciso ter isso implementado no meu código antes de liberar o equipamento para o cliente.
Alguém aí pode me ajudar?
A interface serial entre o PC e o PIC funciona perfeitamente!
O software está sendo desenvolvido em Delphi e utilizamos o TComPort para a comunicação serial.
Abraços e obrigado!

Enviado:
20 Jan 2009 10:49
por RobL
Não precisa escrever um soft para enviar um arquivo hex para o micro.
Use o Hyper terminal ou um monte de outros programas prontos na net similar a esse e até com mais recursos.
Pode até mesmo fazer um arquivo .bat.

Enviado:
20 Jan 2009 10:54
por baltazar
Robl,
É através desses programas que estou fazendo a atualização do firmware atualmente, porém quero ter isso implementado como uma função do meu software de comunicação com o equipamento, assim o usuário não terá que abrir outro programa quando for atualizar o firmware, ele fará isso diretamente no próprio software de configuração que enviarei junto com o produto.
E é aí que estou agarrado, nunca implementei esse tipo de coisa...
Abraço!

Enviado:
20 Jan 2009 15:03
por RobL

Enviado:
21 Jan 2009 07:55
por baltazar
Robl,
Ainda estou agarrado aqui, mas os links que vc passou me ajudaram em outro problema. Obrigado!rss
Achei que seria bem mais fácil encontrar informação sobre isso, mas já revirei o Google e até agora nada...
Vou continuar tentando aqui, assim que tiver uma novidade eu volto a postar...
Abraços!

Enviado:
21 Jan 2009 11:37
por RobL
Vamos lá.
1- Criar um protocolo, baseado no intel hex 8, para informar quantos bytes serão recebidos e o checksum.
2-Terá que abrir um arquivo para leitura, o .hex
3-Vai pegar os dados lido do .hex em uma variável e usar a função Write do Tcomport.
Essa variável poderá ser byte ou caractere.
Veja esse exemplo com TComPort
http://www.wimb.net/files/dld.php?app0011s.zip
Pagina com o exemplo:
http://www.wimb.net/index.php?s=delphi&page=11
Há algo mais interessante que o TComPort, o Synaser.

Enviado:
05 Fev 2009 14:20
por baltazar
Resolvido!
Estudei melhor o código do bootloader que estou utilizando aqui e consegui implementar o mesmo protocolo no meu software.
Agora outra dúvida, sempre que quero atualizar o firmware, eu mando o PIC reinicializar(reset_cpu() no CCS), daí ele entre executando o bootloader, verifica o pino que eu estabeleci e entra na rotina de atualização ou não.
Pois bem, minha pergunta é, não teria saltar diretamente para a área de bootloader sem precisar reiniciar o microcontrolador?
Acredito que sim, mas não tenho idéia de como fazer, ou melhor, pra onde saltar...
Abraços e obrigado pela ajuda!