Página 1 de 2
Programacao a distancia - OTA

Enviado:
19 Ago 2015 01:36
por lucasromeiro
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
Re: Programacao a distancia - OTA

Enviado:
19 Ago 2015 08:29
por andre_luis
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.
Re: Programacao a distancia - OTA

Enviado:
19 Ago 2015 08:52
por tcpipchip
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)
Re: Programacao a distancia - OTA

Enviado:
19 Ago 2015 11:19
por lucasromeiro
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?
Re: Programacao a distancia - OTA

Enviado:
19 Ago 2015 15:54
por tcpipchip
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.
Re: Programacao a distancia - OTA

Enviado:
19 Ago 2015 19:20
por lucasromeiro
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?
Re: Programacao a distancia - OTA

Enviado:
20 Ago 2015 10:04
por tcpipchip
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
Re: Programacao a distancia - OTA

Enviado:
20 Ago 2015 17:03
por lucasromeiro
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?
Re: Programacao a distancia - OTA

Enviado:
20 Ago 2015 17:51
por tcpipchip
Dependendo do bootloader do PIC, basta apenas resetar o PIC.
Usa um GPIO do modem para desabilitar o WDT.
Re: Programacao a distancia - OTA

Enviado:
22 Ago 2015 16:48
por lucasromeiro
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.....
Re: Programacao a distancia - OTA

Enviado:
22 Ago 2015 17:19
por tcpipchip
Qual modelo de modem usas e qual a funcao do PIC ?
Re: Programacao a distancia - OTA

Enviado:
22 Set 2015 15:24
por mastk
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.
Re: Programacao a distancia - OTA

Enviado:
22 Set 2015 15:26
por mastk
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.
Re: Programacao a distancia - OTA

Enviado:
23 Set 2015 07:54
por EDSONCAN
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.
Re: Programacao a distancia - OTA

Enviado:
25 Out 2015 15:02
por lucasromeiro
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