Escolar Documentos
Profissional Documentos
Cultura Documentos
Implementando um Bootloader
nos MCUs Microchip PIC®
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 1
Agenda
Conceitos do Bootloader
AN1302 Bootloader I2C™
AN1310 Bootloader Serial
Diferenças de Arquitetura
Recursos Adicionais
Resumo
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 2
Conceito de Bootloader
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 3
Como funciona?
Interpreta o comando
Executa o comando
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 4
AN1302 Agenda
Projeto AN1302
Comandos/I2CTM/Esquemático
Usando o AN1302
Métodos para entrar no bootloader
Projeto da aplicação
Dicas
Interrupções/Mapa de Memória
Bits de Configuração
Limitações
Programção de Múltiplos Processadores
Lab 1: AN1302 Rodando
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 5
AN1302 I2CTM Bootloader
para PIC1X(L)F1XXX
Tamanho de código pequeno
Suporta todos os PIC® MCUs
enhanced midrange
Não requer alta tensão
Usa I2C, um protocolo comum
Programação múltipla/seletiva
Encaminhamento de Interrupções
Transparente quando não em uso
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 6
AN1302 Comandos
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 7
I2CTM Escravo – Sinalização
de recepção
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 8
AN1302 Esquemático
Típico
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 9
Entrando no Modo
Bootloader
Três métodos de entrar no
bootloader:
Sem aplicação salva
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 12
Última Palavra da
Aplicação do Usuário
AN1302 verifica a última palavra da
memória de programa
Permite transparência
Se 0x3455, vá direto para a aplicação do
usuário
Senão, vá para o modo bootloader
Permite manipular o bootloader,
eliminando pino de I/O extra
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 13
Encaminhamento de
Interrupções
Interrupção do PIC16usualmente
em 0x0004
Bootloader remapeou a
interrupção para 0x0204
‘GOTO 0x0204’ salvo em 0x0004
2 ciclos de instrução a mais para
entrar na ISR
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 14
Mapa da Memória Flash
PIC16
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 15
Bits de Configuração
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 16
Limitações
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 17
Sistemas
Multiprocessador VDD
SCL SCL
Master Slave
I2CTM Address: 0x0A
SDA SDA
SCL
Slave
I2C Address: 0x0B
SDA
SCL
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 18
Lab 1:
AN1302 Rodando
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 19
Objetivos Lab 1
Reconhecimento da placa de
demonstração
Setup dos bits de configuração e
carregar o firmware do
bootloader
Progamar e rodar a aplicação do
usuário através do bootloader
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 20
Lab 1 Sumário
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 21
AN1310 Agenda
AN1310 Projeto
Lab 2: AN1310 Rodando
Usando AN1310 na Sua aplicação
Memória Flash
Proteção contra Escrita
Bootloader Incremental
Lab 3: Desenvolvendo aplicações
utilizando o AN1310
Aplicações AN1310 adicionais
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 22
AN1310 Bootloader Serial
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 24
Sinalização de Dados da
UART
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 25
Sinais da UART -
Bootloader
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 26
Alcançar Altas Taxas de
Dados
Casar taxas USB-SERIAL para as
taxas dos PIC® MCU
Why?
Data Bus
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 28
Dados Back-to-Back
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 29
Mapa de Memória PIC18
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 30
Planejamento da Escrita
Bootloader Reset Vector 0000h
High Priority Interrupt Vector 0008h
Apagar:
Low Priority Interrupt Vector 0018h (1FC00 a 1F800]
Application Firmware (1C00 a 0]
1AC0h Escrever:
1C00h [0 a 1AC0)
1F800
[1FBC0 a 1FC00)
Application Reset Vector 1FBFC
1FC00
Bootloader Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 31
Planejamento da Escrita
Bootloader Reset Vector 0000h
High Priority Interrupt Vector 0008h
Apagar:
Low Priority Interrupt Vector 0018h (1FC00 a 1F800]
Application Firmware (1C00 a 0]
1AC0h Escrever:
1C00h [0 a 1AC0)
1F800
[1FBC0 a 1FC00)
1FBFC
1FC00
Bootloader Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 32
Planejamento da Escrita
Bootloader Reset Vector 0000h
0008h Apagar:
0018h
(1FC00 a 1F800]
(1C00 a 0]
1AC0h Escrever:
1C00h [0 a 1AC0)
1F800
[1FBC0 a 1FC00)
1FBFC
1FC00
Bootloader Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 33
Planejamento da Escrita
Bootloader Reset Vector 0000h
High Priority Interrupt Vector 0008h
Apagar:
Low Priority Interrupt Vector 0018h (1FC00 a 1F800]
Application Firmware (1C00 a 0]
1AC0h Escrever:
1C00h [0 a 1AC0)
1F800
[1FBC0 a 1FC00)
1FBFC
1FC00
Bootloader Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 34
Planejamento da Escrita
Bootloader Reset Vector 0000h
High Priority Interrupt Vector 0008h
Apagar:
Low Priority Interrupt Vector 0018h (1FC00 a 1F800]
Application Firmware (1C00 a 0]
1AC0h Escrever:
1C00h [0 a 1AC0)
1F800
[1FBC0 a 1FC00)
Application Reset Vector 1FBFC
1FC00
Bootloader Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 35
Lab 2:
AN1310 Rodando
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 36
Lab 2 Objetivos
Reconhecimento da placa de
demonstração
Setup dos bits de configuração e
carregar o firmware do
bootloader
Experimentar diferenter taxas de
transmissão
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 37
Placa Utilizada
DM183032
PIC18 Explorer
MCP2200EV-VCP
USB-to-Serial
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 38
Placas Utilizadas
AN1310 Projeto
Lab 2: AN1310 Rodando
Usando AN1310 na Sua aplicação
Memória Flash
Proteção contra Escrita
Bootloader Incremental
Lab 3: Desenvolvendo aplicações
com AN1310
Aplicações AN1310 adicionais
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 41
Memória Flash
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 42
Memória Flash
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 43
Memória Flash
APAGAR
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 44
Meória Flash
0000h 0000h
Write Block
Write Block 0040h
Write Block 0080h
Write Block 00C0h
Write Block 0100h
Write Block 0140h
Erase Block
Write Block 0180h
Write Block 01C0h
Write Block 0200h
Write Block 0240h
... ...
Write Block 03C0h
0400h
0400h
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 45
Endereço 0 - Bootloader
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 46
Bootloader Incremental
Apagar 400 a 0
Escrever 0 a 400
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 47
AN1310 Agenda
AN1310 Projeto
Lab 2: AN1310 Rodando
Usando AN1310 na Sua aplicação
Memória Flash
Proteção contra Escrita
Bootloader Incremental
Lab 3: Desenvolvendo aplicações
utilizando o AN1310
Aplicações AN1310 adicionais
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 48
Lab 3 Objetivos
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 49
Lab 3 Sumário
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 50
AN1310 Agenda
AN1310 Projeto
Lab 2: AN1310 rodando
Usando AN1310 na Sua aplicação
Memória Flash
Proteção contra Escrita
Bootloader Incremental
Lab 3: Desenvolvendo aplicações
utilizando o AN1310
Aplicações AN1310 adicionais
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 51
Desenvolvimento Multi-
microcontrolador
Utilizar uma versão do AN1310
para cada microcontrolador
AN1310 suporta COM numeradas
de 1-256
Bootloader Incremental notifica a
amostra correta
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 52
Desenvolvimento de
Baixa Potência
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 54
Agenda
Conceitos do
AN1302 I2C™ Bootloader
AN1310 Serial Bootloader
Diferenças de Arquitetura
PIC24 Tabela do Vetor de Interupção
PIC32 Bulk Erase
Recursos Adicionais (Microchip Application Library)
TFTP Internet Bootloader
USB MSD Bootloader
USB HID Bootloader
Sumário
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 55
Diferenças de Arquitetura
PIC16 tem dois vetores de interrupção
Reset – 0x000
Interrupt – 0x004
0200h
0400h
Limpeza da
Bootloader Firmware memória –
Tamanho do
0C00h
bloco – 1024
Application Firmware
bytes
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 58
PIC24 Memória Flash
NOP 0000h
NOP 0002h O vetor de de
Interrupt Vector Table
0004h
interrupção NÃO
Application Reset Address
00FEh
0100h
pode ser
0104h executado
Alternate Vector Table
0200h
0400h Componente
Bootloader Firmware
trava – Não
0C00h
pode voltar para
o bootlodar para
Application Firmware
recuperar
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 59
PIC24 Memória Flash
GOTO instruction 0000h
Bootloader Reset Address 0002h Faça a tabela de
0004h
Interrupt Vector Table vetores de
Application Reset Address
00FEh
0100h
interrupção de
Alternate Vector Table
0104h hardware parte do
0200h
bootloader
Bootloader Firmware
Corrija o endereço
das interrupções e
não mude
0C00h
Application Firmware
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 60
PIC24 Remapear o Vetor de
Interrupções
void __attribute__((address(0xA800)))
_InterruptRemapping()
{
asm("reset");
Nop();
asm("goto __ReservedTrap0");
asm("goto __OscillatorFail");
asm("goto __AddressError");
asm("goto __StackError");
asm("goto __MathError");
asm("goto __INT0Interrupt");
...
}
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 61
Diferenças de Arquitetura
(PIC32)
12KB “Boot Flash” separados
0xBFC00000 - 0xBFC02FFF
Bits de configuração no final da
memória flash de Boot
Memória de programa normal inicia
em 0x9D000000
Tabela de vetores relocáveis através
do registrador EBASE
PIC32 bootloaders podem “Bulk
Erase”
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 62
Bulk Erase vs. Page Erase
PIC32 Espec de Programação
Page Erase Time = 40 ms
Bulk Erase Time = 400 ms
512 KB FLASH
1024 Byte Erase Block size
E daí??
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 63
Bulk Erase vs. Page Erase
PIC32 Espec de Programação
Page Erase Time = 40 ms
Bulk Erase Time = 400 ms
512 KB FLASH
1024 Byte Erase Block size
Por favor, apagando 512 blocos...
20 segundos por Page Erases
400 ms por Bulk Erase
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 64
Agenda
Conceitos de Bootloader
AN1302 I2C™ Bootloader
AN1310 Serial Bootloader
Diferenças de Arquitetura
PIC24 Tabela de Vetores de Interrupção
PIC32 Bulk Erase
Recursos Adicionais (Microchip Application Library)
TFTP Internet Bootloader
USB MSD Bootloader
USB HID Bootloader
Sumário
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 65
Bootloader Internet
Localização dadrão:
C:\Microchip Solutions\TCPIP Internet
Bootloader App
Documentação em:
C:\Microchip Solutions\Microchip\Help\TCPIP
Stack Help.chm
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 66
Bootloader Internet
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 67
Bootloader Internet
Placa de Demonstração
DM163024 – PICDEM.net™ 2
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 68
Bootloader MSD Host
Aplicação carregada de um drive
USB
Usa abordagem “Two Stacks”
Bootloader é totalmente independente da aplicação
1x MSD Host USB Stack com suporte a sistema de arquivos MDD
1x aplicação USB device (qualquer classe permitida)
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 69
MSD Bootloader
Placas de Demonstração
DM240001 – Explorer 16
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 70
MSD Host Bootloader
Placas de Demonstração
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 72
Bootloader USB HID
Projeto “Host”
Programa Host é responsável pelo envio de comandos,
basicamente:
QUERY_DEVICE – veja abaixo
ERASE_DEVICE – apagar NVM
PROGRAM_DEVICE – para enviar dados a serem programados
GET_DATA – recupera dados da NVM, usado para verificação
Especificações do Microcontrolador (ex: tamanho de memória,
regiões de programação, etc.) contidas no firmware
Firmware envia esta informação para o host em resposta ao
comando “QUERY_DEVICE” (dependente do vendor)
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 73
Bootloader USB HID
(PIC18)
Firmware do Bootloader ocupa 0x000-0xFFF
Bootloader manda no vetor de Reset e vetores de interrupção
Interrupções remapeadas para: 0x1000 + “valor”
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 74
Sumário
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 75
Sumário
Bootloader Arquitetura Protocolo Proteção
AN1302 PIC12/PIC16 I2C™ Hardware Write
(Enhanced Protect
Mid-Range)
AN1310 PIC16, PIC18 UART Software and
Hardware Write
Protect
AN1157 PIC24F UART Software and
Hardware Write
Protect
Read Protect
(secure encryption)
Internet Bootloader PIC18F97J60 TFTP/UDP Software Write
(MAL) Family Protect
USB MSD (MAL) PIC24 USB Host / Mass Hardware Write
Storage Device Protect
USB HID (MAL) PIC18, PIC24, USB HID Hardware Write
PIC32 Protect
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 76
Trademarks
The Microchip name and logo, the Microchip logo, dsPIC, KeeLoq, KeeLoq logo,
MPLAB, PIC, PICmicro, PICSTART, PIC32 logo, rfPIC and UNI/O are registered
trademarks of Microchip Technology Incorporated in the U.S.A. and other
countries.
FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB,
SEEVAL and The Embedded Control Solutions Company are registered trademarks
of Microchip Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM,
dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-
TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code Generation, PICC,
PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode,
Total Endurance, TSHARC, UniWinDriver, WiperLock and ZENA are trademarks of
Microchip Technology Incorporated in the U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
All other trademarks mentioned herein are property of their respective companies.
© 2010, Microchip Technology Incorporated, All Rights Reserved.
© 2010 Microchip Technology Incorporated. All Rights Reserved. 1433 BTL Slide 77