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