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

Preview:

Citation preview

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

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

Maskinorienterad programmering

Kursintroduktion

Kursens hemsida

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

Maskinorienterad programmering

Kursintroduktion

Kurslitteratur

4

Kokboken/Cremona

Maskinorienterad programmering

Kursintroduktion

Arbetsboken

5

Kokboken/Cremona

Maskinorienterad programmering

Kursintroduktion

Resurser – elektroniska dokument

6

Maskinorienterad programmering

Kursintroduktion

Resurser – programvara

7

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

Maskinorienterad programmering

Kursintroduktion

Laborationssystem

9

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

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

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

Maskinorienterad programmering

Kursintroduktion

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

13

Maskinorienterad programmering

Kursintroduktion

1990 – 1992 – R260ARM3-processor, 30 MHz16MB minne

14

Maskinorienterad programmering

Kursintroduktion

1992 Apple Newton ARMv3 arkitekturARM610 processor

35 000 transistorer33 MHz

15

Maskinorienterad programmering

Kursintroduktion

1996 – RISC arbetsstation StrongARM-processor, 233 MHz

16

Maskinorienterad programmering

Kursintroduktion

1996 – 1998 ”Referenskonstruktioner”

- ingen serieproduktion Fast NCDeskliteAcorn Stork NotebookPhoebe

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

17

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

Maskinorienterad programmering

Kursintroduktion

ARM – i dagens konsumentprodukter

19

Maskinorienterad programmering

Kursintroduktion 21

ARM/Thumb – Instruktionsuppsättningar

Maskinorienterad programmering

Kursintroduktion 22

Registeruppsättning och adresseringsmetoder

Maskinorienterad programmering

Kursintroduktion 23

Assemblerprogrammering

Maskinorienterad programmering

Kursintroduktion 24

Specifikation Registerallokering ImplementeringAssembler-programmets struktur; exempel

Maskinorienterad programmering

Kursintroduktion 26

Översättning av assemblerprogram

Maskinorienterad programmering

Kursintroduktion 27

Programutveckling i C och assembler

Maskinorienterad programmering

Kursintroduktion 28

Översättning av C och/eller assemblerprogram

Maskinorienterad programmering

Kursintroduktion 29

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

30

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