Course syllabus
Kurs-PM
DAT390 Maskinorienterad programmering lp3 VT26 (7,5 hp)
Kursen ges av institutionen för Data- och informationsteknik
Kontaktuppgifter
Examinator: Erik Sintorn (erik.sintorn@chalmers.se)
Föreläsare: Sergei Dytckov (sergei.dytckov@chalmers.se), Francisco Blas Izquierdo Riera (francisco.izquierdo@chalmers.se)
Laboration och simulering: Victor Wallsten (vicwall@chalmers.se)
Hjälper också till med kursen::
Kursbok: Roger Johansson (roger@chalmers.se)
TA management / Exercises / Labs: Roman Melnik (melnik@chalmers.se), Elias Hallqvist (elias.hallqvist@chalmers.se)
Studentrepresentanter
TIDAL - Sara Habanakeh Almidani
TIELL - Thomas Hoang
TIELL - Robin Sterne
TIMEL - Darin Mashir Mohammad Said
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.
Schema
Kurslitteratur
Observera: gamla kurböcker kan inte användas. Vi har bytt hårdvara i år fråm ARM till RISC-V processorn.
Huvud lärobok/Arbetsbok: "Maskinorienterad Programmering med MD307", Roger Johansson. Finns på STORE.
Innehåller detaljerade beskrivningar och praktiska övningar för genomförande av laborationsprojekt.
"Lecture-notes" på Canvas.
Lärobok i C-programmering (ej obligatorisk): "C från början", Jan Skansholm, Studentlitteratur, 2018.
Om du inte har last en C-kurs tidigare.
Alternativ bok i Assembly-programmering: https://riscv-programming.org/book/riscv-book.html (Kapitel 5-7)
Se också Kapitel 1-3 för repetition av grunderna och Kapitel 4 för viss fördjupning i Assembly.
Kursens upplägg
Varje vecka har vi två lektioner och en extra Q/A‑lektion där du kan ställa vilka frågor du vill (skicka gärna in frågor i förväg). På Q/A‑lektionerna kommer vi också att lösa uppgifter eller gå igenom gamla tentor.
Varje lektion har ett kort teoriquiz på Canvas och uppgifter som ni kan nå via VS Code‑extensionen.
Ni kan få hjälp med uppgifter (eller prata med läraren om kursen) på simuleringssessionerna. Varje program (TIELL, TIMEL, TIDAL) har en separat session varje vecka. Dessutom finns två gemensamma sessioner dit ni kan komma, men till dessa måste ni boka plats.
Uppgifterna och laborationerna görs i grupper om två. Se People → Groups på Canvas. Om du vill arbeta i en grupp om tre, eller göra allt ensam, prata gärna med läraren. Det är möjligt, men inte särskilt praktiskt.
Det finns tre obligatoriska laborationer som vi gör i labsalarna. De har också obligatoriska förberedelseuppgifter som ni måste göra i förväg, antingen hemma eller under simuleringssessionerna.
Den fjärde labuppgiften är frivillig, men ni kan få upp till fem bonuspoäng på tentamen (max 50 poäng). Bonuspoäng kan inte användas för att klara tentamen, utan bara för att förbättra betyget. Ni kan göra ett litet projekt: ett spel, en chatt via USART, eller ett eget projekt. De som gjorde det sa att det var det roligaste på kursen.
Om ni missar en labuppgift, prata med läraren. Det kan finnas möjlighet att göra labben vid ett annat tillfälle.
Förändringar sedan förra kurstillfället
I förra åren arbetade vi med uppgifter och laborationer på ett MD407‑kort med en ARM‑processor. Från och med detta år har vi bytt hårdvara till ett MD307‑kort med en RISC‑V‑processor. Alla lärandemål är fortfarande desamma, och hårdvaruarkitekturen i de två processorchipen är till stor del likartad. Det som skiljer är att vi i första delen av kursen nu studerar RISC‑V assembly i stället för ARM.
Observera: gamla kurböcker kan inte användas.
Lärandemål
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.
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.
Examination
För att bli godkänd på kursen krävs godkänd skriftlig tentamen samt godkända laborationer. Baserat på tentamensresultatet ges betygen U,3,4 eller 5.
Du kan få upp till 5 bonuspoäng om du slutför den valfria labbuppgiften fyra. Dessa bonuspoäng läggs till resultatet på tentamen och kan användas för högre betyg men inte för att bli godkänd på kursen.
Course summary:
| Date | Details | Due |
|---|---|---|