Você está na página 1de 5

bootloader no PIC

Quando se esta trabalhando com microprocessadores PIC muito chato ter que ficar retirando o PIC da protoboard/prototipo para ficar regravando o software enquanto efetua seus testes, no ?Utilizando PIC's com suporte a USB facilita (e muito) essa tarefa. Aps instalar um bootloader no PIC, possivel carregar um novo firmware (o seu programa para o PIC) atravs da porta USB, utilizando o programas 'PDFSUSB' disponibilizado gratuitamente pela Microchip.Bom, vamos ao que interessa: Passo 0: Requerimentos: Voc deve ter um programador capaz de programar PIC's da familia 18F Este programador ser necessrio apenas uma vez, quando ser gravado o bootloader no PIC. O programador deve ser compativel com PIC's da familia 18F. Se voc ainda no possui um, eu recomendo o JDM que simples e bem util. Caso queira, pode comprar um no MercadoLivre ou mesmo utilizara gravao in-circuit (ICSP).

Passo 1: Placa de desenvolvimento bsica para o PIC18F4550 Esta uma verso simplificada da placa PICDEM FS-USB DM163025 da Microchip. Requisitos mnimos para a placa: - Um cristal de 20MHz e dois capacitores de 22pF. - Um conector USB do tipo B. - Um capacitor de desacoplamento ente o Vss e o Vdd (100nF) - Um capacitor de desacoplamento entre o Vss e o Vusb (470nF) - Um boto para resetar o PIC (S1) - Um boto para entrar no modo boot (ligado ao RB4) (S2)

Passo 2: Softwares, Bootloader e Utilitrios Microchip MPLAB 8.10+ disponivel em http://www.microchip.com/ Microchip C18 3.20+ Student Ed disponivel em http://www.microchip.com/ Microchip USB Bootloader (Salve o arquivo "en021827.exe" como "USBBootloader.exe" para facilitar)

Passo 3: Editar o bootloader e compilar o mesmo Abre o MPLAB, depois v em: Project/Open : "C:\Microchip Solutions\USB Device Bootloaders\Vendor Class - MCHPUSB Bootloader\Bootloader - Firmware for PIC18F4550 Family Devices\MCHPUSB.mcp". Faa as modificaes que desejar e compile o bootloader. ATENO: Cuidado ao editar este arquivo. Se voc ultrapassar 2K de programa para o bootloader, provavelmente ter problemas no futuro. Se voc estiver usando outro software que nao seja o MPLAB para gravar o PIC (Ex: WinProg, icProg, etc..) faa o seguinte: O arquivo HEX gerado durante a compilao nao possui os bits de configurao, entao

voc deve clicar no meu File/Export/Ok, digite o nome do arquivo .Hex e pronto, seu HEX ser salvo com os bits de configurao. OSB: Estou disponibilizando aqui uma verso customizada do bootloader para o PIC18F4550. Esta verso possibilita que voc ative o modo Bootloader via software, sem precisar segurar um boto. Clique aqui para baixar o arquivo-fonte desta verso customizada. s substituir os arquivos na pasta original do bootloader e compilar novamente. Neste arquivo tambem disponibilizei o arquivo .HEX pronto para o PIC18F4550.

Passo 4: Programar o bootloader no PIC Grave o bootloader usando seu gravador de PIC e o software que preferir. Eu utilizo o ICProg. Passo 5: Conectando o cabo USB e fazendo a primeira gravao de firmware Conecte o cabo USB ao micro e na placa. No ir acontecer nada inicialmente. Para entrar no modo Bootloader pela primeira vez, segure o boto S2 enquanto pressiona o boto S1 para resetar o PIC. Feito isto, o PIC ir reiniciar e o Windows ir reconehcer o novo hardware, solicitando o driver. Passo 6: Instalando o driver para a placa Este processo depende muito do Windows que voc esta usando, mas geralmente a mesma sequencia. Caso tenha dvidas, verifique a seo 2.3.3, "Installing the USB Device Driver" do manual da placa PICDEM ("PICDEM FS USB Demonstration Board User's Guide"). No windows XP, voc deve especificar o local onde o driver esta (Disco de instalao), passando este caminho ao instalador do windows: "C:\MicrochipSolutions\USB Tools\MCHPUSB Custom Driver\MCHPUSB Driver\Release"

Passo 7: Enviando um programa de teste (Firmware) 1) MPLAB: Abra o MPLAB, abra o projeto "C:\Microchip Solutions\USB Device HID - Simple Custom Demo\Generic HID - Simple Demo - Firmware\USB Device HID - Simple Custom Demo - C18 - PICDEM FSUSB.mcp", edite como desejar e recompile. 2) PLACA: A placa deve estar no modo Bootloader, como explicado anteriormente. 3) APLICATIVO : Abra o aplicativo PDFSUSB, localizado em: "C:\Microchip Solutions\USB Tools\Pdfsusb". 4) APLICATIVO : Na lista de placas, selecione "PICDEM FS USB 0 (Boot)". Caso no tenha este item, voc no esta no modo Bootloader. 5) APLICATIVO : Clique em "Load HEX File" e selecione o arquivo compilado anteriormente ("USB Device - HID - Simple Custom Demo"). 6) APLICATIVO : Clique em "Program Device" . No fique espantado, hyper rpido mesmo . 7a)APLICATIVO : Clique em "Execute" para iniciar o programa que foi gravado (o software ir reiniciar a placa). - - [OU]

7b)PLACA: Pressione o boto S1 para resetar o PIC. Assim que o PIC reiniciar, ele ir carregar o programa firmware.

Passo 8: Modificaes para o CCS muito importante que voc adicione as linhas a seguir no seu programa (firmware). Sem estas linhas, seu firmware i sobreescrever o Bootloader, perdendo assim a funcionalidade. Estas duas linhas servem para remapear o inicio do programa e os vetores de interrupo. Se for utilizar outro compilador que no seja o CCS, deve efetuar as modificaes correspondentes.
1.#build(reset=0x800, interrupt=0x808) 2.#org 0x000, 0x7ff { }

Lembre-se que o programa Bootloader reserva 2k de memoria inicial. Sendo assim, o seu programa (firmware) no pode ultrapassar 14k (no caso do PIC18F4550).

Passo 9: Entrando no modo bootloader via software Para ativar o modo bootloader via software, basta voc gravar o valor 12 (0x0C) no endereo0x7FFE do seu PIC18F4550. No se preocupe, este o ultimo endereo de aplicativo do seu PIC e dificilmente ser usado (a no ser que voc utilize 100% do PIC). O cdigo abaixo para o compilador CCS: [code]write_program_eeprom (0x7FFE,12); reset_cpu();[/code] Com estes dois comandos, o PIC ir reiniciar e entrar no modo Bootloader automaticamente.OBS: Depois de executar estes dois comandos, o PIC no sair mais do modo Bootloader at que voc grave alguma verso de firmware nele (pode ser a mesma). Mesmo querendo desistir da atualizao de firmware, voc dever gravar o firmware novamente para que o mesmo volte a funcionar. Bom, por enquanto isso. Espero ter ajudado um pouco a quem esta comeando com PIC e portas USB. Em breve estarei disponibilizando alguns tutoriais sobre criao de softwares para comunicao via USB com a sua placa utilizando microprocessadores PIC. Qualquer dvida ou sugesto entre em contato pelo link "Contato" no menu superior.

* ATUALIZADO A algum tempo recebi um e-mail do Sr. Rodrigo solicitandoajuda com relao ao primeiro boot do PIC. Ele acabou fazendo mais algumas alteraes interessantes no projeto e me enviou por e-mail, autorizando a publicao do seu cdigo nesta pgina. Segue abaixo o cdigo alterado e os comentrio dele:
01.void main(void) 02.{

03.byte temp; 04.byte temp1; // adicionei essa varivel 05.byte temp2; 06.char BOOTFLAG; 07.temp = ADCON1; 08.ADCON1 |= 0x0F; 09.//EnablePullups(); 10.// Delay10KTCYx(600); // delay ~500 ms 11. 12.//TRISBbits.TRISB4 = 1; // Reset value is already '1' 13. 14.//Check Bootload Mode Entry Condition 15.//if((PORTBbits.RB4 == 1) && (temp1 != 0x0000)) // comentei, agora no tem mais dependncia 16.//nenhuma com o RB4 17.//{ 18.//agora no importa o boto, s o cdigo via software 19. 20.temp2 = * ((rom far char *) 0x7FFE); 21.temp1 = * ((rom far char *) RM_RESET_VECTOR); // adicionei 22.if((temp2 != 0x0C) && (temp1 != 0xFF)) { 23.ADCON1 = temp; // Restore reset value 24._asm goto RM_RESET_VECTOR _endasm 25.} 26.// }//end if

Agora o prprio programa verifica se a memria est preenchida com alguma coisa ou no! Assim, ele entra no modo boot se a memria estiver vazia, ou se encontrar o 0x0C no endereo 0x7FFE. Abraos, Rodrigo

Vale lembrar que caso nao esteja utilizando o Portb-4 para outra funo, aconselhavel deixar o mesmo para entrar em modo boot forado caso tenha algum problema no firmware ou no software do boot. Obrigado pela contribuio Rodrigo!