Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Maskinorienterad programmering
Kursintroduktion 1
Maskinorienterad Programmering IT2, LP2 - 2016/2017
KursintroduktionSyften, målsättningar, kurslitteratur och genomförande
Översikt av laborationerIntroduktion 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
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
Kurslitteratur
4
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
(2) Maskinnära C, synkronisering och tidmätning
(3) Periferikretsar och andra objekt
(4) Undantagshantering
(5) Spelprogrammering
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 ochhemarbete 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 3
ANMÄ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 CodLite
Ett enkelt assemblerprogramEtt enkelt C-program
Introduktion till ARM-processorer
Maskinorienterad programmering
Kursintroduktion
1979 – ”Acorn Computers”
Acorn System 1 (MOS 6502 )
1981-1994 – BBC micro
8-bitars (MOS6502-processor, 2 MHz)
Mer än 1,5 miljon sålda enheter
Mer än 1,5 miljon sålda enheter
ARM – Tidiga datorer
11
Maskinorienterad programmering
Kursintroduktion
1987 – 1990 – Archimedes
32-bitars (ARM1-processor, 8 MHz)
12
Maskinorienterad programmering
Kursintroduktion
1990 – 1992 – R260
ARM3-processor, 30 MHz
16MB minne
13
Maskinorienterad programmering
Kursintroduktion
1992 Apple Newton
ARMv3 arkitektur
ARM610 processor
35 000 transistorer
33 MHz
14
Maskinorienterad programmering
Kursintroduktion
1996 – RISC arbetsstation
StrongARM-processor, 233 MHz
15
Maskinorienterad programmering
Kursintroduktion
1996 – 1998 ”Referenskonstruktioner”
- ingen serieproduktion
Fast NC
Desklite
Acorn Stork Notebook
Phoebe
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-2014
17
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 element
ALLA 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
Kompilatorkonventioner
Regler 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ätt
medverka 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"
) ;