Introduktion till ARM Cortex-M4 Ur innehållet: Historik - ARM ARM/Thumb instruktionsuppsättning Register Adresseringssätt 1
ARM Tidiga datorer Programmering av inbyggda system 1979 Acorn Computers Acorn System 1 (MOS 6502 ) 1981-1994 BBC micro 8-bitars (MOS6502-processor, 2 MHz) Mer än 1,5 miljon sålda enheter Mer än 1,5 miljon sålda enheter 2
1987 1990 Archimedes 32-bitars (ARM1-processor, 8 MHz) 3
1990 1992 R260 ARM3-processor, 30 MHz 16MB minne 4
1992 Apple Newton ARMv3 arkitektur ARM610 processor 35 000 transistorer 33 MHz 5
1996 RISC arbetsstation StrongARM-processor, 233 MHz 6
1996 1998 Referenskonstruktioner - ingen serieproduktion Fast NC Desklite Acorn Stork Notebook Phoebe http://www.computinghistory.org.uk/ 7
ARM - Licensierad IP En 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-2014 8
ARM i dagens konsumentprodukter 9
ARM i Apple iphone (2010) 10
Programmering av inbyggda system 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 villkorligt exekverbara, 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
Instruktionsgrupper (översikt) Minnesoperationer Load/Store-instruktioner för kommunkation med minne Uttrycksevaluering - aritmetik- och logikinstruktioner 32-bitars addition,subtraktion,multiplikation och division 32 bitars bitvis AND, OR och EOR Storlekskonvertering - ("typkonverteringar") Alla uttrycksevaluering sker med 32-bitars aritmetik, byte- och halfword data måste därför kunna konverteras till 32 bitar Programflödeskontroll Ovillkorligt 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
13
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 Thumbinstruktionsuppsättningen 14
ARM Registeruppsättning 15
Adresseringsmetoder Programmering av inbyggda system Namn Syntax Exempel RTN Register direct Rx MOV R0,R1 R0 R1 Direct Symbol LDR R0,symbol R0 M(symbol) Immediate #const MOV R0,#0x15 R0 0x15 Register 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