Transcript
Page 1: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 2: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

Kursens hemsida

kan nås via Ping-Pong ...2

Page 3: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 4: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 5: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

Resurser – elektroniska dokument

5

Page 6: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

Resurser – programvara

6

Page 7: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 8: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

Laborationssystem

8

Page 9: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 10: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 11: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 12: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

1987 – 1990 – Archimedes32-bitars (ARM1-processor, 8 MHz)

12

Page 13: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

1990 – 1992 – R260ARM3-processor, 30 MHz16MB minne

13

Page 14: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

1992 Apple Newton ARMv3 arkitekturARM610 processor

35 000 transistorer33 MHz

14

Page 15: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

1996 – RISC arbetsstation StrongARM-processor, 233 MHz

15

Page 16: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

1996 – 1998 ”Referenskonstruktioner”

- ingen serieproduktion Fast NCDeskliteAcorn Stork NotebookPhoebe

http://www.computinghistory.org.uk/

16

Page 17: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 18: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

ARM – i dagens konsumentprodukter

18

Page 19: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion

ARM – i Apple iPhone (2010)

19

Page 20: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 20

ARM/Thumb – Instruktionsuppsättningar

Page 21: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 21

Registeruppsättning och adresseringsmetoder

Page 22: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 22

Assemblerprogrammering

Page 23: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 23

Specifikation Registerallokering ImplementeringAssembler-programmets struktur; exempel

Page 24: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 25: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 25

Översättning av assemblerprogram

Page 26: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 26

Programutveckling i C och assembler

Page 27: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 27

Översättning av C och/eller assemblerprogram

Page 28: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

Maskinorienterad programmering

Kursintroduktion 28

KompilatorkonventionerRegler för hur data kommuniceras mellan funktioner, registeranvändning

Page 29: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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

Page 30: Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP2 - 2017/2018. Kursintroduktion. Syften, målsättningar,

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") ;