Bootloader em pic 18f2550

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Bootloader em pic 18f2550

Mensagempor mrcdlf » 14 Dez 2008 12:25

Pessoal,

estou apanhando um bocado para conseguir gravar um bootloader no pic 18f2550... será que alguem poderia me dar uma ajuda???

t+
mrcdlf
Bit
 
Mensagens: 18
Registrado em: 23 Out 2008 08:01

Mensagempor RobL » 15 Dez 2008 07:43

Diga onde precisa ajuda que aí aparece alguém que pode ter tido o mesmo problema.

Portanto na tentativa de ajudar provavelmente vou dizer o que você já sabe e já fez:

1-O bootloader é um programa como um outro qualquer. Portanto deve ser analisado como qualquer programa.

2- O problema estaria na área de bootloader ou no envio dos dados para o microcontrolador? Separe isso primeiro. Não esquecer que é uma comunicação serial (normalmente) e os dois lados tem que ter a mesma velocidade de TX/RX. Veja se na inicialização do seu bootloader, os bauds, se seu cristal está adequado e setados igual ao baud do PC.

3-Tente simular o seu bootloader com uma ferramenta qualquer. Desmebre o programa:
3-1 Analise a partida. Está saltando para o endereço correto?
3-2 Está setando tudo que tem que setar (baud rate, usart ou spi, portas para seu PIC, etc)?
3-3 Está mandando gravar na área correta e com o comando correto?
3-4 Interrupção desabilitada durante gravação?

O maior problema de qualquer programa é copiar e colar, sem analisar o mesmo.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor mrcdlf » 15 Dez 2008 10:43

analisei o que me disse...

estou montando esse projeto USB HID http://www.semifluid.com/?p=23#more-23
montei como esta descrito...
para gravar o bootloader montei como está no Tiny
http://www.etc.ugal.ro/cchiculita/software/max232.png

e está dando o seguinte erro:
Searching for PIC ...
pic sending unknown data: "K" <> Ah=|
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
ERROR!
mrcdlf
Bit
 
Mensagens: 18
Registrado em: 23 Out 2008 08:01

Mensagempor RobL » 15 Dez 2008 12:02

Pelo erro é o que foi comentado no ítem 2 acima (baudrate diferente).
Verifique a setagem do baudrate, conforme ítem 3-2 acima.

Extendendo: Pegue o valor do seu cristal, veja o que está setado no registro de sua uart, para o baudrate, veja no manual e faça as operações (contas).
Se seu baud estiver diferente (creio que sim) altere o valor do registro responsável pelo baud, no programa. Deve estar logo no início do bootloader onde começa a setar tudo.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor mrcdlf » 15 Dez 2008 12:33

RobL escreveu:Pelo erro é o que foi comentado no ítem 2 acima (baudrate diferente).
Verifique a setagem do baudrate, conforme ítem 3-2 acima.

Extendendo: Pegue o valor do seu cristal, veja o que está setado no registro de sua uart, para o baudrate, veja no manual e faça as operações (contas).
Se seu baud estiver diferente (creio que sim) altere o valor do registro responsável pelo baud, no programa. Deve estar logo no início do bootloader onde começa a setar tudo.


estou usando um cristal de 20mhz e estou setando 115,200 baud
creio que está certo...
por acaso pode ser o codigo que não está deixando inserir o bootloader?
mrcdlf
Bit
 
Mensagens: 18
Registrado em: 23 Out 2008 08:01

Mensagempor RobL » 15 Dez 2008 14:12

No código do seu bootloader (programa residente no pic), acompanhe ele e veja onde está sendo setado o registro do baud para sua uart.

estou usando um cristal de 20mhz e estou setando 115,200 baud
creio que está certo...
por acaso pode ser o codigo que não está deixando inserir o bootloader?


Da forma que você escreve, você está confundindo bootloader com o seu código a carregar através do bootloader.
Veja, o bootloader já está inserido em seu PIC ou não está?
O bootloader tem que ser posto no PIC através de um gravador comum, como se fosse um programa qualquer. Será que está aí o problema e confusão?!!!
Alguns micros costumam ter fuses para gravar o bootloader na área correta.

Caso seu bootloader esteja dentro do PIC:

O problema de baudrate está no seu código de bootloader. Você precisa pegar os valores do código do Tiny bootloader, referente ao baudate e calcular para o seu cristal e para o seu chip e ver se este cálculo está dando exatemente o valor setado no programa no lado PC (Win, Linux).
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor mrcdlf » 15 Dez 2008 14:45

RobL escreveu:No código do seu bootloader (programa residente no pic), acompanhe ele e veja onde está sendo setado o registro do baud para sua uart.

estou usando um cristal de 20mhz e estou setando 115,200 baud
creio que está certo...
por acaso pode ser o codigo que não está deixando inserir o bootloader?


Da forma que você escreve, você está confundindo bootloader com o seu código a carregar através do bootloader.
Veja, o bootloader já está inserido em seu PIC ou não está?
O bootloader tem que ser posto no PIC através de um gravador comum, como se fosse um programa qualquer. Será que está aí o problema e confusão?!!!
Alguns micros costumam ter fuses para gravar o bootloader na área correta.

Caso seu bootloader esteja dentro do PIC:

O problema de baudrate está no seu código de bootloader. Você precisa pegar os valores do código do Tiny bootloader, referente ao baudate e calcular para o seu cristal e para o seu chip e ver se este cálculo está dando exatemente o valor setado no programa no lado PC (Win, Linux).


realmente estou um pouco confuso no que se refere a bootloader...
no artigo daquela pagina que postei o autor disponibiliza os codigos e inclusive os HEX na verdade um HEX do codigo e um do bootloader e o do bootloader tem que ser gravado com aquele programinha tinybootloader, com um rs232 level convert....
dai que vem minha confusão... se tiver oportunidade de dar uma olhadinha na pagina que mencionei acima...
mrcdlf
Bit
 
Mensagens: 18
Registrado em: 23 Out 2008 08:01

Mensagempor RobL » 15 Dez 2008 15:08

Não, o bootloader tem que ser gravado com um gravador comum na área para bootloader do microcontrolador (veja se há fuses para isso e programe os fuses).

O seu código, que você vai querer rodar no pic, é que será carregado no PIC atrevés da interface fornecida, via RS232. Poderia usar até hiperterminal do windows para isso ou qualquer programa para enviar seu código ao PIC.

O bootloader é um programa que fará o papel do gravador quando você quizer gravar o seu código, por exemplo, piscar um led.

Acho que você não tem nada dentro do PIC por isso está dando erro de baudrate, ou seja, o PIC não está respondendo.

Primeiro tem que gravar o hex do bootloader dentro do PIC na área correta para ele.

Agora é só reler o artigo sobre o Tinybootloader e o manual do seu PIC (sobre bootloader) e começar.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor mrcdlf » 15 Dez 2008 15:24

RobL escreveu:Não, o bootloader tem que ser gravado com um gravador comum na área para bootloader do microcontrolador (veja se há fuses para isso e programe os fuses).

O seu código, que você vai querer rodar no pic, é que será carregado no PIC atrevés da interface fornecida, via RS232. Poderia usar até hiperterminal do windows para isso ou qualquer programa para enviar seu código ao PIC.

O bootloader é um programa que fará o papel do gravador quando você quizer gravar o seu código, por exemplo, piscar um led.

Acho que você não tem nada dentro do PIC por isso está dando erro de baudrate, ou seja, o PIC não está respondendo.

Primeiro tem que gravar o hex do bootloader dentro do PIC na área correta para ele.

Agora é só reler o artigo sobre o Tinybootloader e o manual do seu PIC (sobre bootloader) e começar.


realmente eu estou mais perdido do que cego em tiroteio...
já li e reli milhoes de vezes... acho que a solução deve estar na minha cara e não estou conseguindo ver...
vou esfriar a cabeça e depois voltarei a ver o que está acontecendo...


mais só para ver se eu entendi... esse bootloader carregado pelo rs232 no caso seria para mim "atualizar" o codigo sem precisar retirar o pic do circuito?
mrcdlf
Bit
 
Mensagens: 18
Registrado em: 23 Out 2008 08:01

Mensagempor RobL » 15 Dez 2008 16:03

Bootloader é para você carregar um programa sem um gravador, ou seja, através de um terminal (exemplo hyperterminal, tynibootloader interface PC, etc.)

O bootloader é um programa que programa seu chip (SelfProgram Flash).

No seu caso, com qualquer gravador de PIC, grave o arquivo "SAC_tinybld18F2550usb_20MHz_115200_48MHz.HEX" no pic.

Depois, através do programa do Tiny entre com o hex do programa que você quer gravar e posteriormente rodar. Esse sim via RS232.

Após ter o bootloader dentro do PIC você poderá carregar qualquer outro programa para ele sem gravador, através do PC (ou outro microcontrolador).
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor RobL » 15 Dez 2008 16:10

mais só para ver se eu entendi... esse bootloader carregado pelo rs232 no caso seria para mim "atualizar" o codigo sem precisar retirar o pic do circuito?


Um pouco mais que isso. Posso atualizar um programa usando um gravador ISP sem tirar o chip do circuito, mas preciso usar o programador(gravador).

Com o bootloader, já dentro do chip, qualquer cidadão comum, sem um gravador, pode atualizar um programa, disponível na internet e pelo seu PC passar para o microcontrolador.

Mas para introduzir o bootloader no microcontrolador preciso ter um gravador.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56


Voltar para PIC

Quem está online

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

x