View
218
Download
0
Category
Preview:
Citation preview
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
1/49
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
2/49
Direcionamento 1 aula Introduo a Sistemas Embarcados
2 aula Microcontrolador ATMEGA168
3 aula Projeto de Firmware
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
3/49
Direcionamento 4 aula Projeto de Firmware
5 aula Gerenciamento de energia
6 aula Projeto final
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
4/49
Objetivos Esclarecer dvidas sobre os exerccios da ltima
aula
Conhecer caractersticas e tcnicas importantes doprojeto de sistemas embarcados
Aprender a utilizao delas, de modo a reduzir o
tempo gasto com depurao
Entender como as tcnicas auxiliam na confecode firmwares mais confiveis, robustos e seguros.
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
5/49
Conceitos vistos na aula passada Fluxo de desenvolvimento
Hardware e Firmware
Kit de desenvolvimento
Estrategias de desenvolvimento de Firmware
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
6/49
Conceitos vistos na aula passada Estruturas basicas de Firmware
Keywords importantes Static, const, register, inline, volatile, #define
safeguard
Tipos de dados com tamanho fixo
Exerccios
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
7/49
Estrutura desta aula Transferncia de cdigo Exerccios sobre perifericos Conceitos importantes de Sistemas embarcados
Reentrncia Armazenamento em memria de programa
Condio de corrida Organizao da memria Stack overflow Fragmentao do heap
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
8/49
Fluxo de desenvolvimentoConcepo do
produto
Definio dohardware
Definio dofirmware
Download eteste
Integrao
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
9/49
Instalao do kit Conexo pela USB
Instalao do driver do FT232RL (conversorUSB-serial)
Localizao do arquivo para gravao no kit:arquivo binrio formato Intel Hex (arquivo.hex)
Ativao do software de transferncia defirmware. (AVRdude ou AVRAdaptor)
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
10/49
AVRDUDE
Aplicativo para programao de AVR
Criado para quaisquer MCU com ISP
AVRDUDE arduino: Verso especfica para ATMEGA com bootloader arduno.
Emula o funcionamento do KIT ATMEL STK-500 Preparado para lidar com o chip FTDI-232 Prprio para ser utilizado com a interface nativa arduno Linha de comando Possvel integrao com AVRStudio4
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
11/49
Procedimento AVRDUDE
Software AVRDUDE arduno1. Comunicao com o FTDI-232 Reset ATMEGA168
2. Sinalizao de gravao execuo bootloader
3. Negociao com o Bootloader para receber um
arquivo binrio e grav-lo na FLASH
4. FTDI-232 - Reset do ATMEGA execuo normal
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
12/49
Procedimento AVRDUDE
avrdude -v -pm168 -Cavrdude.conf -cstk500v1-Pcom3 -b19200 -Uflash:w:C:\ProjetoTeste.hex:i
Mostrar oandamento
Microcontrolador
Configurao
Tipo doprogramador
Configuraesda interface Segmento Operao:
Write
Caminho
Formato:Intel Hex
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
13/49
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
14/49
Instalao AVRAdaptor Descompactar AVRAdaptor.rar
Title: AVRAdaptorCommand: java.exeArguments: java -jar Initial Directory: $(ProjectDir)
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
15/49
Instalao AVRAdaptorExemplo:Neste exemplo os arquivos do AVRAdaptor e do
avrdude estao em "C:\temp"
Title: AVRAdaptor
Command: java.exeArguments: -jar "c:\temp\AVRAdaptor.jar" m168
com3 19200 $(ProjectDir) "C:\temp"Initial Directory: $(ProjectDir)
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
16/49
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
17/49
Exerccios da aula passada At o intervalo
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
18/49
1 Exerccio GPIO e Interrupes Configurao bsica:
GPIO: PortB: PB4 e PB5: sada PB2 e PB3: entrada
Interrupes externas Int0: borda de descida Int1: alterao de nvel
Elaborar uma forma de testar a configurao No kit (prefervel) ou Simulador Proteus
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
19/49
2 Exerccio EEPROM e Serial
Utilizao de perifricos e kit dedesenvolvimento
Elaborar um sistema seja capaz de guardar trsbytes na memria EEPROM. Os trs primeiros bytes enviados pela serial
devem ser armazenados.
Ao POR os trs dados devem ser enviados pelaserial. Deve se comunicar com um emulador de terminal
(usar software Hercules)
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
20/49
3 Exerccio A/D e Timers
Utilizao de perifricos e kit dedesenvolvimento na solucao de um problemareal dimmer Dever controlar o brilho de um led O brilho dever obedecer a posio de um
potencimetro.
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
21/49
Intervalo
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
22/49
Reentrncia
uma funo poder ser chamada por si ou poroutra funo N vezes antes de uma execuoanterior ter sido finalizada, sem alterao do
resultado de nenhuma delas
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
23/49
Exemplo de no-reentrnciaint exp = 4; //globaldouble pwd(double x)
{ if (exp
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
24/49
Exemplo de no-reentrncia-potenciao
Processo 1power(5,4)5*power(5,3)
5*power(5,1)5*1
Processo 2power(2,4)2*power(5,2)
2*power(5,0)2*1
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
25/49
Exemplo de reentrnciadouble pwd(double x, int exp)
{ if (exp
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
26/49
Exemplo de reentrncia -potenciao
Processo 1power(5,4)5*power(5,3)
5*power(5,2)5*power(5,1)5*1
Processo 2power(2,4)2*power(5,3)
2*power(5,2)2*power(5,1)2*1
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
27/49
Reentrncia Importncia
Confiabilidade em Multi-Threading Uma main e diversas interrupes Diversos processos em um RTOS
Gerenciamento de memria Chamadas subseqentes no ocupam mais
memria. Apenas a pilha de funes alterada possvel ter N chamadas a mesma funo, sem
esgotar a memria
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
28/49
Condies para reentrncia No modificar a si prprio:
A instrues devem ser as mesmas
Boa parte dos embarcados executam da flash
Algumas linguagens permitem essa modificao,
como Cobol, Perl, Python, Lisp
No chamar funes no reentrantes A contaminao com cdigo no reentrante se
propaga e invalida a rentrncia de outras funes
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
29/49
Condies para reentrncia
As variveis modificadas pela funo devempertencer quela instncia da funo: Se a funo for chamada N vezes as variveis
modificadas devem ocupar N locais diferentes na RAM.
No manter referncia nem retornar endereos avariveis static ou globais
No bloquear o acesso a variveis compartilhadas
Deve modificar apenas os dados fornecidos por quem
chamou
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
30/49
Cuidados com a reentrncia ISR so inerentemente no reentrantes:
Dependem de recursos nicos Bloqueiam o acesso a eles
Condio bsica para permitir a recursividade
Apesar de no ser muito comum em sistemasembarcados
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
31/49
Como fazer funes reentrantes? Modificar os hbitos de programao
Tanto para embarcados quanto para desktop Escrever funes que modifiquem somente os
dados que lhe foram passados Cuidado com ponteiros que apontam para a
memria de programa
Utilizar bibliotecas reentrantes Utilizar a newlib Ansi C ao invs da Ansi C
Monitorar o uso de memria Previne outros problemas relativos a memria
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
32/49
Armazenamento de dados emprograma Em geral existe mais memria de programa do
que memria RAM 16kByte(programa )x 1kByte(dados) ATMEGA168
Objetivo
Remanejar o armazenamento de acordo com anecessidade. Em alguns casos, possibilitar a construo do
sistema.
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
33/49
Arquitetura Harvard modificada
CPU
Instrues + constantes Dados
En
dereo
B
En
dereo
A
Dados
A
Dados
B
Memria Flash Memria RAM
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
34/49
Armazenamento de dados emprograma Exemplo no AVRStudio
ProjetoExemploDadosNoProg
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
35/49
Condio de corrida
o evento no qual dois ou mais processosconcorrerem ao mesmo recurso, modificando o
resultado de um ou mais processos.
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
36/49
Condio de corridamain() ISR()
Dado disponvel
Processamento
Processamento
Dado disponvel
Dado disponvel
Dado disponvel
Possvelcorrompimento
CPU ocupada
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
37/49
Causas da condio de corrida
Variveis compartilhadas
Preempo aleatria
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
38/49
Como evitar a condio de corrida Cuidar de eventos que devem ser executados
atomicamente Verificao de flags, operaes aritmticas
Garantir pares de aes
Recepo -> ACK, Dado novo -> Verificao
Desabilitar interrupoes caso necessrio Risco de ignorar eventos
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
39/49
Organizao de memria de programa
.vectorsFunes
eincludes
mainEspao
livreBoot
loader
0x0000Fim .vector 0x0033Inicio Appl. 0x0034
0x1FFFFim Appl. 0x1BFF
Inicio .bootloader 0x1C00
Aplicao
8kWords = 8192 endereos x 16bitsou
16384 endereos x 8bits (Cuidado!!!)
7168 x 16bits 1024 x 16bits
Seo .textSeo.bootloader
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
40/49
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
41/49
Organizao de memria de dados
.data .bss heapEspao
livrestack
__data_start
__data_start = __bss_start
__bss_end = __heap_start
__heap_end
stack pointer
RAMEND
Constantes eVariveis static
Constantes eVariveis staticno inicializadas
Espao paraalocao dinmica Pilha
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
42/49
Organizao de memria Exemplo no AVRStudio
ProjetoExemploMapaMemoria
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
43/49
Stack Overflow
o evento de ter-se uma pilha escrevendo emuma regio de memria protegida.
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
44/49
Organizao de memria de dados
.data .bss heap stack
.data .bss heap Espaolivre
stack
Pilha linear
Pilha circular
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
45/49
Como evitar Stack Overflow Monitoramento do ponteiro da pilha
Stack pointer
Executar uma rotina peridica que verifique se oStack pointer no est invadindo o heap
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
46/49
Fragmentao do Heap
o evento de se ter uma alocao to irregularno heap que impede alocaes subsequentes
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
47/49
Espao livre
Fragmentao no Heap
X Y A1 B3 Espaolivre
2bytes 1bytes 3bytes 3bytes 2bytes
11bytes
Espaolivre
Espaolivre
3bytes B3Impossvel alocar 3bytes
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
48/49
Como evitar a fragmentao noheap No utilizar alocao dinmica
Na verdade at pode, mas uma vez somente
e no inicio do firmware.
Fazer alocaes de tamanho fixo
7/31/2019 Aula 4 - Arquitetura de Sistemas Embarcados I
49/49
Prxima aula
Gerenciamento de energia
Recommended