maskinorienterad programmering lp2 - 2017/2018 · maskinorienterad programmering kursintroduktion...
TRANSCRIPT
Maskinorienterad programmering
Kursintroduktion 1
Maskinorienterad Programmering LP2 - 2017/2018
Kursintroduktion
Syften, målsättningar, kurslitteratur och genomförande
Översikt av laborationer
Introduktion till ARM-processorn och till laborationssystemet
Maskinorienterad programmering
Kursintroduktion
Kursens hemsida
kan nås via Ping-Pong ...2
Maskinorienterad programmering
Kursintroduktion 3
Grundläggande datorteknik
Datorsystem-teknik
Dator-arkitektur-
kurser Operativ-system
Parallell-programmering
Realtids-system
Data-stukturer
Data-kommunikation
Software Engineering
Fundamentals
Ingenjörskompetens och forskningsförberedelse
Maskinorienterad programmering
Objektorienterad programmering (Java)
Kursens placering i utbildningsutbudet
Maskinorienterad programmering
Kursintroduktion
Kurslitteratur
4
Arbetsbok – teori och övningar(Cremona)
Presentationsmaterial – från föreläsningar och övningar
Någon lämplig bok om ’C’ –exempelvis:• "Vägen till C", Bilting/Skansholm• "C från början", Skansholm, • "The C-programming language",
Kernighan/Ritchie
Bra bok om ARM-processorn vi använder – dock EJ obligatorisk...
Laborations PM –delas ut, även
OnLine
”Quick guide” – en typ av ”formelsamling” –delas ut, får användas vid tentamen.ABSOLUT INGA ANTECKNINGAR I HÄFTET
Maskinorienterad programmering
Kursintroduktion
Resurser – elektroniska dokument
5
Maskinorienterad programmering
Kursintroduktion
Resurser – programvara
6
Maskinorienterad programmering
Kursintroduktion
Genomförande
7
Vecka 1 2 3 4 5 6 7 8
Laborationer
Föreläsningar och demonstrationsövningar
Kodnings-/simuleringsövningar
Laborationsöversikt(1) Terminalövning: test och felavhjälpning i assemblerprogram(2) Introduktion till maskinnära C, synkronisering och tidmätning(3) Grafisk display och keypad(4) Undantagshantering(5) Applikationsprogrammering
Maskinorienterad programmering
Kursintroduktion
Laborationssystem
8
Maskinorienterad programmering
Kursintroduktion
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 3ANMÄL ER SENAST ONSDAG LV2 (via kursens hemsida i PingPong)
Inför laborationerna
9
Maskinorienterad programmering
Kursintroduktion 10
Ur innehållet:En kort historikARM/Thumb, dagens arkitekturUtvecklingssystemet - arbetsredskap...
ETERM8, GCC, GDB och CodLiteEtt enkelt assemblerprogramEtt enkelt C-program
Introduktion till ARM-processorer
Maskinorienterad programmering
Kursintroduktion
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
11
Maskinorienterad programmering
Kursintroduktion
1987 – 1990 – Archimedes32-bitars (ARM1-processor, 8 MHz)
12
Maskinorienterad programmering
Kursintroduktion
1990 – 1992 – R260ARM3-processor, 30 MHz16MB minne
13
Maskinorienterad programmering
Kursintroduktion
1992 Apple Newton ARMv3 arkitekturARM610 processor
35 000 transistorer33 MHz
14
Maskinorienterad programmering
Kursintroduktion
1996 – RISC arbetsstation StrongARM-processor, 233 MHz
15
Maskinorienterad programmering
Kursintroduktion
1996 – 1998 ”Referenskonstruktioner”
- ingen serieproduktion Fast NCDeskliteAcorn Stork NotebookPhoebe
http://www.computinghistory.org.uk/
16
Maskinorienterad programmering
Kursintroduktion
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-201417
Maskinorienterad programmering
Kursintroduktion
ARM – i dagens konsumentprodukter
18
Maskinorienterad programmering
Kursintroduktion
ARM – i Apple iPhone (2010)
19
Maskinorienterad programmering
Kursintroduktion 20
ARM/Thumb – Instruktionsuppsättningar
Maskinorienterad programmering
Kursintroduktion 21
Registeruppsättning och adresseringsmetoder
Maskinorienterad programmering
Kursintroduktion 22
Assemblerprogrammering
Maskinorienterad programmering
Kursintroduktion 23
Specifikation Registerallokering ImplementeringAssembler-programmets struktur; exempel
Maskinorienterad programmering
Kursintroduktion 24
Assemblerspråkets elementALLA 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
Maskinorienterad programmering
Kursintroduktion 25
Översättning av assemblerprogram
Maskinorienterad programmering
Kursintroduktion 26
Programutveckling i C och assembler
Maskinorienterad programmering
Kursintroduktion 27
Översättning av C och/eller assemblerprogram
Maskinorienterad programmering
Kursintroduktion 28
KompilatorkonventionerRegler för hur data kommuniceras mellan funktioner, registeranvändning
Maskinorienterad programmering
Kursintroduktion
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ättmedverka 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.
Kursens syften och målsättningar
29
Maskinorienterad programmering
Kursintroduktion
Av speciell vikt: ”maskinorienterad programmering”
30
• 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)
void main(void){
unsigned char c;app_init();while(1){
c = (unsigned char) *(( unsigned char *) 0x40020C11 );c = (c >> 3) & 7;* ( (unsigned char *) 0x40020C14) = c;
}}
asm volatile(" LDR R0,=0x00005555\n" " LDR R1,=0x40020C00\n"" STR R0,[R1]\n") ;