bootloader: teoria de operação e implementação via usb para pic

44
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

Upload: daniel-rodrigues-de-sousa

Post on 05-Jul-2015

1.666 views

Category:

Technology


10 download

DESCRIPTION

Apresentação para a semana da engenharia da Universidade Cruzeiro do Sul em São Paulo - SP

TRANSCRIPT

Page 1: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 2: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 3: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 4: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 4

Microcontrolador PIC

Page 5: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 5

Por quê bootloader?

Page 6: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 7: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 8: Bootloader: Teoria de operação e implementação via USB para PIC

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”

Page 9: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 9

Concepção

Page 10: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 11: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 12: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 13: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 14: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 14

Comandos do Bootloader

Page 15: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 16: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 17: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 17

Projetando Bootloader

Page 18: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 19: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 20: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 21: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 22: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 22

Arquitetura de memória do PIC18

Page 23: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 24: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 25: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 25

Arquitetura de memória do dsPIC e PIC24

Page 26: Bootloader: Teoria de operação e implementação via USB para PIC

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)

Page 27: Bootloader: Teoria de operação e implementação via USB para PIC

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)

Page 28: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 28

Arquitetura de memória do PIC32

Page 29: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 30: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 31: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 32: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 33: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 34: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 35: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 35

Mapepando Aplicação/Bootloader

Page 36: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 37: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 37

Fluxograma de compilação

User Input

Page 38: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 39: Bootloader: Teoria de operação e implementação via USB para PIC

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?

Page 40: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 41: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 42: Bootloader: Teoria de operação e implementação via USB para PIC

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

Page 43: Bootloader: Teoria de operação e implementação via USB para PIC

Bootloader: Teoria de operação e implementação via USB para PIC Slide 43

Ôba, código… :D

Page 44: Bootloader: Teoria de operação e implementação via USB para PIC

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

[email protected]