29
Maskinorienterad programmering Kursintroduktion 1 Maskinorienterad Programmering LP3 - 2017/2018 Kursintroduktion Lars Bengtsson, D&IT Syften, målsättningar, kurslitteratur och genomförande Översikt av laborationer Introduktion till ARM-processorn och till laborationssystemet

Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

  • Upload
    others

  • View
    19

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 1

Maskinorienterad Programmering LP3 - 2017/2018

Kursintroduktion

Lars Bengtsson, D&IT

Syften, målsättningar, kurslitteratur och genomförandeÖversikt av laborationerIntroduktion till ARM-processorn och till laborationssystemet

Page 2: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 2

Grundläggande datorteknik

Elektronik-konstruktion

Datorsystem-teknik

Dator-arkitektur-

kurser Operativ-system

Parallell-programmering

Realtids-system

Data-stukturer

Data-kommunikation

Digital konstruktion(VHDL)

Software Engineering

Fundamentals

Ingenjörskompetens och forskningsförberedelse

Maskinorienterad programmering

Objektorienterad programmering (Java)

Formella metoder

Kursens placering i utbildningsutbudet

Page 3: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Kursens hemsida

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

Page 4: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Kurslitteratur

4

Kokboken/Cremona

Page 5: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Arbetsboken

5

Kokboken/Cremona

Page 6: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Resurser – elektroniska dokument

6

Page 7: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Resurser – programvara

7

Page 8: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Genomförande

8

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(2) Maskinnära C, synkronisering och tidmätning(3) Periferikretsar och andra objekt(4) Undantagshantering(5) Spelprogrammering

Page 9: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Laborationssystem

9

Page 10: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

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

10

Page 11: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 11

Ur innehållet:En kort historikARM/Thumb, dagens arkitekturUtvecklingssystemet - arbetsredskap...

ETERM8, GCC, GDB och CodeLiteEtt enkelt assemblerprogramEtt enkelt C-program

Introduktion till ARM-processorer

Page 12: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

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

12

Page 13: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

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

13

Page 14: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

1990 – 1992 – R260ARM3-processor, 30 MHz16MB minne

14

Page 15: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

1992 Apple Newton ARMv3 arkitekturARM610 processor

35 000 transistorer33 MHz

15

Page 16: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

1996 – RISC arbetsstation StrongARM-processor, 233 MHz

16

Page 17: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

1996 – 1998 ”Referenskonstruktioner”

- ingen serieproduktion Fast NCDeskliteAcorn Stork NotebookPhoebe

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

17

Page 18: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

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-201418

Page 19: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

ARM – i dagens konsumentprodukter

19

Page 20: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 21

ARM/Thumb – Instruktionsuppsättningar

Page 21: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 22

Registeruppsättning och adresseringsmetoder

Page 22: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 23

Assemblerprogrammering

Page 23: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 24

Specifikation Registerallokering ImplementeringAssembler-programmets struktur; exempel

Page 24: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 26

Översättning av assemblerprogram

Page 25: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 27

Programutveckling i C och assembler

Page 26: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 28

Översättning av C och/eller assemblerprogram

Page 27: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion 29

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

Page 28: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

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

30

Page 29: Maskinorienterad Programmering LP3 - 2017/2018 · Maskinorienterad programmering Kursintroduktion 1. Maskinorienterad Programmering LP3 - 2017/2018. Kursintroduktion. Lars Bengtsson,

Maskinorienterad programmering

Kursintroduktion

Av speciell vikt: ”maskinorienterad programmering”

31

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