O documento discute teoria e implementação de bootloaders para microcontroladores PIC, incluindo: 1) Razões para usar bootloaders como atualização de firmware via USB; 2) Concepção básica de bootloaders com partições de memória flash; 3) Implementação prática abordando mapeamento de memória, registradores de configuração e ferramentas de compilação.
Robótica Educacional: Estudo com Validação Real do Controlador Proporcional I...
Bootloader: Teoria de operação e implementação via USB para PIC
1. 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
2. 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
3. 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
4. Bootloader: Teoria de operação e implementação via USB para PIC Slide 4
Microcontrolador PIC
5. Bootloader: Teoria de operação e implementação via USB para PIC Slide 5
Por quê bootloader?
6. 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
7. 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
8. 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”
10. 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
11. 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
Erase
12. 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
Programação
13. 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
14. Bootloader: Teoria de operação e implementação via USB para PIC Slide 14
Comandos do Bootloader
15. 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
16. 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
17. Bootloader: Teoria de operação e implementação via USB para PIC Slide 17
Projetando Bootloader
18. 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
19. 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
20. 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
21. 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
22. Bootloader: Teoria de operação e implementação via USB para PIC Slide 22
Arquitetura de memória do
PIC18
23. 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
24. 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
25. Bootloader: Teoria de operação e implementação via USB para PIC Slide 25
Arquitetura de memória do
dsPIC e PIC24
26. 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
023
ConfigSpaceUserSpace
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)
27. 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 RAMUp to 2 KB
Dual-Port
DMA RAM
Memória RAM (Mem. de dados)
28. Bootloader: Teoria de operação e implementação via USB para PIC Slide 28
Arquitetura de memória do
PIC32
29. 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
KSEG1
Dev Config Reg
Boot Flash
Reserved
Program Flash
Reserved
RAM
0x9FC02FFF
0x80000000
KSEG0
30. 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
31. 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
32. 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
33. 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
34. 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
35. Bootloader: Teoria de operação e implementação via USB para PIC Slide 35
Mapepando
Aplicação/Bootloader
36. 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
37. Bootloader: Teoria de operação e implementação via USB para PIC Slide 37
Fluxograma de compilação
User Input
38. 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
39. 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?
40. 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
41. 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
42. 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
Performance
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
43. Bootloader: Teoria de operação e implementação via USB para PIC Slide 43
Ôba, código… :D
44. 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
daniel_rsousa@hotmail.com