picminas
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Pic sem o bootloader

2 participantes

Ir para baixo

Pic sem o bootloader Empty Pic sem o bootloader

Mensagem  vinicius loureiro Qua Ago 31, 2011 2:25 am

Olá!
Estou usando o MPLAB X para Linux e estou usando uma gravadora diretamente nos pinos ICSP (Kit Picminas vs 3.0).
Como não consigo usar o bootloader pelo MPLAB X e com a gravadora está funcionando bem, resolvi abandonar o bootloader por agora. O problema, é que o firmware não funciona.

Se eu deixo o main.c com o pragma como citado abaixo, compila, mas não roda no pic.

Código:
extern void _startup (void);        // See c018i.c in your C18 compiler dir
#pragma code _RESET_INTERRUPT_VECTOR = 0x000
void _reset (void)
{
  _asm goto _startup _endasm
}
#pragma code

Então, pensei em alterar o Linker de várias formas, nas tags Start e End, mas também não deu certo.
Código:
CODEPAGE  NAME=boot      START=0x0            END=0x700          PROTECTED
CODEPAGE  NAME=vectors    START=0x701          END=0x829          PROTECTED
Tentei também remover o arquivo linker dos arquivos do firmware e do projeto, mas também não funcionou.
Obs.: O pic está funcionando corretamente, já coloquei o bootloader (usando o Pickit2, no Windows) e ficou Ok.
Vocês tem alguma dica? Como usar o PIC sem o bootloader?

Obrigado

Vinicius L.

vinicius loureiro

Mensagens : 3
Data de inscrição : 10/09/2010

Ir para o topo Ir para baixo

Pic sem o bootloader Empty Re: Pic sem o bootloader

Mensagem  Bruno S. Avelar Sex Set 16, 2011 10:34 am

Ola Vinicius,

Tudo bom?
Junto com o MPLABX a microchip também lançou um software cross plataform para boot loader HID. (no microchip solutions que voce pode baixa-lo em: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784 . Após instalado dentro do diretório ..../Microchip Solutions v2011-07-14\USB\Device - Bootloaders\HID\Software - Cross Platform).

Quando vamos programar sem o bootloader tem algumas configurações que devem ser feitas. Primeiro você deve utilizar outro linker que não reservará o espaço do bootloader. Você encontrará este link na pasta do compilador C18. (ex: mplabc18\v3.37\bin\LKR\18f4550_g.lkr). Substitua este linker pelo linker que voce utiliza para funcionar o bootloarder.

Outro cuidado a ser tomado são as configurações do microcontrolador de escolha de clock, proteção de código, watch dog timer etc. Quando você usava o firware do bootloader estas configurações eram feitas para você pelo bootloader.

As principais configurações são estas:



Código:

#pragma config PLLDIV  = 5        // (20 MHz crystal on PICDEM FS USB board)
        #pragma config CPUDIV  = OSC1_PLL2   
        #pragma config USBDIV  = 2        // Clock source from 96MHz PLL/2
        #pragma config FOSC    = HSPLL_HS
        #pragma config FCMEN    = OFF
        #pragma config IESO    = OFF
        #pragma config PWRT    = OFF
        #pragma config BOR      = ON
        #pragma config BORV    = 3
        #pragma config VREGEN  = ON      //USB Voltage Regulator
        #pragma config WDT      = OFF
        #pragma config WDTPS    = 32768
        #pragma config MCLRE    = ON
        #pragma config LPT1OSC  = OFF
        #pragma config PBADEN  = OFF      //NOTE: modifying this value here won't have an effect
                                   //on the application.  See the top of the main() function.
                                   //By default the RB4 I/O pin is used to detect if the
                                   //firmware should enter the bootloader or the main application
                                   //firmware after a reset.  In order to do this, it needs to
                                   //configure RB4 as a digital input, thereby changing it from
                                   //the reset value according to this configuration bit.
//      #pragma config CCP2MX  = ON
        #pragma config STVREN  = ON
        #pragma config LVP      = OFF
//      #pragma config ICPRT    = OFF      // Dedicated In-Circuit Debug/Programming
        #pragma config XINST    = OFF      // Extended Instruction Set
        #pragma config CP0      = OFF
        #pragma config CP1      = OFF
//      #pragma config CP2      = OFF
//      #pragma config CP3      = OFF
        #pragma config CPB      = OFF
//      #pragma config CPD      = OFF
        #pragma config WRT0    = OFF
        #pragma config WRT1    = OFF
//      #pragma config WRT2    = OFF
//      #pragma config WRT3    = OFF
        #pragma config WRTB    = OFF      // Boot Block Write Protection
        #pragma config WRTC    = OFF
//      #pragma config WRTD    = OFF
        #pragma config EBTR0    = OFF
        #pragma config EBTR1    = OFF
//      #pragma config EBTR2    = OFF
//      #pragma config EBTR3    = OFF
        #pragma config EBTRB    = OFF
Voce pode copiar este trecho para o inicio do seu código, abaixo dos includes.

Isto fará o PIC funcionar sem o bootloader.

Espero ter ajudado.
Bruno S. Avelar
Bruno S. Avelar
Bruno S. Avelar
Admin

Mensagens : 74
Data de inscrição : 26/07/2009
Idade : 39
Localização : Belo Horizonte MG

https://picminas.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos