Programacao a distancia - OTA

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Programacao a distancia - OTA

Mensagempor lucasromeiro » 19 Ago 2015 01:36

Olá galera!

Estou desenvolvendo uma soucao e preciso implementar uma atualizacao remota do firmware do meu pic!
Meu pic está ligado a um modem gprs que tem capacidade de receber a atualizacao via serial.
Tenho tambem uma eeprom externa de 2mb em que posso armazenar o novo firmware para verificacao ou caso necessite de um buffer ou reboot.
Achei pouquissimas coisas sobre o assunto, a parte mais plausivel que eu vi, foi usar o bootloader para atualizar o firmware armazenado na eeprom, mas teria que desenvolver uma rotina que substitua a aquisicao dos dados via serial para i2c que é a comunicacao da minha memoria. devem ter outras dificuldades envolvidas.

Alguem ja fez isso?
Alguem pode me ajudar?
Obrigado a todos
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Re: Programacao a distancia - OTA

Mensagempor andre_luis » 19 Ago 2015 08:29

Não considero o PIC uma solução adequada pra esse tipo de upload, pois o core possui uma arquitetura Harvard, e não permite que seu programa manipule a área de programa.

Já fiz algo parecido com o que voce quer, mas no MSP430F149 da Texas, já que sua arquitetura diferente permite que façamos acesso á area de programa tal como na área de dados, e com a vantagem de possuir um esquema de "senha" pra validar o acesso á Flash.

A vantagem dessa abordagem é que no meu caso, eu mantinha as 2 versões do programa, a nova e a antiga, sendo que na inicialização era conferido qual dos 2 vetores tinha sido validado por último. Ou seja, o pacote recebido pela serial era gravado e checado pelo CRC, e somente então validado. O controle era simples: Os ponteiros para esses endereços possuiam um contador, e o que tivesse a maior contagem na sequencia era o correto. A desvantagem era que precisava que o programa não fosse muito grande, pois teria sempre 2 versões armazenadas.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Programacao a distancia - OTA

Mensagempor tcpipchip » 19 Ago 2015 08:52

O teu Modem não tem FAT ?

Aconselho utilizares aqueles modems programados em PYTHON, assim voce pode faze-lo ter controle com o PIC e enviar um arquivo via serial a ele (com BOOTLOADER SERIAL)
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Programacao a distancia - OTA

Mensagempor lucasromeiro » 19 Ago 2015 11:19

tcpipchip escreveu:O teu Modem não tem FAT ?

Aconselho utilizares aqueles modems programados em PYTHON, assim voce pode faze-lo ter controle com o PIC e enviar um arquivo via serial a ele (com BOOTLOADER SERIAL)

Quanto a ter fat nao sei, busquei no datasheet sobre isso e nada foi mostrado!
Ele tem suporte a python sim.

pode me explicar um pouco melhor como seria isso?
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Re: Programacao a distancia - OTA

Mensagempor tcpipchip » 19 Ago 2015 15:54

Se tem suporte ao PYTHON, podes pegar na nuvem o BIN e gravar no modulo.

Ai voce pode faze-lo se comunicar com a FLASH do PIC via BOOTLOADER.
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Programacao a distancia - OTA

Mensagempor lucasromeiro » 19 Ago 2015 19:20

tcpipchip escreveu:Se tem suporte ao PYTHON, podes pegar na nuvem o BIN e gravar no modulo.

Ai voce pode faze-lo se comunicar com a FLASH do PIC via BOOTLOADER.


tcpipchip, eu nunca fiz este tipo de procedimento.
Voce pode me ajudar com alguma informacao mais detalhada?
bin? nao seria HEX?
Ainda nao consegui visualizar como eu poderia fazer este procedimento.
Eu so entendo como funciona o bootloader, ja utilizei uma vez, mas neste caso imagino que eu precise editar o arquivo fonte do bootloader, correto? ou nao?
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Re: Programacao a distancia - OTA

Mensagempor tcpipchip » 20 Ago 2015 10:04

Tudo bem, pode ser .HEX

Faz um exemplo em PYTHON no PC para transferir um programa via serial ao PIC...

Depois porta para o MODEM
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Programacao a distancia - OTA

Mensagempor lucasromeiro » 20 Ago 2015 17:03

tcpipchip escreveu:Tudo bem, pode ser .HEX

Faz um exemplo em PYTHON no PC para transferir um programa via serial ao PIC...

Depois porta para o MODEM

mas neste caso o modem teria que resetar o pic e acionar uma saida para ativar o bootloader mode, correto? (duvida)
meu problema é:
tenho um wdt externo que se nao der um pulso nele com frequencia de 1,6 segundos, reseta o pic externamente no mclr.
estou pensando em formas de contornar isso.

pensando como contornar o reset do mclr externo e como por o pic no modo bootloader.
alguma ideia?
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Re: Programacao a distancia - OTA

Mensagempor tcpipchip » 20 Ago 2015 17:51

Dependendo do bootloader do PIC, basta apenas resetar o PIC.
Usa um GPIO do modem para desabilitar o WDT.
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Programacao a distancia - OTA

Mensagempor lucasromeiro » 22 Ago 2015 16:48

tcpipchip escreveu:Dependendo do bootloader do PIC, basta apenas resetar o PIC.
Usa um GPIO do modem para desabilitar o WDT.

So tem mais um problema,
lembrei essa noite.
o meu modem tem um reset externo comandado pelo pic....
ou seja: se o pic vir a resetar o modem reseta junto.
terei que usar outra gpio ou talvez a mesma para impedir esse reset...
imaginando aqui como seria a melhor forma para tal.....
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Re: Programacao a distancia - OTA

Mensagempor tcpipchip » 22 Ago 2015 17:19

Qual modelo de modem usas e qual a funcao do PIC ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Programacao a distancia - OTA

Mensagempor mastk » 22 Set 2015 15:24

Cara ja vi uma historia como a sua, no caso, recebi o novo firmware e colocava em uma FLASH/EEPROM externa ao MCU, disso se conferia o CRC, se bateu um o MCU grava a propria memoria de programa trecho por trecho e se resetava ao final, nao eh dificil dependendo, os MCU no caso eram Von Neumann e nao creio que os Harvad atuais nao tenham alguma de fazer todo esse processo.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Re: Programacao a distancia - OTA

Mensagempor mastk » 22 Set 2015 15:26

tcpipchip escreveu:Se tem suporte ao PYTHON, podes pegar na nuvem o BIN e gravar no modulo.

Ai voce pode faze-lo se comunicar com a FLASH do PIC via BOOTLOADER.


Que modem tem suporte legal a Python hoje em dia? Anos atras a Telit tinha uma linha, mas eles mesmo falavam que nao era para usar a parte de Python para nada serio, eles nao garantiam.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Re: Programacao a distancia - OTA

Mensagempor EDSONCAN » 23 Set 2015 07:54

Acho que fui o único maluco que fez um rastreador inteiro em Phyton e os travamentos que davam eram muito difícil de resolver acabei abandonando.

O G20 por exemplo trabalhava em C e tinha uma sistema operacional de tempo real bem mais fácil de usar e com o escalonamento de processo ficava mais simples resolver os travamentos.
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Re: Programacao a distancia - OTA

Mensagempor lucasromeiro » 25 Out 2015 15:02

Olá galera!!
Desculpem a demora!
Estava resolvendo outras pendencias, inclusive deste projeto.
Agora retornei com tudo!
Preciso fazer esta parte!
Foi a ultima que sobrou!
Eu andei pesquisando e nao achei uma alternativa legal!
Nao quero depender do python no modem!
Imaginei algo assim:
Recebo os dados, gravo na eeprom, ativo um flag na eeprom, reinicio o pic, quando ele reinicia ele ve o flag da eeprom e inicia rotina de auto-gravacao.
Mas estou bem perdido.
Preciso de ajuda

Eu tenho:
pic: 18f2685
modem:gl865 quad
memoria externa: 24LC1025

HELP
lucasromeiro
Byte
 
Mensagens: 121
Registrado em: 22 Out 2009 20:32

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x