el68e sistemas embarcados

173
EL68E Sistemas Embarcados Prof. Douglas RENAUX © Prof. Dr. Douglas Renaux

Upload: others

Post on 16-Oct-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EL68E Sistemas Embarcados

EL68ESistemas Embarcados

Prof. Douglas RENAUX

© Prof. Dr. Douglas Renaux

Page 2: EL68E Sistemas Embarcados

ARM – HistóricoAno Evento

1984-1985 Desenvolvimento do primeiro RISC comercial na Acorn Computers Ltd (Cambridge – UK)ARM = Acorn RISC Machine

1990 Fundação da ARM (Advanced RISC Machines Ltd.)

1995 ARM7TDMI

1996-1998Desenvolvimento do ARM8 em conjunto com a DEC(adquirida pela Intel que fez o StrongARM)

1997 ARM9

1999 ARM10

2003 ARM11

2005 Cortex M3, R4, A8

2007 Cortex A9 – Multicore

2012 Arquitetura v8 – 32/64 bits (Cortex A50)

2014 Cortex M7 – pipeline superescalar

© Prof. Dr. Douglas Renaux

Page 3: EL68E Sistemas Embarcados

Acorn

© Prof. Dr. Douglas Renaux

BBC Micro1981

Page 4: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Developer Acorn ComputersType 8-bit home computerRelease date 1 December 1981Retail availability 12 yearsIntroductory price £235 Model A, £335 Model B (in 1981)

Discontinued 1994Units sold over 1.5 millionMedia Cassette tape, floppy disc (optional), hard disc

(rare), Laserdisc (BBC Domesday Project)

Operating system Acorn MOSPower 50 WCPU 2 MHz MOS Technology 6502/6512

Storage capacity 100–800 kB (DFS)160–1280 kB (ADFS floppy discs)

20 MB (ADFS hard disc)

Memory 16–32 kB (Model A/B)64–128 kB (Model B+)128 kB (Master)

Plus 32–128 kB ROM, expandable to 272 kBDisplay PAL/NTSC, UHF/composite/TTL RGB

Graphics 640×256, 8 colours (various framebuffermodes)

78×75, 8 colours (Teletext)

Sound Texas Instruments SN76489, 4 channels, monoTMS5220 speech synthesiser with phrase ROM(optional)

Input Keyboard, twin analogue joysticks with fire buttons,lightpen

Connectivity Printer parallel, RS-423 serial, userparallel,Econet (optional), 1 MHz bus, Tube secondprocessor interface

Page 5: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Acorn Archimedes - 1987

Page 6: EL68E Sistemas Embarcados

ARM FamilyARMArch.

ARM Core FeatureTypical MIPS @

MHz

ARM1 ARMv1 ARM1 First implementation

ARM2

ARMv2 ARM2ARMv2 added the MUL (multiply)instruction

4 MIPS @ 8 MHz0.33 DMIPS/MHz

ARMv2a ARM250Integrated MEMC (MMU), Graphicsand IO processor. ARMv2a added theSWP and SWPB (swap) instructions.

7 MIPS @ 12 MHz

ARM3 ARMv2a ARM3First integrated memory cache.4 KB unified

12 MIPS @25 MHz0.50 DMIPS/MHz

ARM6 ARMv3

ARM60ARMv3 first to support 32-bit memoryaddress space (previously 26-bit)

10 MIPS @12 MHz

ARM600As ARM60, cache and coprocessor bus(for FPA10 floating-point unit).

28 MIPS @33 MHz

ARM610 As ARM60, cache, no coprocessor bus.17 MIPS @20 MHz0.65 DMIPS/MHz

© Prof. Dr. Douglas Renaux

Page 7: EL68E Sistemas Embarcados

ARM7 ARMv3

ARM700 40 MHz

ARM710 As ARM700, no coprocessor bus. 40 MHz

ARM710a As ARM71040 MHz0.68 DMIPS/MHz

ARM7TDMI ARMv4T

ARM7TDMI(-S) 3-stage pipeline, Thumb15 MIPS @ 16.8 MHz63 DMIPS @ 70 MHz

ARM710TAs ARM7TDMI, cache 8 KB unified,MMU

36 MIPS @ 40 MHz

ARM720TAs ARM7TDMI, cache 8 KB unified,MMU

60 MIPS @ 59.8 MHz

ARM740T As ARM7TDMI, MPU

ARM7EJ ARMv5TEJ ARM7EJ-S5-stage pipeline, Thumb, Jazelle DBX,Enhanced DSP instructions

© Prof. Dr. Douglas Renaux

Page 8: EL68E Sistemas Embarcados

ARM7Arquitetura de 32-bits com maior utilização no mundo;Pipeline de 3 estágios;Até 130 DMIPS em 133 MHz (processo 0.13um);Densidade de código semelhante à densidade de processadores de 16

bits;Extenso suporte de ferramentas e RTOS;Código compatível com ARM9, ARM9E, ARM10 e Xscale;

© Prof. Dr. Douglas Renaux

CacheSize(Inst/Data)

TightlyCoupledMemory

MemoryMgt

BusInterface

Thumb DSP Jazelle

ARM720T 8k unified - MMU AHB Yes No No

ARM7EJ-S - - - Yes Yes Yes Yes

ARM7TDMI - - - Yes Yes No No

ARM7TDMI-S - - - Yes Yes No NoFonte: ARM

Page 9: EL68E Sistemas Embarcados

Pipeline

© Prof. Dr. Douglas Renaux

Fonte: ARM

Page 10: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Fonte: ARM

Page 11: EL68E Sistemas Embarcados

Versões ISA após ARM7TDMI

© Prof. Dr. Douglas Renaux

Page 12: EL68E Sistemas Embarcados

ARM Cortex

© Prof. Dr. Douglas Renaux

Page 13: EL68E Sistemas Embarcados

ARM Cortex

© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 14: EL68E Sistemas Embarcados

ARM Cortex

© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 15: EL68E Sistemas Embarcados

ARM Cortex

© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 16: EL68E Sistemas Embarcados

Thumb-2Densidade de código melhora em até 35% em

relação ao código ARM.Thumb-2:

“melhor de dois mundos” independe de código ARM

© Prof. Dr. Douglas Renaux

Fonte: ARM © Prof. Dr. Douglas Renaux

Page 17: EL68E Sistemas Embarcados

Cortex-M

ARM Cortex-M0 ARM Cortex-M3 ARM Cortex-M4

"8/16-bit"applications

"16/32-bit"applications

"32-bit/DSC"applications

Low cost andsimplicity

Performanceefficiency

Efficient digitalsignal control

Cortex-M1 – concebido para uso em FPGA© Prof. Dr. Douglas Renaux

Page 18: EL68E Sistemas Embarcados

• http://www.embedded-systems.com/underthehood/210101486© Prof. Dr. Douglas Renaux

Page 19: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 20: EL68E Sistemas Embarcados

Baixo Custo x 8 bits

© Prof. Dr. Douglas Renaux

Page 21: EL68E Sistemas Embarcados

ARMv8-A (64 bits)

© Prof. Dr. Douglas Renaux

Page 22: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 23: EL68E Sistemas Embarcados

Exynos 5250 com Cortex-A15 dual core

© Prof. Dr. Douglas Renaux

Page 24: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 25: EL68E Sistemas Embarcados

64-bits - AMDHierofalcon will pack four to eight 64-bit ARM

A57 cores clocked up to 2GHz.In addition to new ARM cores, the 28nm chips

also feature 10Gbit Ethernet and PCIExpress 3.0 on board, which means theyshould be a good fit for data centres.

21-Out-2013

© Prof. Dr. Douglas Renaux

Page 26: EL68E Sistemas Embarcados

NVIDEA:192 GPU4x A15ou 2x A57

Tegra K1esperado

para 2014

© Prof. Dr. Douglas Renaux

Page 27: EL68E Sistemas Embarcados

Qualcomm's Growing 64-bit SoC LineupMarketing Name Snapdragon 615 Snapdragon 610 Snapdragon 410

Internal Model Number MSM8939 MSM8936 MSM8916

Manufacturing Process 28nm LP 28nm LP 28nm LP

CPU 8 x ARM Cortex A53 4 x ARM Cortex A53 4 x ARM Cortex A531.2GHz+

ISA 32/64-bit ARMv8 32/64-bit ARMv8 32/64-bit ARMv8

GPU Qualcomm Adreno 405 Qualcomm Adreno 405 Qualcomm Adreno 306

H.265 Decode Yes Yes No

Memory Interface 1 x 64-bit LPDDR2/3 1 x 64-bit LPDDR2/3 1 x 64-bit LPDDR2/3

Integrated Modem 9x25 core, LTECategory 4, DC-HSPA+, DS-DA

9x25 core, LTECategory 4, DC-HSPA+, DS-DA

9x25 core, LTECategory 4, DC-HSPA+, DS-DA

Integrated WiFi Qualcomm VIVE802.11ac

Qualcomm VIVE802.11ac

Qualcomm VIVE802.11ac

eMMC Interface 4.5 4.5 4.5

© Prof. Dr. Douglas Renaux

Page 28: EL68E Sistemas Embarcados

Cortex-M7 (lançamento 24-Set-2014)

© Prof. Dr. Douglas Renaux

Page 29: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 30: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 31: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 32: EL68E Sistemas Embarcados

RISC x CISC

© Prof. Dr. Douglas Renaux

Page 33: EL68E Sistemas Embarcados

Histórico ComputadoresComputador =

um dispositivo que computa(calcula, processa dados)

© Prof. Dr. Douglas Renaux

Page 34: EL68E Sistemas Embarcados

Gerações de ComputadoresGeração Descrição0 Máquinas Mecânicas e Eletromecânicas

solução de equações1 40’s – Válvula

ENIAC, Zuse2 50’s – Transistores

Universidade de ManchesterIBM 350

3 60’s – Circuitos integrados SSI (portas lógicas)Apolo Guidance Computer (embarcado)IBM System/360Digital VAX

4 70’s – Microprocessador

5 20?? – ótico, orgânico, computação quântica ???IA © Prof. Dr. Douglas Renaux

Page 35: EL68E Sistemas Embarcados

Primeira Geração

© Prof. Dr. Douglas Renaux

Colossus - UKENIAC - USA

Page 36: EL68E Sistemas Embarcados

Segunda Geração

© Prof. Dr. Douglas Renaux

PDP-1

Page 37: EL68E Sistemas Embarcados

Terceira Geração

© Prof. Dr. Douglas RenauxVAX 11/780

Page 38: EL68E Sistemas Embarcados

De que forma os projetistas decomputadores (arquitetos) utilizaram oaumento significativo de transistoresdisponibilizados pela evolução rápida datecnologia de fabricação de circuitosintegrados ?

© Prof. Dr. Douglas Renaux

Page 39: EL68E Sistemas Embarcados

CISCComplex Instruction Set Computer

o conjunto de instruções inicialmente simples avanços tecnológicos (transistores, CIs)

permitiram a manufatura de computadores commais transistores a menor custo

projetistas optaram por conjuntos de instruçõescada vez mais complexos

© Prof. Dr. Douglas Renaux

Page 40: EL68E Sistemas Embarcados

CISCComo tornar as instruções mais complexas:

aumentar o número de modos deendereçamento

endereçamento indireto em memória [[R]] instruções com elevado grau semântico Exemplos do 68000

SBCD: Subtract Decimal with ExtendSWAP: Swap register WordsCMP2: Compare Register against Upper and Lower

Bounds

© Prof. Dr. Douglas Renaux

Page 41: EL68E Sistemas Embarcados

Aspectos Econômicos naProdução de Circuitos Integrados

© Prof. Dr. Douglas Renaux

Page 42: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 43: EL68E Sistemas Embarcados

Processor Transistorcount

Date ofintroductio

n

Manufacturer Process Area

Intel 4004 2,300 1971 Intel 10 µm 12 mm²

Intel 8008 3,500 1972 Intel 10 µm 14 mm²

Motorola68000 68,000 1979 Motorola 3.5 μm 44 mm²

Intel 80286 134,000 1982 Intel 1.5 µm 49 mm²

Pentium 3,100,000 1993 Intel 0.8 µm 294 mm²

ARM 7 578977[9] 1994 ARM 0.5 µm 68.51 mm²

ARMCortex-A9

26,000,000[

12] 2007 ARM 65 nm

AMDK10 quad-core 2M L3

463,000,000[11] 2007 AMD 65 nm 283 mm²

Quad-Core +GPU Core i7 1,400,000,000 2012 Intel 22 nm 160 mm²

Xbox OneMain SoC 5,000,000,000 2013 Microsoft/AMD 28 nm 363 mm²

Page 44: EL68E Sistemas Embarcados

PerguntasQual é, afinal, o objetivo primordial do arquiteto

/ projetista de computadores ?Dada uma tecnologia de fabricação e uma

área de silício (custo), como fazer o melhoraproveitamento possível ?

Quais são as conseqüências de um conjuntode instruções complexo ?

© Prof. Dr. Douglas Renaux

Page 45: EL68E Sistemas Embarcados

RISC x CISCRISC CISC

Conjunto de instruções reduzido Conjunto de instruções extenso

Instruções muito simples Instruções complexas

Instruções de tamanho fixo Instruções de tamanho variável

Decodificação simplificada(tabela)

Decodificação complexa(microcódigo)

Execução regular Cada instrução executa a suamaneira

Instruções requerem o mesmonúmero de clocks para executar

Grande variação no número declocks por instrução

Possibilita o uso de pipeline Extremamente difícil / impossível ouso de pipeline

© Prof. Dr. Douglas Renaux

Page 46: EL68E Sistemas Embarcados

Pipeline

© Prof. Dr. Douglas Renaux

Page 47: EL68E Sistemas Embarcados

Comparing 16-bit multiply operations across processor architectures8-bit example 16-bit example ARM Cortex-MMOV A, XL ; 2 bytesMOV B, YL ; 3 bytesMUL AB; 1 byteMOV R0, A; 1 byteMOV R1, B; 3 bytesMOV A, XL ; 2 bytesMOV B, YH ; 3 bytesMUL AB; 1 byteADD A, R1; 1 byteMOV R1, A; 1 byteMOV A, B ; 2 bytesADDC A, #0 ; 2 bytesMOV R2, A; 1 byteMOV A, XH ; 2 bytesMOV B, YL ; 3 bytesMUL AB; 1 byteADD A, R1; 1 byteMOV R1, A; 1 byteMOV A, B ; 2 bytesADDC A, R2 ; 1 bytesMOV R2, A; 1 byteMOV A, XH ; 2 bytesMOV B, YH ; 3 bytesMUL AB; 1 byteADD A, R2; 1 byteMOV R2, A; 1 byteMOV A, B ; 2 bytesADDC A, #0 ; 2 bytesMOV R3, A; 1 byte

MOV R4,&0130hMOV R5,&0138hMOV SumLo,R6MOV SumHi,R7(Operands are moved to andfrom a memory mappedhardware multiply unit)

MULS r0,r1,r0

N.B. The Cortex-M multiply in fact performs a 32-bit multiply, here we assume r0 and r1 contain 16-bit data.

© Prof. Dr. Douglas Renaux

Page 48: EL68E Sistemas Embarcados

Diferenciais da arquitetura ARMCortex-M3

© Prof. Dr. Douglas Renaux

Page 49: EL68E Sistemas Embarcados

Instruções CondicionaisA maioria das instruções ARM são

condicionais só produzem efeito se os flags estiverem

setados adequadamente BEQ – Branch on Equal

executa um salto caso o bit Z esteja setado As instruções condicionais precisam estar em

um “bloco IT”exceto a instrução B (BRANCH = Salto)

ex: ADDEQ –executa uma soma caso o bit Z esteja setado

© Prof. Dr. Douglas Renaux

Page 50: EL68E Sistemas Embarcados

PipelineNa arquitetura Cortex-M, as instruções são

executadas de acordo com uma dasseqüências abaixo:

1. BUSCADECODIFICAÇÃOEXECUÇÃO (OPERAÇÃO LÓG./ARIT.)

2. BUSCADECODIFICAÇÃOEXECUÇÃO (CÁLCULO ENDEREÇO)ACESSO À MEMÓRIA DE DADOS

© Prof. Dr. Douglas Renaux

Page 51: EL68E Sistemas Embarcados

PipelineNo Cortex-M3 o pipeline tem três estágios:

1. BUSCA – leitura da instrução da memória2. DECODIFICAÇÃO – interpretação do código

da instrução e geração dos sinais de controle3. EXECUÇÃO – operação lógica/aritmética ou

acesso a memória de dados

* o estágio de EXECUÇÃO pode ocupar mais deum ciclo de clock

© Prof. Dr. Douglas Renaux

Page 52: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 53: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 54: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 55: EL68E Sistemas Embarcados

Módulo 3

A arquitetura Cortex-M3

© Prof. Dr. Douglas Renaux

Page 56: EL68E Sistemas Embarcados

Cortex-M3 internal structure

© Prof. Dr. Douglas Renaux

Page 57: EL68E Sistemas Embarcados

Instruções do Cortex-M0

© Prof. Dr. Douglas Renaux

Page 58: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 59: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 60: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 61: EL68E Sistemas Embarcados

Arquitetura Cortex-M3Visão geral da Arquitetura:

Registradores Conjunto de instruções Acesso à Memória Interrupções

© Prof. Dr. Douglas Renaux

Page 62: EL68E Sistemas Embarcados

Módulo 4

Conjunto de Instruções Thumb-2

© Prof. Dr. Douglas Renaux

Page 63: EL68E Sistemas Embarcados

Arquitetura Cortex-M3Cortex-M3 usa a versão ARMv7-M de arquitetura

ARMv7-M Thumb2 Mix de instruções de 16 e 32 bits Não requer alinhamento na memória das

instruções de 32 bits

© Prof. Dr. Douglas Renaux

Page 64: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 65: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 66: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 67: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 68: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 69: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 70: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 71: EL68E Sistemas Embarcados

infocenter.arm.com

Developer Guides and Articles

Software Development

© Prof. Dr. Douglas Renaux

Page 72: EL68E Sistemas Embarcados

Restrições de USO: PC e SPMuitas instruções tem restrição de uso do PC e

do SP como operando ou como registradordestino. Ver restrições de uso dasinstruções.

© Prof. Dr. Douglas Renaux

Page 73: EL68E Sistemas Embarcados

Restrições

© Prof. Dr. Douglas Renaux

Page 74: EL68E Sistemas Embarcados

Formato das Instruções Log/Arit Três operandos explícitos (Rd,Op1,Op2)

ADD R0,R1,R2R0 := R1 + R2

Dois operandos e um implícito (Rd,Op2)ADDS R0,R5R0 := R0 + R5

Dois operandos (Op1,Op2)CMP R8,R9

© Prof. Dr. Douglas Renaux

Page 75: EL68E Sistemas Embarcados

1 - Lógicas e AritméticasInstrução Descrição

ADD, ADDS, ADCS Soma, soma com carry

SUB, SUBS Subtrai

RSBS Subtração reversa

MUL Multiplicação: 32b x 32b -> 32b

ANDS, ORRS, EORS Operações lógicas: E, OU, OU-EXCL (bit a bit)

BICS Operação lógica: E NÃO

CMP, CMN Comparação, comparação negada

TEQ, TST Teste de bits

MOV, MVN Move, move negado

© Prof. Dr. Douglas Renaux

Page 76: EL68E Sistemas Embarcados

CMP, CMN, TST, MOV, MVN Formatos: CMN Rn,Rm // R0-R7 (soma Rn e Rm) CMP Rn, #imm //R0-R14; 0-255 CMP Rn,Rm TST Rn, Rm // R0-R7 (AND) MOVS Rd, Rm MOVS Rd, #imm // 0-255 MVNS Rd,Rm MOV Rd,Rm

© Prof. Dr. Douglas Renaux

Page 77: EL68E Sistemas Embarcados

Deslocamento (LSLS)

• n >= 32 todos os bits são zeradosn >= 33 todos os bits e o carry são zerados

• variantes: só LSLS (altera carry)LSLS {Rd},Rm,RsLSLS {Rd},Rm,#imm

• efeito de LSLS Rm, #n é Rm * 2n

© Prof. Dr. Douglas Renaux

Page 78: EL68E Sistemas Embarcados

Deslocamento (LSRS)

• n >= 32 todos os bits são zeradosn >= 33 todos os bits e o carry são zerados

• variantes: só LSRS (altera carry)LSRS {Rd},Rm,RsLSRS {Rd},Rm,#imm

• efeito de LSRS Rm, #n é Rm / 2n

© Prof. Dr. Douglas Renaux

Page 79: EL68E Sistemas Embarcados

Deslocamento (ASRS)

n >= 32 todos os bits e o carry recebem cópia do bit 31variantes: só ASRS (altera carry)

ASRS {Rd},Rm,RsASRS {Rd},Rm,#imm

efeito de ASRS Rm, #n é Rm / 2n

© Prof. Dr. Douglas Renaux

Page 80: EL68E Sistemas Embarcados

Rotação (RORS) / RRXn >= 32 é o mesmo que n-32variantes: só RORS (altera carry)

RORS {Rd},Rm,RsRORS {Rd},Rm,#imm

efeito de LSRS Rm, #n é Rm / 2n (para Rm semsinal)

• n = 32 o valor não é alterado e CY := Rm[31]n = 33 mesmo efeito que RORS com n = 1

• variantes: só RORS (altera carry)RORS {Rm},Rm,Rs

• não acessa regs altos• apenas dois operandos

© Prof. Dr. Douglas Renaux

Page 81: EL68E Sistemas Embarcados

ARM – Barrel Shifter

DestinationCF 0 Destination CF

LSL : Logical Left Shift ASR: Arithmetic Right Shift

Multiplication by a power of 2 Division by a power of 2,preserving the sign bit

Destination CF...0 Destination CF

LSR : Logical Shift Right ROR: Rotate Right

Division by a power of 2 Bit rotate with wrap aroundfrom LSB to MSB

Destination

RRX: Rotate Right Extended

Single bit rotate with wrap aroundfrom CF to MSB

CF

© Prof. Dr. Douglas Renaux

Page 82: EL68E Sistemas Embarcados

Operando 2 Registrador

R4 Registrador e deslocamento

R4, LSL #4R5, ASR #1

Constante:#4#0xAABB#-2

© Prof. Dr. Douglas Renaux

Page 83: EL68E Sistemas Embarcados

Deslocamentos no Operando 2Opções:

• ASR #n 1 ≤ n ≤ 32• LSL #n 1 ≤ n ≤ 31• LSR #n 1 ≤ n ≤ 32• ROR #n 1 ≤ n ≤ 31• RRX

© Prof. Dr. Douglas Renaux

Page 84: EL68E Sistemas Embarcados

Constantes no Operando 2Não é possível definir qualquer valor de

constante no Operando 2Apenas alguns valores podem ser formados:

Valores de 8 bits deslocados Valores do tipo 0x00XY00XY Valores do tipo 0xXY00XY00 Valores do tipo 0xXYXYXYXY

© Prof. Dr. Douglas Renaux

Page 85: EL68E Sistemas Embarcados

Exercícios

1-init: MOV r1,#3

MOV r2,#5MOVS r3,#-6ADD r0,r2,r3ADDS r0,r2,r3ADDS r0,#9CMP r0,#8SUBS r0,#10SUBS r0,#256SUBS r0,#3000ASR r0,#5

2-escreva um programa em assembly para descobrir

qual o valor corrente de PC, ou seja, qual o valorde PC quando a instrução no endereço i estásendo executada. Explique o que descobriu.

© Prof. Dr. Douglas Renaux

interpretação dos valores numéricosinterpretação dos flagscorrigir e explicar erros de montagem

Page 86: EL68E Sistemas Embarcados

MULTIPLICAÇÃO-1MULS Rd,Rn,Rm

Rd := Rn x Rm Rm deve ser o mesmo registrador que Rd formato preferido: MULS Rd,Rn

R0 – R732-bits x 32-bits -> 32-bits em 1 único ciclo de clockafeta N e Z

© Prof. Dr. Douglas Renaux

Page 87: EL68E Sistemas Embarcados

MULTIPLICAÇÃO-2MUL Rd,Rn,Rm

Rd := Rn x Rm formato alternativo: MUL Rd,Rn

Registradores exceto SP, PC32-bits x 32-bits -> 32-bits em 1 único ciclo de clock

© Prof. Dr. Douglas Renaux

Page 88: EL68E Sistemas Embarcados

MULTIPLICAÇÃO-3MLA Rd,Rn,Rm,Ra

Rd := Ra + Rn x Rm

32-bits x 32-bits -> 32-bits em 2 ciclos de clock

© Prof. Dr. Douglas Renaux

Page 89: EL68E Sistemas Embarcados

MULTIPLICAÇÃO-4MLS Rd,Rn,Rm,Ra

Rd := Ra - Rn x Rm

32-bits x 32-bits -> 32-bits em 2 ciclos de clock

© Prof. Dr. Douglas Renaux

Page 90: EL68E Sistemas Embarcados

MULTIPLICAÇÃO-5UMULL RdLo, RdHi, Rn, Rm

RdHi:RdLo := Rn x Rm

UMLAL RdLo, RdHi, Rn, Rm RdHi:RdLo := RdHi:RdLo + Rn x Rm

SMULL RdLo, RdHi, Rn, Rm RdHi:RdLo := Rn x Rm

SMLAL RdLo, RdHi, Rn, Rm RdHi:RdLo := RdHi:RdLo + Rn x Rm

32-bits x 32-bits -> 64-bits em 3 a 5 ciclos de clock© Prof. Dr. Douglas Renaux

Page 91: EL68E Sistemas Embarcados

DIVISÃOUDIV Rd,Rn,Rm

Rd := Rn / Rm

SDIV Rd,Rn,Rm Rd := Rn / Rm

32-bits / 32-bits -> 32-bits em 4 ciclos de clock

configurável se quer gerar exceção na divisão por zero

© Prof. Dr. Douglas Renaux

Page 92: EL68E Sistemas Embarcados

MOV, MOV.W, MOVT Para simplificar a carga de constantes que não

atendem o formato “8-bits com deslocamento”

MOV Ri,#16-bits (equivalente a MOV.W Ri,#16)carrega os 16 bits menos significativos de RiMOVT Ri,#16-bits

carrega os 16 bits mais significativos de Ri

Com 2 instruções pode-se carregar qualquerconstante de 32 bits em um registrador !

© Prof. Dr. Douglas Renaux

Page 93: EL68E Sistemas Embarcados

Exercícios1. Multiplicar o valor inteiro (32-bits) que está em R3

pela constant 9:a) Usando instrução de multiplicaçãob) Sem usar multiplicação

(sugestão: usar ADD/SUB/shift)

2. Idem, mas multiplicando por 15.3. Qual a maneira mais eficiente (menos instruções e

menos tempo) para fazer as seguintes cargas deconstantes:

1. R0 := 02. R1 := 2003. R2 := 0x12344. R3 := 0xFFFFFF005. R4 := 0xABCDEF00

© Prof. Dr. Douglas Renaux

Page 94: EL68E Sistemas Embarcados

Exercícios4. Alterar os bits 5 a 9 do registrador R10 para

11001a) Usando AND/OR/…b) Usando instruções de bit-field

(após os próximos slides)

sua solução deve funcionar para qualquer que sejao valor atual de R10.

© Prof. Dr. Douglas Renaux

Page 95: EL68E Sistemas Embarcados

Instruções que Operam em BitsBFC Rd, #lsb, #w#lsb e #w estão na faixa de 0 a 31 e 1 a 32Bit-field clear: limpa #w bits a partir de #lsbBFC R0, #4, #8 R0 = 0xFFFF F00F

BFI Rd, Rn, #lsb, #wBit-field Insert: copia #w bits de Rn:0 para Rd:#lsbBFI R1, R2, #8, #0xC R1 = 0x FFFC DDFF

© Prof. Dr. Douglas Renaux

Page 96: EL68E Sistemas Embarcados

Instruções que Operam em BitsSBFX Rd, Rn, #lsb, #w#lsb e #w estão na faixa de 0 a 31 e 1 a 32Extrai campo e faz extensão de sinal:

copia #w bits a partir de #lsb para o bit0 de Rd eestende

SBFX R0, R1, #4, #8 R0 = 0xFFFF FFBC

UBFX Rd, Rn, #lsb, #wIdem, estendendo com zeros

© Prof. Dr. Douglas Renaux

Page 97: EL68E Sistemas Embarcados

ExtendSXTB Rd,Rm // Rd := sign extend Rm[7:0]UXTB Rd,Rm // Rd := zero extend Rm[7:0]SXTH Rd,Rm // Rd := sign extend Rm[15:0]UXTH Rd,Rm // Rd := zero extend Rm[15:0]

R0-R7

© Prof. Dr. Douglas Renaux

Page 98: EL68E Sistemas Embarcados

ADRADR Rd, labelcalcula o endereço do label na forma de um

offset para o PCCarrega o Rd com o endereço do label

Faixa permitida: PC +/- 4095

Obs: no IAR o label deve estar na região dedados para que o assembler aceite o ADR

© Prof. Dr. Douglas Renaux

Page 99: EL68E Sistemas Embarcados

2 - Acesso à Memória

© Prof. Dr. Douglas Renaux

Page 100: EL68E Sistemas Embarcados

Acessos Alinhadosum acesso é alinhado se:

acesso à Word é em endereço múltiplo de 4 acesso à HalfWord é em endereço múltiplo de 2 acesso à Byte é em endereço múltiplo de 1

No Cortex-M0 todos os acessos devem seralinhados ou causa um HardFault

No Cortex-M3 os acessos podem serdesalinhados

© Prof. Dr. Douglas Renaux

Page 101: EL68E Sistemas Embarcados

LDRLê dado da memóriaFormatos:

LDR Rt,[Rn] LDR Rt,[Rn,#off] LDRB Rt,[Rn,#off] LDRH Rt,[Rn,#off]

Restrições: só R0 .. R7 e SP #off: 0..1020 (SP), 0..124 (R0-R7), 0..62 (LDRH)

0..31 (LDRB); só valores positivos #off deve ser *4 para LDR e *2 para LDRH

© Prof. Dr. Douglas Renaux

Page 102: EL68E Sistemas Embarcados

LDRLê dado da memóriaFormatos:

LDR Rt,[Rn,Rm] LDRB Rt,[Rn,Rm] LDRH Rt,[Rn,Rm]

LDR Rt,[Rn, Rm, LSL #2] //end = Rn + Rm<<2

© Prof. Dr. Douglas Renaux

Page 103: EL68E Sistemas Embarcados

LDR – Pré e Pós IndexadoPré-Indexado:• LDR Rd,[Ri,#cte]• LDR Rd,[Ri,Rm]• Primeiro calcula endereço depois acessa memória• Para atualizar o Ri usar ! LDR R2,[R3,#4]!

Pós-Indexado• LDR Rd,[R ],#cte• LDR Rd,[Ri],Rm• Primeiro acessa memória depois calcula endereço• Sempre atualiza Ri © Prof. Dr. Douglas Renaux

Page 104: EL68E Sistemas Embarcados

LDRSB e LDRSHLê dado da memória e faz extensão de sinalFormatos:

LDRSB Rt,[Rn,#off] LDRSH Rt,[Rn,#off] LDRSB Rt,[Rn,Rm] LDRSH Rt,[Rn,Rm]

Restrições: só R0 .. R7 e SP (para offset imediato) #off: 0..1020 (SP), 0..124 (R0-R7), 0..62 (LDRH)

0..31 (LDRB) #off deve ser *4 para LDR e *2 para LDRH

© Prof. Dr. Douglas Renaux

Page 105: EL68E Sistemas Embarcados

LDR (relativo ao PC)Lê dado da memóriaO dado está em endereço próximo ao código sendo

executadoFormatos:

LDR Rt,[PC,#100] LDR Rt, label

Restrições: só R0 .. R7

© Prof. Dr. Douglas Renaux

Page 106: EL68E Sistemas Embarcados

STREscreve dado da memóriaFormatos:

STR STRB STRH

mesmas regras que para LDR

© Prof. Dr. Douglas Renaux

Page 107: EL68E Sistemas Embarcados

LDM e STMTranfere múltiplos registradores de/para memóriaFormatos:

LDM R0,{R0,R1,R2} LDM R1!,{R2-R7} STM R0!,{R2-R4}

LDM = LDMIA, LDMFDSTM = STMIA, STMEA

© Prof. Dr. Douglas Renaux

Page 108: EL68E Sistemas Embarcados

Refazer para Cortex-M3Só IA e DBSó FD e EA

© Prof. Dr. Douglas Renaux

Page 109: EL68E Sistemas Embarcados

PUSH e POPTranfere múltiplos registradores de/para memóriaFormatos:

PUSH {R0-R7} POP {R1,R3-R6}

Restrição: R0-R7 e LR/PCFull Descending Stack

STMFD sp!, {r0,r1,r3-r5}PUSH {r0,r1,r3-r5}

r5r4r3r1r0SP

FD : Full Descending

old SP

endereçobaixo

© Prof. Dr. Douglas Renaux

Page 110: EL68E Sistemas Embarcados

LDM e STM

141

STMDB sp!, {r0,r1,r3-r5}STMFD sp!, {r0,r1,r3-r5}

r5r4r3r1r0SP

0x400

0x418

0x3e8

STMIA sp!, {r0,r1,r3-r5}STMEA sp!, {r0,r1,r3-r5}

r5r4r3r1r0

SP

Old SP

DB : Decrement BeforeFD : Full Descending

IA : Increment AfterEA : Empty Ascending

Old SP

© Prof. Dr. Douglas Renaux

Page 111: EL68E Sistemas Embarcados

3 - SaltosB loopA ; salta para o label LoopA

(unica instrução condicional que não precisa IT)BL funC ; chamada de rotina, armazena endereço

de retorno em LRBX LR ; retorno de chamada de rotinaBLX R0 ; Chamada de rotinaBEQ labelD ; Salto condicional

© Prof. Dr. Douglas Renaux

Page 112: EL68E Sistemas Embarcados

SaltosCBZ Rn, label – Testa Rn e salta se 0CBNZ Rn, label – Testa Rn e salta se não-zero

Restrições: Só saltos para frente até 130 bytes Não pode ser usado em bloco IT Não modifica flags Só R0 a R7

© Prof. Dr. Douglas Renaux

Page 113: EL68E Sistemas Embarcados

Bloco ITBloco consiste de 1 a 4 instruções condicionaisITxyz condx,y,z são T ou E (Then ou Else)

ITTE EQADDEQSUBEQORRNE

© Prof. Dr. Douglas Renaux

Page 114: EL68E Sistemas Embarcados

Bloco ITA instrução de salto condicional

Bcc label(onde cc é uma das condições)não precisa estar num bloco IT

As instruções:IT, CBZ, CBNZ, CPSIE, CPSIDNÃO podem estar em bloco IT

Uma instrução que altera PC, só pode estar numbloco IT se for a última.

© Prof. Dr. Douglas Renaux

Page 115: EL68E Sistemas Embarcados

CondiçõesNo Cortex-M0 só as instruções de salto são condicionaisNo Cortex-M3 as outras instruções podem ir em blocos IT

© Prof. Dr. Douglas Renaux

Page 116: EL68E Sistemas Embarcados

Saltos (limites)

© Prof. Dr. Douglas Renaux

Page 117: EL68E Sistemas Embarcados

Exercício

© Prof. Dr. Douglas Renaux

1)

Page 118: EL68E Sistemas Embarcados

Exercício - continuação2) Como transformar em subrotina ?3) Como chamar a partir de outra rotina em

assembly ?4) Como chamar a partir de uma função em C ?

© Prof. Dr. Douglas Renaux

Page 119: EL68E Sistemas Embarcados

ExercícioQual a maneira mais eficiente de implementar

um loop com número fixo de execuções,como por exemplo:

for (int i=0; i<10; i++) {// dentro do loop não se usa ia = b<<3 + a;b++;

}

© Prof. Dr. Douglas Renaux

Page 120: EL68E Sistemas Embarcados

Módulo 5

Registradores EspeciaisModos de OperaçãoInstruções Especiais

© Prof. Dr. Douglas Renaux

Page 121: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

priviledged

Page 122: EL68E Sistemas Embarcados

Prática1. Utilizando o kit LPC Xpresso + placa base e o

workspace - Código Exemplo Lab02. Recompilar e iniciar a depuração para o projeto

oled_periph3. Com o depurador parado no início da função

main:1. Quais os registradores que podem ser acessados a

partir do depurador ?2. Quais tem bits individualizados e quais os significados

deles ?3. O valor que o depurador apresenta para o PC é o valor

real ou um valor modificado ?

© Prof. Dr. Douglas Renaux

Page 123: EL68E Sistemas Embarcados

Pilha (Stack)pode-se trabalhar apenas com MSPo SP corrente sempre é acessado como R13 ou SPO SP está sempre com alinhamento de Word

(i.e. endereços múltiplos de 4)Instruções:

PUSH - empilha POP - desempilha

Full descending

© Prof. Dr. Douglas Renaux

Page 124: EL68E Sistemas Embarcados

Link RegisterR14 ou LRArmazena o endereço de retorno de uma subrotinaDeve ser salvo antes de chamar outra subrotina

© Prof. Dr. Douglas Renaux

Page 125: EL68E Sistemas Embarcados

Contador de ProgramaPC ou R15instrução sendo executada + 4endereço de instrução é sempre par (bit0 = 0)bit0 do PC é usado para indicar modo Thumb

após reset e em algumas instruções desalto: BX e BLX

© Prof. Dr. Douglas Renaux

Page 126: EL68E Sistemas Embarcados

Prática4. Escreva instruções em assembly que alterem os

registradores SP, LR, PC1. Como acompanhar as alterações ?2. Como visualizar o conteúdo da pilha ?

© Prof. Dr. Douglas Renaux

Page 127: EL68E Sistemas Embarcados

Stack: selecionado pelo bit1 de CONTROL0 = main; 1 = process (este stack só pode ser usado em modo Thread)

Modo: selecionado pelo IPSR0 = Thread; >0 exception

Privilégio: bit 0 do CONTROL (0 = privilegiado, 1 = não-privilegiado)no Cortex-M0 é sempre privilegiado (sem restrição)

© Prof. Dr. Douglas Renaux© Prof. Dr. Douglas Renaux

Page 128: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 129: EL68E Sistemas Embarcados

xPSR

© Prof. Dr. Douglas Renaux© Prof. Dr. Douglas Renaux

Page 130: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 131: EL68E Sistemas Embarcados

IPSR

IPSR Exception number != IRQ Number (Table 320)

© Prof. Dr. Douglas Renaux

Page 132: EL68E Sistemas Embarcados

CONTROL

CONTROL instruções MSR e MRS após MSR usar ISB para garantir que o novo stack

será usado© Prof. Dr. Douglas Renaux

© Prof. Dr. Douglas Renaux

Page 133: EL68E Sistemas Embarcados

PRIMASK

PRIMASK só pode ser escrito em modo privilegiado instruções CPSID e CPSIE, MSR e MRS

© Prof. Dr. Douglas Renaux

Page 134: EL68E Sistemas Embarcados

Modo PrivilegiadoNo modo Privilegiado o código tem acesso a

TODOS os recursos.No modo NÃO-Privilegiado o código NÃO tem

acesso à: instruções como CPS que permitiriam alterar

FAULTMASK e PRIMASK maioria dos registradores do System Control

© Prof. Dr. Douglas Renaux

Page 135: EL68E Sistemas Embarcados

Prática4. Escreva instruções em assembly que alterem os

registradores SP, LR, PC1. Como acompanhar as alterações ?2. Como visualizar o conteúdo da pilha ?

5. Com o depurador parado:1. Quais registradores tem bits individualizados e quais os

significados deles ?

6. No início da função main:a) Qual o estado do processador ? Quais bits de quais

registradores foram usados para obter esta informação ?

7. Coloque um breakpoint no corpo da função SysTick_Handlere execute até parar nele:

a) Qual o estado do processador ? Quais bits de quaisregistradores foram usados para obter esta informação ?

b) Qual o valor de LR ? Há uma instrução válida neste endereço ?© Prof. Dr. Douglas Renaux

Page 136: EL68E Sistemas Embarcados

4 - Outros

© Prof. Dr. Douglas Renaux

Page 137: EL68E Sistemas Embarcados

BKPTBKPT #imm#imm é um valor de 0 a 255entrada no estado de depuraçãoesta instrução é utilizada por debugers

instrução não deve ser usada porprogramadores

© Prof. Dr. Douglas Renaux

Page 138: EL68E Sistemas Embarcados

CPSChange Processor State

altera o PRIMASK

Formatos: CPSID i // desabilita IRQs CPSIE i // habilita IRQs

© Prof. Dr. Douglas Renaux

Page 139: EL68E Sistemas Embarcados

DMB — The Data Memory Barrier (DMB)completa transações pendentes antes derealizar outra transação.

DSB — The Data Synchronization Barrier (DSB)completa transações pendentes antes de

executar a próxima instrução.ISB — The Instruction Synchronization Barrier

(ISB) garante que o efeito das transaçõesefetuadas seja percebido antes da próximainstrução.

© Prof. Dr. Douglas Renaux

Page 140: EL68E Sistemas Embarcados

Exemplos de UsoTabela de vetores: usar DMB entre uma

alteração no vetor e a habilitação da IRQcorrespondente.

Alteração no código: usar uma ISB logo após ainstrução que altera o código.

Alteração no mapa de memória: usar um DSBimediatamente após a instrução que altera omapa de memória.

© Prof. Dr. Douglas Renaux

Page 141: EL68E Sistemas Embarcados

MSR, MRSMSR – Move to Special Reg from Register

MSR special_reg, RnMRS – Move to Register from Special Reg

MRS Rd, special_regSpecial Reg:

APSR, IPSR, EPSR, IEPSR, IAPSR,EAPSR, PSR, MSP, PSP, PRIMASK, orCONTROL

Rd, Rn – não podem ser SP ou PC

© Prof. Dr. Douglas Renaux

Page 142: EL68E Sistemas Embarcados

NOPNão realiza nenhuma operaçãoPode ser elimininada no pipeline (i.e. pode ser

executado em tempo 0)Uso: alinhamento de código em fronteira de

word ou double-word

© Prof. Dr. Douglas Renaux

Page 143: EL68E Sistemas Embarcados

SEVSend EventFormato:

SEV

Informa da ocorrência de um eventoSeria usado com WFE que não existe no

LPC11xx

© Prof. Dr. Douglas Renaux

Page 144: EL68E Sistemas Embarcados

SVCChamada ao Supervisor (S.O.)Formato

SVC #imm // 0 .. 255Gera uma exceção do tipo SVCA ISR pode ler o valor de #imm para identificar

o serviço solicitado

© Prof. Dr. Douglas Renaux

Page 145: EL68E Sistemas Embarcados

WFIWait for InterruptFormato:

WFIentra em modo de baixo consumo até que:

exceção IRQ, mesmo que mascarada por PRIMASK solicitação de DEBUG

© Prof. Dr. Douglas Renaux

Page 146: EL68E Sistemas Embarcados

Módulo 6

Acesso à Memória

© Prof. Dr. Douglas Renaux

Page 147: EL68E Sistemas Embarcados

Memória – TiposNormal: pode ocorrer reordenação dos acessos e

leituras especulativasDevice: ordem dos acessos é preservada em

relação a outros acessos a Device e Strongly-Ordered

Strongly-Ordered: preserva ordem em relação atodos os demais acessos. Pode ocorrerbufferização nos acessos à Device, mas nãoaos acessos à Strongly-Ordered

Execute Never (XN): não é permitida a leitura deinstruções nesta região

© Prof. Dr. Douglas Renaux

Page 148: EL68E Sistemas Embarcados

Memória - Ordenação

© Prof. Dr. Douglas Renaux

Page 149: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux© Prof. Dr. Douglas Renaux

Page 150: EL68E Sistemas Embarcados

Memória – Processadores 13xx

© Prof. Dr. Douglas Renaux

Page 151: EL68E Sistemas Embarcados

Módulo 7

Exceções

© Prof. Dr. Douglas Renaux

Page 152: EL68E Sistemas Embarcados

ExceçõesQualquer solicitação para mudança do fluxo

normal de um programa. interrupção detecção de falha / erro (p.ex. acesso

desalinhado)

© Prof. Dr. Douglas Renaux

Page 153: EL68E Sistemas Embarcados

ExceçõesEstados

Inativo (inactive) = não ativo nem pendente Pendente (pending) = aguardando atendimento

(p.ex. pedido de interrupção – irq – deperiférico)

Ativo (active) = em atendimentopode haver mais de uma interrupção ematendimento (interrupções aninhadas – nested)

Ativo e Pendente = interrupção em atendimentoe outro pedido da mesma fonte está pendente

© Prof. Dr. Douglas Renaux

Page 154: EL68E Sistemas Embarcados

Tipos de ExceçãoReset – reinício da execução (modo Thread) (-3)NMI - prioridade -2HardFault – prioridade -1

falha genérica: representa todas as classes defalhas que não foram tratadas

SVC – causada pela instrução SVC (SupervisorCall)

PendSV – solicitação de serviço (p.ex.chaveamento de contexto)

SysTick – gerado pelo system timerIRQ – pedido de interrupção feito por periférico

© Prof. Dr. Douglas Renaux

Page 155: EL68E Sistemas Embarcados

Tipos de ExceçãoMemManage: falhas de acesso à memória

detectadas pela MPU. Se desabilitado,escala para HardFault

BusFault: outras falhas no barramento dememória que não as MemManage.

UsageFault: Falhas de execução que não sãorelacionadas ao barramento de memória. P.ex. instrução indefinida ou estado inválido.

© Prof. Dr. Douglas Renaux

Page 156: EL68E Sistemas Embarcados

Configurável: prioridade de 0 (default) a 3Prioridades: valor menor significa maior prioridadePRIMASK: pode mascarar as IRQ com prioridade configurável

© Prof. Dr. Douglas Renaux

Page 157: EL68E Sistemas Embarcados

Exception Handlers(Rotinas de Tratamento de Exceção)

ISR (Interrupt Service Routine)Rotina de Tratamento de Interrupçãopara IRQ 0 até IRQ 31

Fault HandlerRotina de Tratamento de Faltapara HardFault

System HandlerRotina de Tratamento de Exceções doSistemapara NMI, PendSV, SVC, SysTick

© Prof. Dr. Douglas Renaux

Page 158: EL68E Sistemas Embarcados

O LSb deve ser 1 indicando que a rotina de tratamento é em ThumbO IAR coloca o bit0 em 1 automaticamente para todos os labels criados

em Thumb© Prof. Dr. Douglas Renaux

Page 159: EL68E Sistemas Embarcados

Atendimento e RetornoPreempção: se um handler está em execução uma exceção

de maior prioridade pode causar preempção. Chama-sede exceções aninhadas.

Retorno: ocorre ao término da execução do handler se: não há exceção pendente com prioridade suficiente para ser

atendida o handler que terminou não é de uma late-arriving exception

Tail-chaining (encadeamento): se ao término de um handlerexistir uma exceção pendente apta a ser tratada entãonão se executa a seqüência de POP / PUSH

Late-arriving (chegada tardia): Mecanismo que acelera apreempção. Uma exceção de maior prioridade ocorredurante o salvamento de estado (PUSHs). Neste caso aexceção de maior prioridade é atendida e, por tail-chaining, em seguida a de menor prioridade.

© Prof. Dr. Douglas Renaux

Page 160: EL68E Sistemas Embarcados

© Prof. Dr. Douglas Renaux

Page 161: EL68E Sistemas Embarcados

AtendimentoUm atendimento de exceção ocorre quando:

existe uma exceção pendente com prioridadesuficiente (*); e

o processador está em modo Thread; ou a exceção pendente é de prioridade maior que

a exceção sendo atendida (preempção)

(*) prioridade suficiente significa prioridade maior do que o limiteestabelecido no PRIMASK

© Prof. Dr. Douglas Renaux

Page 162: EL68E Sistemas Embarcados

Atendimento (2)Stacking – salva o estado

O SP está alinhado em double-wordse necessário pula um word antes de começar

o empilhamento

© Prof. Dr. Douglas Renaux

Page 163: EL68E Sistemas Embarcados

Atendimento (3)O processador lê do vector_table o endereço

do handler;LR := EXC_RETURN (ver próximo slide)após o stacking, a execução se dá a partir do

handler, a exceção passa ao status de ativaSe durante o stacking ocorreu outra exceção

de maior prioridade então esta é atendida(late-arriving exception)

© Prof. Dr. Douglas Renaux© Prof. Dr. Douglas Renaux

Page 164: EL68E Sistemas Embarcados

Atendimento (4)

© Prof. Dr. Douglas Renaux

Page 165: EL68E Sistemas Embarcados

Retorno de ExceçãoOcorre quando uma instrução escreve no PC

um dos valores de EXC_RETURNAs instruções que podem ser usadas para

retorno de exceção são POP e BX

© Prof. Dr. Douglas Renaux

Page 166: EL68E Sistemas Embarcados

Tratamento de FaltasTodas as faltas causam HardFaultTrava se a falta ocorre no handler da NMI ou HardFaultFaltas:

SVC BKPT fora de depuração (i.e. não conectado ao IAR) erro de acesso a memória (erro de barramento) em LD

ou ST tentativa de execução em área XN tentativa de execução causando erro de barramento erro de barramento em acesso ao vector_table tentativa de execução de instrução inválida tentativa de execução em modo ARM (T=0) LD ou ST desalinhado

© Prof. Dr. Douglas Renaux

Page 167: EL68E Sistemas Embarcados

Hard Faults

© Prof. Dr. Douglas Renaux

Page 168: EL68E Sistemas Embarcados

Travamento (Lockup)Ocorre devido à falta quando executando

handler de NMI ou HardFault ou erro debarramento quando desempilhando PSR.

Soluções: Reset Debugger pára a execução NMI interrompe HardFault handler

© Prof. Dr. Douglas Renaux

Page 169: EL68E Sistemas Embarcados

Módulo 8

ATPCS

© Prof. Dr. Douglas Renaux

Page 170: EL68E Sistemas Embarcados

ATPCSARM-Thumb Procedure Call Std

Passagem de parâmetros:- primeiros parâmetros em R0 .. R3

demais parâmetros pela pilha- retorno: R0 ou R1:R0

© Prof. Dr. Douglas Renaux

Page 171: EL68E Sistemas Embarcados

ATPCS – Tipos de Dados

Tipo Tamanho Tipo Tamanhochar 8 bits [ ] 32 bitsshort 16 bits struct ptr = 32 bitsint 32 bits float 32 bitsunsigned 32 bits double 64 bitslong 32 bits enum = intlong long 64 bits* 32 bits

© Prof. Dr. Douglas Renaux

Page 172: EL68E Sistemas Embarcados

ATPCSQuem tem a obrigação de salvar o valor dos

registradores caso interesse manter estevalor após a chamada de uma função ?

- rotina chamada: deve salvar R4 – R11 antesde alterar

- R0 – R3,R12 podem ser livrementeutilizados pela rotina chamada

© Prof. Dr. Douglas Renaux

Page 173: EL68E Sistemas Embarcados

Código de Entrada e Saída deFunção

PUSH {R4-R7,LR}

…POP {R4-R7,LR}

MOV PC,LR

PUSH {R4-R7,LR}

…POP {R4-R7,PC}

© Prof. Dr. Douglas Renaux