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
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
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
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