introduktion till arm cortex -m4 - cse.chalmers.se · amd, applied micro, broadcomm, caldexa,...

16
Programmering av inbyggda system Introduktion till ARM Cortex M4 1 Introduktion till ARM Cortex-M4 Ur innehållet: Historik - ARM ARM/Thumb instruktionsuppsättning Register Adresseringssätt

Upload: others

Post on 24-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Programmering av inbyggda system

Introduktion till ARM Cortex M4 1

Introduktion till ARM Cortex-M4

Ur innehållet:Historik - ARMARM/Thumb instruktionsuppsättningRegisterAdresseringssätt

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1979 – ”Acorn Computers”Acorn System 1 (MOS 6502 )

1981-1994 – BBC micro8-bitars (MOS6502-processor, 2 MHz)Mer än 1,5 miljon sålda enheterMer än 1,5 miljon sålda enheter

ARM – Tidiga datorer

2

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1987 – 1990 – Archimedes32-bitars (ARM1-processor, 8 MHz)

3

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1990 – 1992 – R260ARM3-processor, 30 MHz16MB minne

4

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1992 Apple Newton ARMv3 arkitekturARM610 processor

35 000 transistorer33 MHz

5

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1996 – RISC arbetsstation StrongARM-processor, 233 MHz

6

Programmering av inbyggda system

Introduktion till ARM Cortex M4

1996 – 1998 ”Referenskonstruktioner”

- ingen serieproduktion Fast NCDeskliteAcorn Stork NotebookPhoebe

http://www.computinghistory.org.uk/

7

Programmering av inbyggda system

Introduktion till ARM Cortex M4

ARM - Licensierad IPEn lång rad företag använder i dag ARM-arkitektur på licens i sina produkter:AMD, Applied Micro, Broadcomm, Caldexa, Freescale (numera NXP) Huawei, IBM, Infineon, Intel, Renesas, Rockchip, Samsung, STMicroelectronics

Antal miljarder sålda enheter baserade på ARM 1997-20148

Programmering av inbyggda system

Introduktion till ARM Cortex M4

ARM – i dagens konsumentprodukter

9

Programmering av inbyggda system

Introduktion till ARM Cortex M4

ARM – i Apple iPhone (2010)

10

Programmering av inbyggda system

Introduktion till ARM Cortex M4

Instruktionsuppsättningar ARM

32-bitars instruktioner, alla kan exekveras villkorligt

Thumb 1 (1994) Delmängd, 16-bitars instruktioner

Thumb 2 (2003)Praktiskt taget alla ARM-instruktioner men ej generellt villkorligtexekverbara, i stället kan IT (If/then-block) skapas

Vissa processorer kan exekvera både ARM och Thumb-kod.En bit i statusregistret avgör typ.

Vi använder dock en Cortex-M4 som BARA förstår Thumb.

11

Programmering av inbyggda system

Introduktion till ARM Cortex M4

Instruktionsgrupper (översikt) Minnesoperationer

Load/Store-instruktioner för kommunkation med minne

Uttrycksevaluering - aritmetik- och logikinstruktioner32-bitars addition,subtraktion,multiplikation och division32 bitars bitvis AND, OR och EOR

Storlekskonvertering - ("typkonverteringar")Alla uttrycksevaluering sker med 32-bitars aritmetik, byte- ochhalfword data måste därför kunna konverteras till 32 bitar

ProgramflödeskontrollOvillkorligt och villkorligt, ”compare and branch”, ”table branch”

Speciella instruktioner”move” med speciella register, kontrollera avbrottsfunktioner etc.

Flyttalsinstruktioner (Vector Floating Point)Speciella instruktioner för flyttal

12

Programmering av inbyggda system

Introduktion till ARM Cortex M4 13

Programmering av inbyggda system

Introduktion till ARM Cortex M4

Enhetlig assemblersyntax 16- och 32-bitars Thumb-instruktioner kan användas om

vartannat. För att undvika problem med val av instruktionsuppsättning

används ”enhetlig syntax” – assemblatorn väljer i första hand 16-bitars instruktion.

EXEMPEL:

.syntax unified

Om direktivet INTE anges får man felmeddelande om man försöker använda den utökade Thumb-instruktionsuppsättningen

14

Programmering av inbyggda system

Introduktion till ARM Cortex M4

ARM – Registeruppsättning

15

Programmering av inbyggda system

Introduktion till ARM Cortex M4

AdresseringsmetoderNamn Syntax Exempel RTNRegister direct Rx MOV R0,R1 R0←R1Direct Symbol LDR R0,symbol R0←M(symbol)Immediate #const MOV R0,#0x15 R0←0x15Register indirect [Rx] LDR R0,[R1] R0←M(R1).. with offset [Rx,#offset] LDR R0,[R1,#4] R0←M(R1+4).. with pre-increment [Rx,#offset]! LDR R0,[R1,#4]! R1←R1+4, R0←M(R1).. with post-increment [Rx],#offset LDR R0,[R1],#4 R0←M(R1), R1←R1+4.. with register index [Rx,Ri] LDR R0,[R1,R2] R0←M(R1+R2).. with scaled index [Rx,Ri,shift] LDR R0,[R1,R2,LSL #2] R0←M(R1+(R2<<2))

16