sexta-feira, 19 de junho de 2015

Testando Bootloaders para PIC18F2550

Desenvolvendo um  pequeno e simples kit didático baseado no microcontrolador PIC18F2550, testei diversos bootloaders para ver qual seria o mais adequado.

Para quem não não sabe, bootloader é um simples programa (código .HEX) que deve ser gravado previamente num microcontrolador de modo a permitir a programação simples e rápida via USB.
Somente bootloaders via USB foram testados, embora existam também outros bootloaders que funcionam através da porta RS-232.  Todos os bootloaders testados funcionam com cristal de 20MHz no microcontrolador PIC18F2550.

1) O primeiro bootloader que eu testei 
 não funciona em Windows 7   64-bit
Testei no Windows 7  32-bit e funcionou perfeitamente;

2) O segundo bootloader que eu testei 
precisa de um botão que aterra o pino RB4 e de um resistor de pull-up no pino RB4.  Meu hardware original utilizava o RB4 para outra coisa e era mantido sempre em nivel baixo.
Bastou colocar este botão e o problema foi resolvido.
este funciona em todos os windows.

3) O terceiro bootloader que eu testei é fornecido pela própria Microchip e trabalha juntamente com o HIDLoader.exe
Este também precisa do botão no pino RB4 e de um resistor de 10K de pull-up neste mesmo pino.  Foi só colocar o botão e o problema foi resolvido

4) O quarto bootloader que eu testei também é provided by Microchip
 e utiliza o loader  chamado  PDFSUSB.exe  mas também precisa do resistor e do botão no pino RB4.  Sem ele, nada feito !

5) O quinto bootloader que eu testei é o bootloader do programa PINGUINO. 
Instalei o Pinguino, carreguei o Firmware do bootloader do Pinguino.
Funciona sem nenhum botão e independente do pino RB4.
Mas só serve para gravar o .HEX gerados na IDE do proprio PINGUINO ou seja, é Arduino-like (usa o famoso C-Wiring igual do Arduino).

6) Não consegui usar o SanUSB. 
http://www.cienciasecognicao.org/pdf/v14_3/m254.pdf
Por algum motivo, o dispositivo não é reconhecido na minha máquina, mesmo atualizando o JAVA 64-bit. Não insisti muito (desisti logo) porque os anteriorer já me atenderam.

Todos funcionaram (à exceção do 6, que eu tenho que insistir mais).
Gostei mais do (4) por ser mais curto em termos de código.
Mas eu não gostei de ter de usar um botão (ou jumper) no pino RB4 e agora vou modificar este código para eliminar isso.

Agora, vejam o que eu achei:

O John Main publicou um ebook justamente sobre Bootloaders de alta performance.
Um colega que adquiriu este ebook me contou que o John indica o Tinybootloader neste livro, que é um bootloader desenvolvido para uma ampla linha de microcontroladores.  Vocês podem encontrar este bootloader neste endereço:
http://tinypicbootload.sourceforge.net/

Este eu ainda não testei, mas pretendo fazê-lo em breve, e assim que o fizer, postarei os resultados aqui.

Outra dica é testar também o bootloader fornecido pela MikroE, dica do meu colega Orcino:

O Bootloader da Mikroe é  excelente !

Muito rápido e eficiente.

Porém, existe uma pequena incompatibilidade (fácil de resolver) entre um .HEX gerado pelo compilador da CCS  e este bootloader da Mikroe;

Eu explico:

Quando geramos um arquivo .HEX usando o Compilador PCWHD da CCS, no final do .HEX ele acrescenta o seguinte cabeçalho de finalização:
-----------------------------------------------------------------------------------------------
Exemplo de .HEX  gerado pelo compilador CCS:

0A08A0008B9492988998CDD703003D
:020000040030CA
:0E000000000C181E008381000FC00FE00F409F
:00000001FF
;PIC18F2550
;CRC=AD92  CREATED="18-jun-15 17:31"
------------------------------------------------------------------------------
(O grifo em vermelho é meu).

Quando tentamos abrir o código HEX  gerado pelo compilador CCS no bootloader da Mikroe  (http://www.mikroe.com/startusb/pic/#startusb_pic_bootloader )  ele gera o seguinte erro:

                                  "$PI is not a integer value"

e o código não pode ser carregado no bootloader.


Como corrigir isso ?

É simples, basta abrir o .HEX gerado pelo CCS no bloco de notas e eliminar as duas últimas linhas (justamente aquelas marcadas em vermelho no exemplo acima)  e tudo funcionará perfeitamente !

Este bootloader não necessita de nenhum botão no pino RB4 e é mais rápido do que o da Microchip, porém:

a)  ocupa um pouco mais área de código no PIC18F em relação aos  citados anteriormente;

b)  além disso usa um cristal de 8 MHz (diferentemente dos outros que usam um cristal de 20 Mhz no PIC).

E como principal vantagem: Não exige nenhum desvio especial no código escrito em C, você pode colocar seu código normalmente a partir do endereço  0x00  e seu vetor de interrupção pode ficar no lugar correto: endereço 0x04  do PIC.

No mais, este bootloader da MikroE é um dos mais estáveis e rápidos que eu testei.

Foi este bootloader que eu escolhi para equipar a Placa Fambruino, descrita em outro post.

2 comentários:

  1. sensacional!

    Você suou a camisa hein amigo!

    Parabéns!

    ResponderExcluir
  2. Merkur Slots | Best Merkur Casino Slots 2021
    Merkur 메리트카지노총판 Slot Machines 2021 | How can I get free spins and 제왕 카지노 bonus offers from Merkur? Merkur 메리트 카지노 Slots is the best online casino offering the best games from

    ResponderExcluir