Página 1 de 1

Dois Firmwares

MensagemEnviado: 17 Ago 2014 11:12
por vtrx
Alguém sabe se é possível,usando Assembler ou C18,gravar 2 Firmwares independentes no mesmo PIC?
Seria o 18F2550 e atraves de um Jumper,selecionar qual Firmware vai dar Boot.

Re: Dois Firmwares

MensagemEnviado: 17 Ago 2014 12:40
por barboza
vtrx escreveu:Alguém sabe se é possível,usando Assembler ou C18,gravar 2 Firmwares independentes no mesmo PIC?
Seria o 18F2550 e atraves de um Jumper,selecionar qual Firmware vai dar Boot.



Código: Selecionar todos
void main(void)
{
   if (jumper)
   {
       main1();
   }
   else
   {
      main2();
   }
}

void main1(void)
{
    // blablabla
}

void main2(void)
{
   // bloblobloblo

}

Re: Dois Firmwares

MensagemEnviado: 18 Ago 2014 09:50
por tcpipchip
dual bootloader ?

Re: Dois Firmwares

MensagemEnviado: 18 Ago 2014 10:36
por vtrx
dual bootloader ?

Alguma coisa assim,tipo por uma Dip seleciona qual Firmware o PIc vai carregar na inicialização.
Imagine dois Firmwares diferente mas usando a mesma placa,mas sem o usuario ter que regravar nada pois é um usuario comum que só tem que plugar e utilizar o circuito.

void main(void)
{
if (jumper)
{
main1();
}
else
{
main2();
}
}

void main1(void


O PIC usa a interface USB,esse método não fara uma confusão na enumeração do dispositivo?

Re: Dois Firmwares

MensagemEnviado: 18 Ago 2014 13:38
por andre_luis
Esse método sugerido acima, pode ser problemático se o microcontrolador acusar falta de recursos ( RAM, Stack ), pois se forem programas muito diferentes - com variaveis distintas - isso pode ser um gargalo. Para contornar essa limitação há até uma maneira de minimizar isso ( realizando a nomeclatura de algumas das variaveis por diretiva Define ), mas á preciso saber mais detalhes do seu caso pra dar um palpite mais preciso.

Re: Dois Firmwares

MensagemEnviado: 18 Ago 2014 16:01
por vtrx
É simples.
Tenho um dispositivo que precisa,via uma chave ou software via HID,ser selecionado ou como Keyboard ou Joystick e que tenha uma interface custom HID,de é onde vou setar variáveis na Eeprom interna.
Trocando em miudos,a interface é selecionável via um programa no PC que se comunica com o dispositivo via USB HID,mas ao mesmo tempo é um dispositivo de teclado ou Joystick e isso é selecionado com o programa no PC,mas ainda não tenho conhecimento de como montar o descritor para mais de um dispositivo,apenas conheço como enumerar um Keyborad e mouse na mesma interface.
Então tenho 3 alternativas.
1-Usar a interface serial do PIC para setar a eeprom interna mas isso vai encarecer o resultado além de ficar dependente de cabo USB/Serial.
2-Usar uma chave DIP para selecionar qual firmware Bootar mas isso envolve em algo quer não conheço.
3-Gerar 2 ou 3 interfaces HID,mas isso eu ainda não tenho conhecimento.

Re: Dois Firmwares

MensagemEnviado: 18 Ago 2014 22:00
por vtrx
Fiz uma pesquisa rapida e verifiquei que preciso implementar um Feature Report no Firmware.
Alguem?

Re: Dois Firmwares

MensagemEnviado: 22 Ago 2014 22:49
por vtrx
A 'solução' de 2 Firmwares eu ja descartei pois eu precisava de duas interfaces HID no mesmo PIC e ja consegui implementar,por ironia eu desenvolvi no CCS :mrgreen:

Re: Dois Firmwares

MensagemEnviado: 23 Ago 2014 15:18
por Djalma Toledo Rodrigues
Não é dois firmW

Firmw. é Fimw.

Pense em um Programa estruturado
Inicia testa é mause ?
Case 1
Else
case 2

mas, é tão simples que qualquer 'Jump da vida' da conta do recado

Dj

Re: Dois Firmwares

MensagemEnviado: 23 Ago 2014 19:50
por Rodrigo_P_A
Djalma Não, não é. acredito que você entendeu errado ele precisa emular um teclado ou joystick e poder alterar a configuração sem regravar o PIC.
Essa solução que ele implementou foi bem legal. Conseguiu gerar um descriptor com uma interface hid para configurar sem tem que regravar ou trocar o chip e continuar emulando as interfaces que ele precisa.
Talvez por causa da pergunta deve ter gerado confusão.

Re: Dois Firmwares

MensagemEnviado: 23 Ago 2014 19:52
por vtrx
Duas interfaces USB HID não são enumerados pelo Windows com 'jumpers'.
O Rodrigo entendeu bem.
Dois firmwares era apelação minha.
Com essa alternativa minha interface fica diferenciada das outras opções onde você encomenda a teclas pré gravadas,assim o usuario apenas abre um programa proprio e escolhe sequencia,teclas etc e fica gravado na Eeprom do PIC em tempo real.

Re: Dois Firmwares

MensagemEnviado: 24 Ago 2014 16:01
por Maffeis
Voltando um pouco

a questão de memoria não poderia ser resolvido com os malloc da vida.

Soh iria alocar a memoria se o código fosse executado.

correto ou muito errado?

Re: Dois Firmwares

MensagemEnviado: 25 Ago 2014 11:36
por Djalma Toledo Rodrigues
OK vtrx

Ciente, Rodrigo_P_A

Abraços
Dj

Re: Dois Firmwares

MensagemEnviado: 25 Ago 2014 12:11
por Rodrigo_P_A
Maffeis escreveu:Voltando um pouco

a questão de memoria não poderia ser resolvido com os malloc da vida.

Soh iria alocar a memoria se o código fosse executado.

correto ou muito errado?


Seria se:
o PIC rodasse programas na RAM, o que pelo eu sei não roda.
Se você conseguisse compilar seu código independente da posição de endereço, ou seja tudo com endereço relativo.
Se você criasse um método de pegar o endereço de uso de RAM à partir de um valor pré-determinado.

Fora outros detalhes.... Eu já fiz essa brincadeira com os ARMs, e é bem legal.

Ou seja, acho meio impossível fazer isso com esses PICzinhos.