Maskinorienterad Programmering LP2 - 2017/2018 · Maskinorienterad programmering Kursintroduktion...

Preview:

Citation preview

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