Maskinorienterad Programmering IT2, LP2-2016/2017 Syften, målsättningar, kurslitteratur och genomförande Översikt av laborationer Introduktion till ARM-processorn och till laborationssystemet 1
Kursens hemsida kan nås via Ping-Pong... 2
Kursens placering i utbildningsutbudet Ingenjörskompetens och forskningsförberedelse Maskinorienterad programmering Formella metoder Datorarkitekturkurser Operativsystem Realtidssystem Elektronikkonstruktion Datorsystemteknik Datastukturer Datakommunikation Parallellprogrammering Software Engineering Fundamentals Digital konstruktion (VHDL) Maskinorienterad programmering Objektorienterad programmering (Java) Grundläggande datorteknik 3
Kurslitteratur 4
Resurser elektroniska dokument Maskinorienterad programmering 5
Resurser programvara 6
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 7
Laborationssystem 8
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) 9
Introduktion till ARM-processorer Maskinorienterad programmering Ur innehållet: En kort historik ARM/Thumb, dagens arkitektur Utvecklingssystemet - arbetsredskap... ETERM8, GCC, GDB och CodLite Ett enkelt assemblerprogram Ett enkelt C-program 10
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 11
1987 1990 Archimedes 32-bitars (ARM1-processor, 8 MHz) 12
1990 1992 R260 ARM3-processor, 30 MHz 16MB minne 13
1992 Apple Newton ARMv3 arkitektur ARM610 processor 35 000 transistorer 33 MHz 14
1996 RISC arbetsstation StrongARM-processor, 233 MHz 15
1996 1998 Referenskonstruktioner - ingen serieproduktion Fast NC Desklite Acorn Stork Notebook Phoebe http://www.computinghistory.org.uk/ 16
ARM - Licensierad IP En lång rad företag använder i dag ARM-arkitektur på licens i sina produkter: Maskinorienterad programmering 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 17
ARM i dagens konsumentprodukter Maskinorienterad programmering 18
ARM i Apple iphone (2010) 19
ARM/Thumb Instruktionsuppsättningar 20
Registeruppsättning och adresseringsmetoder 21
Assemblerprogrammering 22
Assemblerprogrammets struktur; exempel Specifikation Registerallokering Implementering 23
Assemblerspråkets element ALLA textsträngar är context -beroende Mnemonic, ett ord som om det förekommer i instruktionsfältet tolkas som en assemblerinstruktion ur processorns instruktionsuppsättning. Mot varje sådan mnemonic svarar som regel EN maskininstruktion. Assemblerdirektiv, ett direktiv till assemblatorn. Symboler, textsträng. Ska bara förekomma i symbol- eller operand- fälten, I symbolfältet ska dessa alltid avslutas med : (kolon) Direktiv och mnemonics är inte reserverade ord i vanlig bemärkelse utan kan till exempel också användas som symbolnamn 24
Översättning av assemblerprogram Maskinorienterad programmering 25
Programutveckling i C och assembler Maskinorienterad programmering 26
Översättning av C och/eller assemblerprogram 27
Kompilatorkonventioner Maskinorienterad programmering Regler för hur data kommuniceras mellan funktioner, registeranvändning 28
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. 29
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; } } 30