Bootloader: Teoria de operação e implementação via USB para PIC Slide 1
Bootloader: Teoria de operação e implementação
via USB para PIC
Eng. Daniel Rodrigues de Sousa Universidade Cruzeiro do Sul - UNICSUL
Bootloader: Teoria de operação e implementação via USB para PIC Slide 2
Sobre o palestrante…
Daniel Rodrigues de Sousa
Engenheiro eletricista formado pela Universidade Cruzeiro do
Sul - 2001
Autor dos livros Microcontroladores ARM7 – O poder dos 32
bits, Desbravando o PIC24 – Conheça os Microcontroladores de
16 bits, Desbravando o PIC18 – Recursos Avançados,
Desbravando o Desbravando o PIC18 – Ensino Didático, todos
pela Editora Érica
Bootloader: Teoria de operação e implementação via USB para PIC Slide 3
Agenda
Básico sobre Bootloader
Desenvolvimento de Bootloader
Mapeamento da aplicação
Soluções Microchip
Exemplos
Bootloader: Teoria de operação e implementação via USB para PIC Slide 4
Microcontrolador PIC
Bootloader: Teoria de operação e implementação via USB para PIC Slide 5
Por quê bootloader?
Bootloader: Teoria de operação e implementação via USB para PIC Slide 6
Programando sem bootloader
Necessário treinamento de pessoal
Programadores caros
Softwares adicionais
Bootloader: Teoria de operação e implementação via USB para PIC Slide 7
Programando com bootloader
Upgrade de firmware - DIY
Sem hardware adicional
Aplicação host (PC) simplificada
Evita caros recalls
USB/UART/ Ethernet
Bootloader: Teoria de operação e implementação via USB para PIC Slide 8
Exemplos reais
Atualização de firmware em: MP3 Players
Telefone celular
Setup boxes
Satélites (aplicações espaciais)
No PC, instalação do sistema
operacional usando uma pendrive
ou CD ROM “bootável”
Bootloader: Teoria de operação e implementação via USB para PIC Slide 9
Concepção
Bootloader: Teoria de operação e implementação via USB para PIC Slide 10
Concepção
Aplicação
Memória de programa (Memória Flash)
Bootloader
Reset
Partição
Aplicação rodando
Bootloader: Teoria de operação e implementação via USB para PIC Slide 11
Concepção
Memória de programa (Memória Flash)
Bootloader
Reset
Era
se
Bootloader: Teoria de operação e implementação via USB para PIC Slide 12
Concepção
Nova
aplicação
Memória de programa (Memória Flash)
Bootloader
Reset
Pro
gra
maç
ão
Bootloader: Teoria de operação e implementação via USB para PIC Slide 13
Fluxograma
Reset
Modo de atualização de FW
Roda aplicação
Ini. Clocks/Periféricos
Trigger presente? sim
Aplicação válid.? não
Entra em loop e
executa
comandos do PC
Reset
Comando
Bootloader: Teoria de operação e implementação via USB para PIC Slide 14
Comandos do Bootloader
Bootloader: Teoria de operação e implementação via USB para PIC Slide 15
Comandos do bootloader
Comando de atualização de Firmware
Erase Flash
Program Flash
Verify Flash
Bootloader: Teoria de operação e implementação via USB para PIC Slide 16
Sequência de comandos
PC
Erase (Start Address, End Address)
Program (Hex Record)
Erases
Flash
Programs
Hex
Record
Ack
Ack
Verify (Start Address, End Address)
Calculates
CRC CRC
Calculates
CRC
Compare
CRCs Verificação OK
se ambos CRC forem iguais
PIC Bootloader
Bootloader: Teoria de operação e implementação via USB para PIC Slide 17
Projetando Bootloader
Bootloader: Teoria de operação e implementação via USB para PIC Slide 18
Desenvolvimento em Embedded Host
Alternativa: Usar um PC no lugar de um
microcontrolador
Custo alto e um exagero para sistemas embarcados
Solução: implementar um Embedded Host
Bootloader: Teoria de operação e implementação via USB para PIC Slide 19
Embedded Host Embedded Host conectas com um número fixo de
periféricos USB – Drivers USB fixos no firmware
Ventagens: Pequeno, firmware embarcado pouco complexo
Exemplo: Datalogger remoto de temperatura Download dos dados em uma pendrive
Sem conexão com o PC, mas você pode ler os dados gravados na pendrive
Bootloader: Teoria de operação e implementação via USB para PIC Slide 20
Periférico USB Device
Responde ao Host, não inicializa uma comunicação
Requer drivers para ser reconhecido pelo Host
Hardware/Firmware para responder ao Host
Bootloader: Teoria de operação e implementação via USB para PIC Slide 21
O que devo saber?
Arquitetura de memória
Particionando a Flash
Lidar com interrupções
Lidar com configurações de
devices (registradores)
Registradores de controle da Flash
Básico sobre Linker Script
Edição de Linker Script
Bootloader: Teoria de operação e implementação via USB para PIC Slide 22
Arquitetura de memória do PIC18
Bootloader: Teoria de operação e implementação via USB para PIC Slide 23
Memória RAM (Mem. de dados)
Access RAM PIC18Fxxxx
Register File Map
000h
07Fh
256 Bytes
Bank 0 GPR
Bank 1
GPR
Bank 2
GPR
Bank 13
GPR
Bank 14
GPR
Bank 15 GPR
Access SFR
Access RAM
Access SFR
080h
0FFh
100h
1FFh
200h
2FFh
D00h
DFFh
E00h
EFFh
F00h
FFFh
F7Fh
F80h
00h
7Fh
80h
FFh
Access Bank
Memória de dados até 4 Kbytes
Dividido em bancos de 256 bytes
Metade do banco 0 e metade do banco 15 forma um banco virtual para acesso rápido de registradores
Bootloader: Teoria de operação e implementação via USB para PIC Slide 24
Memória de Flash (Mem. de programa)
On-chip Program Memory
Reset Vector
High Priority Interrupt Vector
Low Priority Interrupt Vector
000000h
000008h
000018h
1FFFFEh
Unimplemented
Program Memory
(Read as ‘0’)
008000h
007FFEh
21-bit Program Counter
31 Level Stack
Stack Level 1 Stack Level 2
Stack Level 30 Stack Level 31
Memória contínua, contador deprograma capaz de gerenciar até 2Mbytes
Bootloader: Teoria de operação e implementação via USB para PIC Slide 25
Arquitetura de memória do dsPIC e PIC24
Bootloader: Teoria de operação e implementação via USB para PIC Slide 26
Máximo 12 MB 4M x 24-bit 23-bit PC (PCH & PCL)
PC incrementa em words (LSB sempre ‘0’)
Reset Vector no end 0 Duas tabelas de
interrupções Espaço de código de
usuário de 200h to 7FFFFEh
000000h
7FFFFEh
FFFFFEh
PC<22:1> 0 0 0 23
Co
nfi
g S
pace
U
se
r S
pa
ce
Unimplemented
Device ID
Config Registers
On-Chip User Flash
Memory
Alternate Vector Table
Flash Config Words
Reset Vector
Interrupt Vector Table 000004h
000104h
000200h
Memória de Flash (Mem. de programa)
Bootloader: Teoria de operação e implementação via USB para PIC Slide 27
Near Data Memory 8 KB
Unimplemented
Optionally Mapped into Program Memory Using PSV
0x8001
0xFFFF
0x8000
0xFFFE
SRAM Space
X Data Ram
0x0801 0x0800
Y Data Ram 0x1FFE
SFR Space 0x0001 0x0000
0x07FF 0x07FE
2 KB SFR Space
MS Byte Address
LS Byte Address
16-bits
MSB LSB
Dual Port RAM Up to 2 KB Dual-Port DMA RAM
Memória RAM (Mem. de dados)
Bootloader: Teoria de operação e implementação via USB para PIC Slide 28
Arquitetura de memória do PIC32
Bootloader: Teoria de operação e implementação via USB para PIC Slide 29
Arquitetura de memória do PIC32
Mapa de mem.
física
Dev Config Reg
Boot Flash
Reserved
SFRs
Reserved
Program Flash
Reserved
RAM
0x1FC02FFF
0x00000000
Mapa de mem. virtual
Dev Config Reg
Boot Flash Reserved
SFRs Reserved
Program Flash Reserved
RAM
0xBFC02FFF
0xA0000000
KS
EG
1
Dev Config Reg
Boot Flash
Reserved
Program Flash
Reserved
RAM
0x9FC02FFF
0x80000000
KS
EG
0
Bootloader: Teoria de operação e implementação via USB para PIC Slide 30
Boot Flash
Aplicação
Flash
Bootloader
Aplicação
Opção 1
Particionando a Flash
Bootloader: Teoria de operação e implementação via USB para PIC Slide 31
Particionando a Flash
Boot Flash
Aplicação
Flash
Opção 2
Bootloader Part-1
Bootloader Part-2
Aplicação
Bootloader: Teoria de operação e implementação via USB para PIC Slide 32
Manipulando os registradores de configuração
Boot Flash
Aplicação
Flash
101000010
001010111
110111010011101
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Device
Configuration
Register
Settings
Bootloader.hex
101000010
001010111
110111010011101
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Device
Configuration
Register
Settings
Application.hex
Bootloader: Teoria de operação e implementação via USB para PIC Slide 33
Boot Flash
Aplicação
Flash
101000010
001010111
110111010011101
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Device
Configuration
Register
Settings
Bootloader.hex
101000010
001010111
110111010011101
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Device
Configuration
Register
Settings
Application.hex
No Over-
writing
Manipulando os registradores de configuração
Bootloader: Teoria de operação e implementação via USB para PIC Slide 34
Dicas de desenvolvimento:
Implementar um “check” no bootloader
para evitar sobre escrita ou apagamento
dos registradores de configuração
Aplicação “reusa” configurações setadas
no bootloader
Manipulando os registradores de configuração
Bootloader: Teoria de operação e implementação via USB para PIC Slide 35
Mapepando Aplicação/Bootloader
Bootloader: Teoria de operação e implementação via USB para PIC Slide 36
Por quê falar do Linker?
Aplicação
Memória de programa Flash
Bootloader
Reset
Partição
Bootloader: Teoria de operação e implementação via USB para PIC Slide 37
Fluxograma de compilação
User Input
Bootloader: Teoria de operação e implementação via USB para PIC Slide 38
Juntando os arquivos .hex 1101000010
0010101111
110111010111011
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Bootloader.hex
Application.hex
1101000010
0010101111
110111010111011
110101010101110
101110111101110
110111010101001
110101010101010
101010101010111
001010100011111
111110011111101
Bootloader: Teoria de operação e implementação via USB para PIC Slide 39
Merge da imagem da Aplicação e
Bootloader para programação em
produção
Remove as seções sobrepostas
Juntando os arquivos .hex
Existe alguma
ferramenta?
Bootloader: Teoria de operação e implementação via USB para PIC Slide 40
Recursos
Ferramenta de linha de comando
do compilador HI-TECH C®
Junta 2 arquivos .hex para
produzir um único arquivo .hex
Remove todas as seções
sobrepostas automaticamente
HexMate – Merge de .hex
Bootloader: Teoria de operação e implementação via USB para PIC Slide 41
Uso
A opção “+” retira seções sobrepostas
do bootloader
HexMate – Merge de .hex
Bootloader: Teoria de operação e implementação via USB para PIC Slide 42
PIC16F1/PIC18F Small, Low Power, Low Cost
Up to 16 MIPS 14- to 80-Pin Packages
Up to 128KB Flash Up to 4KB RAM
USB 2.0 Device Support
Migration
Perf
orm
an
ce
100+ USB PIC MCUs The industry’s strongest
scalable product, family,
and software migration
path
Microcontrolador PIC USB Portfolio
PIC24F/PIC24E/dsPIC33E Low Power, GPU, DSP Engine
Up to 70 MIPS 28- to 144-Pin Packages
Up to 512 KB Flash Up to 96KB RAM
USB 2.0 Device, Embedded Host, OTG
PIC32 High Performance, Pin Compatible to PIC24F
80 MHz, 1.53 DMIPS/MHz Up to 80 MIPS
28- to 100-Pin Packages Up to 512 KB Flash Up to 128 KB RAM
USB 2.0 Device, Embedded Host, OTG
32-bit
8-bit
16-bit
Bootloader: Teoria de operação e implementação via USB para PIC Slide 43
Ôba, código… :D
Bootloader: Teoria de operação e implementação via USB para PIC Slide 44
Obrigado! http://www.portalmcu.com.br
@PortalMCU
https://www.facebook.com/portalmcu