Maskinorienterad Programmering LP3-2017/2018 Lars Bengtsson, D&IT Syften, målsättningar, kurslitteratur och genomförande Översikt av laborationer Introduktion till ARM-processorn och till laborationssystemet 1
Kursens placering i utbildningsutbudet Ingenjörskompetens och forskningsförberedelse Formella metoder Datorarkitekturkurser Operativsystem Realtidssystem Elektronikkonstruktion Datorsystemteknik Datastukturer Datakommunikation Parallellprogrammering Software Engineering Fundamentals Digital konstruktion (VHDL) Objektorienterad programmering (Java) Grundläggande datorteknik 2
Kursens hemsida kan nås via Ping-Pong... 3
Kurslitteratur Kokboken/Cremona 4
Arbetsboken Kokboken/Cremona 5
Resurser elektroniska dokument 6
Resurser programvara 7
Genomförande Laborationer Kodnings-/simuleringsövningar Föreläsningar och demonstrationsövningar Vecka 1 2 3 4 5 6 7 8 Laborationsöversikt (1) Terminalövning: test och felavhjälpning (2) Maskinnära C, synkronisering och tidmätning (3) Periferikretsar och andra objekt (4) Undantagshantering (5) Spelprogrammering 8
Laborationssystem 9
Inför laborationerna Laborationerna måste vara väl förberedda innan laborationstillfället Utveckling och test görs med simulatorer Använd kodnings-/simuleringsövningar och hemarbete för förberedelserna CodeLite, GCC, ETERM8 och SimServer finns på kursens resurssida, hämta och installera omgående OBS: Laborationerna börjar i läsvecka 3 ANMÄL ER SENAST ONSDAG LV2 (via kursens hemsida i PingPong) 10
Introduktion till ARM-processorer Ur innehållet: En kort historik ARM/Thumb, dagens arkitektur Utvecklingssystemet - arbetsredskap... ETERM8, GCC, GDB och CodeLite Ett enkelt assemblerprogram Ett enkelt C-program 11
ARM Tidiga datorer 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 12
1987 1990 Archimedes 32-bitars (ARM1-processor, 8 MHz) 13
1990 1992 R260 ARM3-processor, 30 MHz 16MB minne 14
1992 Apple Newton ARMv3 arkitektur ARM610 processor 35 000 transistorer 33 MHz 15
1996 RISC arbetsstation StrongARM-processor, 233 MHz 16
1996 1998 Referenskonstruktioner - ingen serieproduktion Fast NC Desklite Acorn Stork Notebook Phoebe http://www.computinghistory.org.uk/ 17
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 18
ARM i dagens konsumentprodukter 19
ARM/Thumb Instruktionsuppsättningar 21
Registeruppsättning och adresseringsmetoder 22
Assemblerprogrammering 23
Assemblerprogrammets struktur; exempel Specifikation Registerallokering Implementering 24
Översättning av assemblerprogram 26
Programutveckling i C och assembler 27
Översättning av C och/eller assemblerprogram 28
Kompilatorkonventioner Regler för hur data kommuniceras mellan funktioner, registeranvändning 29
Kursens syften och målsättningar Kursens syften är att vara en introduktion till konstruktion av små inbyggda system och att ge en förståelse för hur imperativa styrstrukturer översätts till assembler att ge en förståelse för de svårigheter som uppstår vid programmering av händelsestyrda system med flera indatakällor. Centrala målsättningar är att kunna: skriva enkla C-program med användande av programspråkets datatyper och styrstrukturer beskriva motsvarigheten i assembler till typiska programstrukturer i C. utnyttja de i kursen använda verktygen för programutveckling på ett adekvat sätt medverka vid konstruktion och programmering av enkla inbyggda system med givna komponenter konstruera system innefattande olika typer av undantag (interna undantag, avbrott, återstart) beskriva och exemplifiera några olika typer av digitala kringkomponenter och deras användning. 30
Av speciell vikt: maskinorienterad programmering Läsa/skriva på fasta adresser (portar) Datatyper, storlek (8,16 eller 32 bitar...) Heltalstyper, med eller utan tecken, vad innebär typkonverteringarna? Bitoperationer &,, ^ (AND, OR, XOR) Skiftoperationer <<, >> (vänster, höger) asm volatile( " LDR R0,=0x00005555\n" " LDR R1,=0x40020C00\n" " STR R0,[R1]\n" ) ; void main(void) { unsigned char c; app_init(); while(1){ c = (unsigned char) *(( unsigned char *) 0x40020C11 ); c = (c >> 3) & 7; * ( (unsigned char *) 0x40020C14) = c; } } 31