Página 1 de 2
BootLoader Pic18F4620

Enviado:
03 Dez 2009 09:33
por Juliana Mariana
Gostaria de um bootloader para o PIC18F4620, com cristal de 20MH, ja tentei usar o Tiny, mas não funciona, e tb tentei com ccs, mas ele grava o programa apenas uma vez.

Enviado:
03 Dez 2009 11:40
por tcpipchip
O que nao funciona no PIC18F4620 ?
Voce setou o BAUD RATE correto na IDE do BOOTLOADER ? O teu gravador reconheceu que é HS o cristal ?
Deveria funcionar sim!
Eu usei...mas nao para o 4620, mas para 252 e 452
Re: BootLoader Pic18F4620

Enviado:
03 Dez 2009 11:49
por fabim
Juliana Mariana escreveu:Gostaria de um bootloader para o PIC18F4620, com cristal de 20MH, ja tentei usar o Tiny, mas não funciona, e tb tentei com ccs, mas ele grava o programa apenas uma vez.
qual seria o compilador, qual seria o bootloader?
fabim

Enviado:
03 Dez 2009 12:27
por Juliana Mariana
No caso do bootloader em asm para o Tiny, eu tenho um programa para o Pic18F2620, entao modifiquei o Pic e o BAUD RATE no programa, ele compila normalmente, mas quando tento mandar o programa ele não consegue nem se quer indentificar o Pic.
E no caso do bootloader em C no CCS, ele compila, grava o programa e eu ate consigo transmitir, mas apenas uma vez. Por algum o motivo meu programa sobre-escreve o bootloader.

Enviado:
03 Dez 2009 12:33
por fabim
olha, provavelmente.
Este do CCS foi feito para isto mesmo...
Agora veja bem uma coisa.
Bootloader, você precisa saber onde ele foi gerado, se no fim da flash ou no inicio da flash.
Se foi no inicio, por exemplo considerando 1000 posições.
Quando você for compilar o seu programa, a IDE deve estar ciente que ela irá desconsiderar os primeiros 1000 bytes, e iniciar o ORG 0 ou seja ponto zero, da posição 1000 + 1..
Se por exemplo, tu tem o bootloader que é no inicio da flash, com 1000 posições, e criar um projeto sem que a IDE esteja ciente disto, ele vai montar o codigo a partir do endereço 0.
Se ele montar por exemplo uma rotina com endereço 620.
Observe que 620 esta dentro do bootloader, ou seja ele se perde e vira bagunça.
De outra liga novamente no APP do bootloader que esta usando e observe estes detalhes .
Abraços
Fabim

Enviado:
03 Dez 2009 12:39
por Juliana Mariana
Desculpe minha falta de informacao,mas oq é IDE ?
E no caso esse org que vc disse deve estar no meu bootloader ou no meu programa

Enviado:
04 Dez 2009 14:51
por tcpipchip
Juliana
Pega o .hex direto do TINY, muda o valor do cristal no Hardware mesmo.

Enviado:
04 Dez 2009 17:05
por Djalma Toledo Rodrigues
Juliana Mariana escreveu: ... oq é IDE ? E ... org ... deve estar no ... bootloader ou no meu programa
Ide: Integrated Development Environment ou Ambiente Integrado de Desenvolvimento --- Ex.: MPLAB
Org: No seu Programa -- Seguir o que Fabim recomendou
DJ

Enviado:
04 Dez 2009 18:19
por RobL
ORG é uma diretiva do assembly e deverá estar no seu programa.
(0x3E9 = 1001 decimal)
Por exemplo:
ORG 0X3E9
bsf xxx ; esta linha vai ser escrita na posição 1001
nop ; esta na memo 1002
...

Enviado:
07 Dez 2009 08:30
por Juliana Mariana
Eu tentei colocar a função #org 0x3E8 para que o programa começar no endereço 1000, mas toda vez q tento compilar ele da um erro, dizendo q o range do org esta invalido. Gostaria de saber qual seria o problema .

Enviado:
07 Dez 2009 11:25
por Djalma Toledo Rodrigues
Word ?
#org 0x03E8
DJ

Enviado:
07 Dez 2009 12:37
por Juliana Mariana
Mesmo com a alteração mostrada por nossa amiga Djalma, na hora de compilar continua aparecendo o mesmo problema.
Gostaria q alguém me ajudasse a resolver o problema.

Enviado:
07 Dez 2009 12:58
por fabim
Juliana.
Qual IDE esta utilizando?
Qual linguagem ?
Lembre-se.. "você leu acerca do bootloader, para saber qual o tamanho e se ele se encontra no inicio ou fim da flash?".
#ORG ....
Isto não quer dizer nadinha de nada, a não ser alocar algo em algum lugar.
É necessario saber o que, e como quer fazer.
Lembre-se no momento em que o pic é energisado e starta a CPU, ele cai logo no endereço 0X0000;<< vetor de reset.
Com certeza, neste endereço tem um CALL/GOTO>>
"Endereço inicial da rotina de bootloader, o qual fica preso por alguns segundos ou Ms, até receber um comando do PC, SERIAL que informa que vai inicializar o Bootloader, o qual esta rotina é responsavel a gravar na flash do pic o programa o qual esta fazendo o upgrade"
Depois que termina o Boot, o que a rotina de bootloader faz ?
Ela da um goto para o ofset ENDEREÇO X, o qual você deve estar ciente qual é, você deve conhecer este endereço !!!
Suponha que o programa de boot foi feito da seguinte forma.
No vetor de reset, foi feito assim.
:0x0000: call_boot_loader;
:0x0001:goto main.
Veja, logo no reset ele da um call, lá para o endereço X que é o programa de bootloader, o qual funciona conforme expliquei à cima.
Terminado o bootloader, ou apenas estourado o tempo que ele espera para o boot, no fim deste pequeno programa tem um.
RETURN:
Veja, ele vai retornar para o vetor
0X0001: que vai saltar para o endereço do programa que você fez em sua IDE!!!
Este endereço ou labeal "main", pode ser configurado como comando de IDE, e informado que ele fica no endereço X.
Ou seja,
Quando você faz o programa e cria o .
void main(void).
O assemblador substitui o nome main, pelo endereço " X"<<....
Agora na pratica, como exemplo o mikroC.
Sei que o bootloader que eu estou utilizando, me informou que ele grava tudo como base de reset no endereço.
0X0010 pra frente.
Dessa forma, eu tenho que informar A ide que ela vai montar o programa hex, tomando o ofset 0x0010.
logo no source de meu programa, no mikroC lá encima eu vou dar uma diretiva, para a IDE montar o programa do endereço 0X0010 pra frente.
#pragma orgall 0x0010...
Pronto, resolvido.
Entendeu agora?
Fabim

Enviado:
07 Dez 2009 13:22
por Djalma Toledo Rodrigues
Juliana Mariana escreveu:Mesmo com a alteração mostrada por nossa amiga Djalma.
Q?
Femenino de Djalma é Djalmira
assim como de Julio é Juliana. Juliana
DJ

Enviado:
07 Dez 2009 13:28
por fabim
Djalma Toledo Rodrigues escreveu:Juliana Mariana escreveu:Mesmo com a alteração mostrada por nossa amiga Djalma.
Q?
Femenino de Djalma é Djalmira
assim como de Julio é Juliana. Juliana
DJ
Nossa DJ, só porque ela sabe a sua verdadeira personalidade, tu ficou assustado, por haver um engano, ou por ela ter descoberto o seu verdadeiro eu?
kkkkk
Brincadeira eim!!!
Abraços