LEU500-Maskinorienterad programmering LP3-2016/2017

Relevanta dokument
Maskinorienterad programmering

Programmering av inbyggda system 2014/2015

2010/2011. Syftet med kursen är att vara en introduktion till konstruktion och programmering av små inbyggda system.

Maskinorienterad Programmering LP3-2017/2018

Maskinorienterad Programmering IT2, LP2-2016/2017

Maskinorienterad Programmering LP2-2017/2018

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering för ARM del 2

Assemblerprogrammering - fördjupning

Tentamen med lösningsförslag

Assemblerprogrammering för ARM del 1

Assemblerprogrammering för ARM del 1

Assemblerprogrammering för ARM del 3

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Tentamen med lösningsförslag

LEU240 Mikrodatorsystem

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Assemblerprogrammering för ARM del 1

CE_O3. Nios II. Inför lab nios2time

Kursplanering för Mikrodatorteknik 4p/5p

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Programmering, grundkurs

Repetition C-programmering

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Tentamen med lösningsförslag

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Maskinorienterad programmering

Digital- och datorteknik

GPIO - General Purpose Input Output

Introduktion C-programmering

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Tentamen med lösningsförslag

Objektorienterad programmering och Java

Schemaunderlag för Programmering, grundkurs (TDDB18)

Objektorienterad Programmering (TDDC77)

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Grundläggande datorteknik

Assemblerprogrammering, ARM-Cortex M4 del 1

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

TDDB68 - Processprogrammering och operativsystem

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Föreläsning 1: Intro till kursen och programmering

Digital- och datorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Digital- och datorteknik

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

TDIU01 - Programmering i C++, grundkurs

F4: Assemblerprogrammering

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Planering Programmering grundkurs HI1024 HT 2014

Övning2 Datorteknik, HH vt12 - Programmering

Assemblerprogrammering del 2

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen med lösningsförslag

Demonstration och konsultation Arbetsbokens avsnitt 7 Händelsestyrt processbyte Förberedande inför laboration 4

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Assemblerprogrammering del 1

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Imperativ programmering i ADA

Programbibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek

Tentamen med lösningsförslag

Maskinorienterad programmering

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Kontrollskrivning Mikrodatorteknik CDT S2-704

Tentamen med lösningsförslag

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Objektorienterad Programmering (TDDC77)

Lösningar till tentamen i EIT070 Datorteknik

Tentamen. Datorteknik Y, TSEA28

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3

Föreläsning 4 IS1300 Inbyggda system

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Föreläsning 1: Intro till kursen och programmering

Tentamen med lösningsförslag

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Föreläsning 2. Operativsystem och programmering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Assemblerprogrammering del 3

Konstruktion med mikrodatorer

Det finns många flaggor till g++,

Tentamen med lösningsförslag

Tentamen med lösningsförslag

OOP Objekt-orienterad programmering

Programutvecklingsmetodik, teori

DD1314 Programmeringsteknik

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Transkript:

LEU500- LP3-2016/2017 Sammanfattning Ur innehållet: Vi rekapitulerar kursens syften Vi repeterar kursens lärandemål Vi granskar utförandet av examination Vi följer upp föregående års kursvärdering Sammanfattning 1

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. Sammanfattning 2

1. Programutveckling i C och assemblerspråk Kunna utföra programmering i C och assemblerspråk samt kunna: beskriva och tillämpa modularisering med hjälp av funktioner och subrutiner. beskriva och tillämpa parameteröverföring till och från funktioner. beskriva och tillämpa olika metoder för parameteröverföring till och från subrutiner. beskriva och använda olika kontrollstrukturer. beskriva och använda sammansatta datatyper (fält och poster) och enkla datatyper (naturliga tal, heltal och flyttal). Sammanfattning 3

beskriva och tillämpa modularisering med hjälp av funktioner och subrutiner. Funktioners parametrar och returvärden. Lagringsklasser och synlighet. Sammanfattning 4

beskriva och tillämpa olika metoder för parameteröverföring till och från subrutiner. Sammanfattning 5

beskriva och använda olika kontrollstrukturer. Sammanfattning 6

beskriva och använda sammansatta datatyper (fält och poster) och enkla datatyper (naturliga tal, heltal och flyttal). Sammanfattning 7

2. Programutvecklingteknik Att kunna: beskriva översättningsprocessen, dvs. assemblatorns arbetssätt, preprocessorns användning, separatkompilering och länkning. konstruera, redigera och översätta (kompilera och assemblera) program testa, felsöka och rätta programkod med hjälp av avsedda verktyg. Sammanfattning 8

beskriva översättningsprocessen, dvs. assemblatorns arbetssätt, preprocessorns användning, separatkompilering och länkning. Sammanfattning 9

konstruera, redigera och översätta (kompilera och assemblera) program testa, felsöka och rätta programkod med hjälp av avsedda verktyg. Dessa lärandemål har vi kontrollerat under laborationer. Sammanfattning 10

3. Systemprogrammerarens bild Att kunna: beskriva och tillämpa olika principer för överföring mellan centralenhet och kringenheter så som: ovillkorlig eller villkorlig överföring, statustest och rundfrågning. konstruera program för systemstart och med stöd för avbrottshantering från olika typer av kringenheter. beskriva och exemplifiera olika undantagstyper: interna undantag, avbrott och återstart samt prioritetshantering vid undantag. kunna beskriva metoder och mekanismer som är centrala i systemprogramvara så som pseudoparallell exekvering och hantering av processer. beskriva och använda kretsar för tidmätning. beskriva och använda kretsar för parallell respektive seriell överföring. Sammanfattning 11

beskriva och tillämpa olika principer för överföring mellan centralenhet och kringenheter så som: ovillkorlig eller villkorlig överföring, statustest och rundfrågning. Sammanfattning 12

konstruera program för systemstart och med stöd för avbrottshantering från olika typer av kringenheter. Sammanfattning 13

beskriva och exemplifiera olika undantagstyper: interna undantag, avbrott och återstart. Sammanfattning 14

beskriva och tillämpa olika metoder för prioritetshantering vid multipla avbrottskällor (mjukvarubaserad och hårdvarubaserad prioritering, avbrottsmaskering, icke-maskerbara avbrott). Sammanfattning 15

beskriva och använda kretsar för tidmätning. Sammanfattning 16

beskriva och använda kretsar för parallell respektive seriell överföring. Sammanfattning 17

Av speciell vikt: maskinorienterad programmering... 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) asm volatile( " LDR R0,=0x00005555\n" " LDR R1,=0x40020C00\n" " STR R0,[R1]\n" ) ; void main(void) { unsigned char c; app_init(); while(1){ c = (unsigned char) *(( unsigned char *) 0x40020C11 ); c = (c >> 3) & 7; * ( (unsigned char *) 0x40020C14) = c; } } Sammanfattning 18

Kodningskonventioner Program som kräver källtexter både i C och assemblerspråk... Sammanfattning 19

Pekare och deras användning, programmeringsuppgifter eller kortare frågor. /* memcpy.c C-library function "memcpy" */ #include <string.h> void *memcpy(void *dst, void *src, size_t size) { char *d, char *s, size_t n; if (size <= 0) return(dst); s = (char *) src; d = (char *) dst; if (s <= d && s + (size - 1) >= d) { /* Overlap, must copy right-to-left */ s += size - 1; d += size - 1; for (n = size; n > 0; n--) *d-- = *s--; }else for (n = size; n > 0; n--) *d++ = *s++; return(dst); } Sammanfattning 20

Assemblerprogrammering... # define DATA *( char *) 0x700 # define STATUS *( char *) 0x701 void printerprint( char *s ) { while( *s ) { while( STATUS & 1 ) {} DATA = *s; s++; } } Att översätta enklare C-kod till assemblerspråk, med kompilatorkonventioner. Eller från en annan specifikation, text eller flödesdiagram. printerprint: **** # define DATA *( volatile char *) 0x700 **** # define STATUS *( volatile char *) 0x701 **** void printerprint( char *s ) **** { push {r4, r5, lr} **** while( *s ) ldrb r4, [r0] cmp r4, #0 beq.l2 **** { **** while( STATUS & 1 ) **** {} **** DATA = *s; ldr r5, #0x700 movs r2, #1 ldr r1,=0x701.l4: ldrb r3, [r1] tst r2, r3 bne.l4 strb r4, [r5] **** s++; adds r0, r0, #1 ldrb r4, [r0] cmp r4, #0 bne.l4.l2: **** } **** } pop {r4, r5, pc} Sammanfattning 21

Utformning av skriftlig tentamen: Under VT 2106 har nytt laborationssystem börjat användas (MD407) i stället för det äldre systemet (MC12). Detta påverkar tentamina. Tre kategorier uppgifter kommer att förekomma: Kategori A: Enbart MC12 Kategori B: Enbart MD407 Kategori C: Oavsett vilket laborationssystem du använt. Dvs. Ni som gjort laborationer kring MD407 löser uppgifter i kategorier B och C. Övriga kan välja att lösa uppgifter i kategorier A eller B, och C. SKRIV INGET i QuickGuiden, rättelse följer med tentamenstesen. Sammanfattning 22

Utformning av skriftlig tentamen för nytt laborationssystem (max 50 poäng): Uppgifter som är direkt relaterade till laborationerna 2-4 utgör 20-25 poäng Uppgiftstyperna beskrivna som laborationsuppgifter Assemblerprogrammering och kodningskonventioner (5-10 poäng): Typiskt att översätta ett C-program till assemblerkod med rätt kompilatorkonventioner Pekare (5-10 poäng) programmeringsuppgift eller en rad kortare uppgifter av frågekaraktär. i C (10-15 poäng) En mer omfattande programmeringsuppgift och/eller en rad kortare uppgifter av frågekaraktär. Uppgiftstyperna beskrivna under lektioner men man kan lätt bygga sin egen exempelsamling, demonstreras strax... Exempel på programmeringsuppgifter återfinns i åtskilliga äldre tentamina. Uppgifter med frågekaraktär har behandlats på föreläsningar och/eller övningar och återfinns i presentationsmaterialet. Sammanfattning 23

Återkoppling, kursenkät 2015-16 (LEU500): Sammanfattning (summary) Studenterna var missnöjda med de förkunskaper som de hadde fått i förgående kurs. Skilnaderna i studentgruppen gjorde att vissa tyckte att det var för mycket repidition i början medans andra tyckte att det gick för snabbt. Studenterna saknade ett väl genomarbetat kursmatrial med en lärobok. (Nu fans det förvisso ett kompendium som pdf) Arbetsbelastningen upplevdes som hög och föreläsningarna låg i osynk i förhållande till laborationerna som upplevdes som för tunga. Kursen kommer dock att omarbetas till nästa år. Lärandemål (learning outcomes) Lärandemålen ansågs rimliga. Genomförande (realization) Föreläsningarna upplevdes ha varierande kvalite och tre föreläsare upplevdes som rörigt. Dock så var det två föreläsare och en övningsledare. Det upplevdes som problematiskt med hemuppgifter som behövde omarabetas vid laborationstilfäälet. Det blev sedan kö för laborationsgodkännande.kurshemsidan upplevdes rom rörig då den låg på flera platformar, flera studenter önskade sig en mer samlad information i pingpong. Dock var informationen relativr väl samanlänkad så det var förmodligen mer en upplevelse av att hoppa mellan olika system. Det framfördes också önskemål om att hålla timeedit och kurshemsida i synk. Önskade förändringar (desired changes) Kursen kommer att omarbetas helt eftersom vi ingör ny lab utrustning till nästa kursomgång.så till nästa omgång blir det yy labbserie, ny kursliteratur med ny arbetsbok. Annan programvarumiljö men ARM miljön fins till alla plattformar.vekoplaneringen ska bli tydligare, där allt material gås igenom veckan innan motsvarande laboration. Repetition i början ska bli tydligt utpekat, så de som inte behöver repidition kan göra något annat. Övrigt (other matters) Vi kommer att arbeta med interfacet mellan denna kurs och den föregående kursen i C-programmering. Observera att texten är kopierad från dokumentdatabasen, vi bortser från språk- och stavfel. Gula markeringar vill jag kommentera. Sammanfattning 24