Course syllabus
Kurs-PM
DAT390, Maskinorienterad programmering VT23 (7,5hp)
Kursen ges av Institutionen för Data och informationsteknik.
Uppdaterad 21 Juni 2019
Kursens syfte
Kursens syfte ä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 samt för de svårigheter som uppstår vid programmering av händelsestyrda system med flera indatakällor. I pedagogiskt syfte används traditionella in- utmatningsenheter som tangentbord, sifferindikatorer och LC-displayer. Utrustningen används tillsammans med en mikrodator (MD407). Allt finns tillgängligt både i form av maskinvara och som enheter i en simulator. Utrustningen används både för C- och assemblerprogrammering.
Schema
Schema i TimeEdit.
Observera dock att vissa avvikelser kan förekomma, se föreläsningsschemat.
Kontaktuppgifter
Examinator: Pedro Trancoso, ppedro@chalmers.se
Föreläsare: Pedro Trancoso, ppedro@chalmers.se
Risat Pathan, risat@chalmers.se
Laborationsansvarig: Andreas Wieden, andreas.wieden@chalmers.se
Elias Hällqvist, haelias@chalmers.se
Kurslitteratur
Följande kurslitteratur, i tryckt form, används:
Lärobok: Om du redan har en bok om grundläggande C-programmering kan du förmodligen klara dig bra med den. Det finns också åtskilligt med god litteratur om grundläggande C på nätet. Om du planerar att skaffa en ny bok för kursen vill jag gärna framhålla "The C-programming language", Kernighan/Ritchie, ett klassiskt och tidlöst verk.
Lärobok/Arbetsbok: innehåller detaljerade beskrivningar och praktiska övningar för genomförande av laborationsprojekt.
- "Maskinorienterad Programmering med MD407, Utgåva 6.2, ", Johansson, ISBN: 978-91-89280-31-1. Finns på Store.
Lärobok (ej nödvändig, går en bra bit utanför kursen, men kan rekommenderas för den intresserade)
- "The Definitive Guide to ARM® Cortex® -M3 and Cortex-M4 Processors", Third Edition, Joseph Yiu, ARM Ltd, Cambridge, UK. ISBN-13:978-0-12-408082-9.
Utöver ovanstående används material som du kan ladda ner via kursens hemsida, dokument och programdistributioner. Dessutom ges länkar till resurser på Internet, typiskt avseende grundläggande C-programmering.
Program som används i kursen, finns såväl i STUDAT-datorer som i laborationssalar, men du måste också installera dem på egna datorer du använder för dina distansstudier. Alla sådana programvaror är kostnadsfria.
Kursens upplägg
Under kursen ges flera lektioner för hela klassen (stor klass). Dessa har karaktären av föreläsningar, där ny teori introduceras och förklaras såväl som demonstrationsövningar, där (huvudsakligen) tidigare presenterad teori belyses med praktiska exempel och fördjupningar. I flertalet lektioner blandas dessa former.
Laborationer
I kursen ingår ett laborationsprojekt, normalt i grupper om 2 studenter, som redovisas succesivt under 5 obligatoriska lektioner om maximalt 4 timmar vardera. För att genomföra/redovisa laborationerna krävs omfattande förberedelser vilka stöds av såväl lektioner i stor klass (föreläsningar och demonstrationsövningar) som lektioner i mindre grupp (kodnings- och simuleringsövningar).
Kodnings- och simuleringsövningar
Under övningar i mindre grupper, typiskt 30 studenter, ges dessa tillfällen avsedda att avsluta arbetet med laborationsförberedelserna. Dessa lektionstillfällen erbjuder vanligtvis inga förberedda lektioner men väl en lärarassistent som är beredd att svara på frågor och handleda kring de olika laborationsuppgifterna.
Förändringar sedan förra kurstillfället
Kursmaterialet har uppdaterats, men innehållet är det samma som tidigare. Arbetsbokens (utgåva 5) kapitel om undantagshantering har förtydligats, numrering av exempel och uppgifter sker nu kapitelvis så att det ska vara lättare att hitta. I exempelsamlingen har ytterligare övningsexempel har införts. Presentationsbilder översätts efter hand för att finnas på såväl engelska som svenska.
För dig som följt en tidigare instans av denna kurs
Under LP4-2015/2016 infördes ett helt nytt laborationssystem i kursen (MD407). Detta påverkade utformningen av tentamen och det är därför olämpligt att använda äldre tentamina för övningsverksamhet.
Den nya laborationsserien är en central del av kursen och det är därför lämpligt att göra dessa laborationer även om man har ett godkännande från laborationer i den äldre instansen av kursen (MC12).
Under en övergångsperiod gavs tentamina anpassade även för det äldre laborationssystemet men sedan ht 2018 ges tentamina enbart anpassade efter det nya laborationssystemet. Detta är ytterligare ett incitament för varför du bör genomföra den nya laborationsserien även om du sedan tidigare är godkänd på laborationsmomentet.
Om du tidigare har varit kursregistrerad på EDA480,EDA481, EDA485, EDA486 eller DAT015, DAT016 och klarat av laborationerna, kan du alltså tillgodoräkna dig detta moment i denna kurs. Det betyder att du inte formellt behöver godkännas under de nya laborationerna.
Examination
Kursens innehåll examineras medelst en skriftlig tentamen på hela kursen (4,5 hp) samt en uppsättning laborationsuppgifter (3 hp). Betyg (U, 3-5) ges baserat på tentamensresultat. För godkänt slutbetyg (3-5) i kursen fordras godkänd skriftlig tentamen och godkända laborationsuppgifter.
Tillåtna hjälpmedel:
Häftet:
- Quick Guide, Laborationsdator MD407 med tillbehör
Inga anteckningar utöver "namn" på första sidan får vara införda i detta häfte.
Betygsgränser:
För godkänt slutbetyg på kursen fordras att både tentamen och laborationer är godkända. Maximal poäng är 50 och tentamenspoäng ger slutbetyg enligt:
- DAT390: 20p ≤ betyg 3 < 30p ≤ betyg 4 < 40p ≤ betyg 5
Lärandemål (efter fullgjord kurs ska studenten kunna)
Kunskap och förståelse
- beskriva uppbyggnaden av en enchipsdator
- beskriva funktion och typisk användning av räknarkretsar, kretsar för parallell och seriell in- och utmatning
- beskriva och ge exempel på undantag och undantagshantering
- beskriva hur översättning av C-program till maskinprogram (kompilering, assemblering och länkning) utförs i den använda programutvecklingsmiljön
- beskriva och förklara datatyper och lagringsklasser i programspråket C samt redogöra för motsvarande konstruktioner i assemblerspråk.
- beskriva aspekter på hög nivå att tänka på när man designar hårdvara och mjukvara med medvetenhet om jämlikhet, mångfald och inkludering.
Färdigheter och förmåga
- utnyttja den i kursen använda programutvecklingsmiljön för implementering och test av programkod i C och assemblerspråk
- skriva enkla maskinorienterade C-program med användande av programspråkets datatyper och styrstrukturer
- skapa och använda datatyper och lagringsklasser i programspråket C
- speciellt använda "pekare" för maskinorienterad programmering i C
- skapa och använda programbibliotek i den använda programutvecklingsmiljön
- konstruera och använda sammansatta datatyper speciellt för maskinorienterad programmering
- översätta uttryck och styrstrukturer givna i programspråket C till instruktionssekvenser i assemblerspråk.
Värdering och förhållningssätt
- analysera funktioner, skrivna i programspråket C och översätta dessa till assemblerkod
- analysera enklare subrutiner, skrivna i assemblerspråk, och beskriva dessa i programspråket C
- konstruera programvara, i C och assemblerspråk, med olika former av in- och utmatning
- konstruera programvara, i C och assemblerspråk, för system innefattande olika typer av undantag (interna undantag, avbrott, återstart)
- utnyttja programutvecklingsmiljöns mekanismer för kodförbättring (optimering)
- utnyttja programutvecklingsmiljöns mekanismer för generering av effektiv och resurssnål maskinkod.
Course summary:
Date | Details | Due |
---|---|---|