Kurs
PM,
LEU500
Maskinorienterad programmering (DAI,EI,MEI)
Lösningsförslag tentamen
2016-08-19
LP3, 2015/16
Innehåll:
Personal och
kursnämndsrepresentanter
Ändringar
sedan föregående kurstillfälle
Schema med
veckoplanering
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.
Kursen
innehåller moment som låter eleven konstruera större och större programblock i
assembler och C. Resultatet blir ett "tidsdelningssystem" för två
parallella processer. Processerna styr en borrmaskin och en sifferindikator för
tid- och temperaturvisning.
Första
delen av kursen koncentreras kring programutveckling i assemblerspråk. Därefter
inhämtas grunderna för programmering i C. Slutligen kombineras
programutveckling i C och assembler.
I
pedagogiskt syfte används en enkel borrmaskin och traditionella in- utmatningsenheter
som tangentbord och sifferindikatorer. Utrustningen används tillsammans med en
mikrodator (68HCS12). 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.
Efter fullgjord kurs ska studenten
kunna
·
skriva
enkla assemblerprogram med användande av den valda arkitekturens
instruktionsuppsättning.
·
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.
·
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.
Övriga lärare: Ulf Assarsson
(uffe AT chalmers.se), Lennart Hansson (lennart.hansson AT chalmers.se), Daniel
Toom (toom AT chalmers.se),Roger Johansson(rogerATchalmers.se)
Labansvarig:
Lennart Hansson (mail se ovan)
Studieexpedition: DoIT, plan 4 i
E-huset, ingång från Maskingränd.
Kursnämndsrepresentanter:
HAMPUS HESSEL |
TIDAL |
|
LEO LANDBERG |
TIELL |
|
MORVARID MOHAMMADALI |
TIELL |
|
LINUS NILSSON |
TIDAL |
Program
(Windows) som används i kursen, finns såväl i STUDAT-datorer som i
laborationssalar, du rekommenderas också installera dem på egna datorer du
använder för dina studier.
Följande kurslitteratur används, observera att
övervägande delen är på elektronisk form:
·
Lärobok:
Välj mellan att använda någon av följande:
o
Vägen till C, Bilting/Skansholm,
studentlitteratur ISBN 978-91-44-07606-5, bokens hemsida. Finns på Cremona.
o
The C-programming language,
Kernighan/Ritchie, finns inte längre i tryckt form, men som PDF.
·
Utdrag ur lärobok:
Maskinnära programmering med HC12, Johansson, som PDF.
·
Arbetsbok:
Arbetsbok för MC12, Johansson/Snedsböl, finns på Kokboken/Cremona.
·
Exempelsamling:
Maskinnära programmering - exempelsamling (Inst. för D&IT, 2014, PDF)
·
Laborations PM:
Maskinnära programmering – laborationer
(Inst. för D&IT, 2014, PDF)
– Tryckt version tillhandahålls kostnadsfritt för kursdeltagarna.
·
Inlämningsuppgift:
Goldbach hypotes – utförs som hemuppgift inför laboration 4. (Inst. för
D&IT, 2014, PDF)
·
Instruktionslista:
HCS12 Reference guide - Tryckt version får användas under tentamen, som PDF
·
Quick guide:
C-reference card ANSI - Tryckt version får användas under tentamen, som PDF.
Se
även ”resurssidan”
– för programdistributioner och ytterligare material på elektronisk form.
Inga
större ändringar sedan förra årets kurs.
Laborationsmoment:
· Under laborationen utför studenten de förberedda uppgifterna och redovisar också sina resultat för en handledare som godkänner studenten på laborationsmomentet. Laborationsmomenten bedöms U eller G.
Tentamen
· Skriftlig tentamen, baserat på tentamensresultatet ges betygen U, 3, 4 eller 5. Resultatet från tentamen gäller som slutbetyg på kursen.
FL: Föreläsning
ÖV:
Demonstrationsövning
KOS: Kodnings och
simuleringsövning
LAB: Laboration
LV1(0316) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
18/1 |
Babord |
FL1 |
Kursintroduktion,
|
Maskinnära programmering med HC12 |
Ti
19/1 |
Babord |
FL2 |
Assemblerprogrammering
för MC68HCS12 |
Fö2_Assemblerprogrammering_intro.pdf Maskinnära
programmering med HC12, 3-42 |
To
21/1 |
Jup309 |
KOS1 |
Inledande
övningar med simulator |
Arbetsbok:
kapitel 1 |
To
21/1 |
Styrbord |
ÖV1 |
Programutveckling i
assemblerspråk |
|
Fr
22/1 |
Jup024 |
KOS1 |
Inledande
övningar med simulator |
Arbetsbok:
kapitel 1 |
Fr
22/1 |
Jup024 |
KOS1 |
Inledande
övningar med simulator |
Arbetsbok:
kapitel 1 |
Följande uppgifter
föreslås dessutom som självverksamhet under vecka 1: Arbetsbok
för MC12: Kapitel
1 (uppgifter 1-38) Exempelsamling: 1.1-1.8 |
||||
Veckans tema: Grundläggande assemblerprogrammering för HC12, in-
utmatning, subrutiner. Målsättningar, att efter läsvecka 1 kunna: ●
konstruera, assemblera och testa
enklare programsekvenser skrivna i assemblerspråk, dvs. använda ETERM6. Detta betyder exempelvis att man
ska kunna – skriva rutiner som utnyttjar
minnesadresserad in- och utmatning. – utföra enkel testning programsekvenser i
assemblerspråk. |
LV2(0416) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
25/1 |
Babord |
FL3 |
Synkronisering i realtid, avbrott
och undantagshantering |
Arbetsbok: kapitel 3 |
Må
25/1 |
Jup024 |
KOS2 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
Ti
26/1 |
Babord |
FL4 |
Genomgång
av Laborationsuppgifterna 1-3 (assemblerprogrammering). Frågestund. |
Arbetsbok: kapitel 4 Laborations-PM |
On
27/1 |
Jup024 |
KOS2 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
To
28/1 |
Jup309 |
KOS2 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
To
28/1 |
Styrbord |
|
ingen lektion |
|
Obligatoriska
förberedelser inför laboration 1, se även Lab PM: Arbetsbok
för MC12: 39-43,
71-81 Följande uppgifter
föreslås dessutom som självverksamhet under vecka 2: Exempelsamling: 1.9-1.11 |
||||
Veckans tema: Grundläggande assemblerprogrammering för HC12,
styrstrukturer, parameteröverföring och returvärden. Målsättningar, att efter läsvecka 2 kunna: ·
konstruera, assemblera och testa
program i assemblerspråk. Detta betyder exempelvis att man ska
kunna – beskriva assemblermönster som motsvarar for-,
while-, if- och switch-satser. – beskriva assemblermönster som motsvarar iteration
över ett fält. – beskriva assemblermönster som
motsvarar funktions- och subrutinanrop. – utnyttja standardmönster för
att programmera styrstrukturer som iteration och val. – utnyttja standardmönster för
subrutiner, inklusive parameteröverföring. – utföra testning av funktioner, subrutiner och
program i assemblerspråk. – beskriva olika principer för överföring mellan centralenhet
och kringenheter, såsom pollning och avbrottsstyrning. och att: ·
ha
förberett laboration 1 |
LV3(0516) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
1/2 |
Babord |
ÖV2 DT |
Programutveckling
i assemblerspråk, avbrott/undantag |
|
Må
1/2 |
Jup024 |
KOS3 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
Ti
2/2 |
Bryggan |
LAB1 |
MEI |
Laborationsuppgifterna
ska vara väl förberedda |
To
4/2 |
Jup309 Jup310 |
KOS3 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
To
4/2 |
Styrbord |
FL5 |
Inledning
till C, repetition, |
|
To
4/2 |
Bryggan |
LAB1 |
DI-a |
Laborationsuppgifterna
ska vara väl förberedda |
Fr
5/2 |
Bryggan |
LAB1 |
EI |
Laborationsuppgifterna
ska vara väl förberedda |
Fr
5/2 |
Jup024 |
KOS3 |
Förbered laboration 1 och 2 |
Arbetsbok: kapitel 4 |
Obligatoriska
förberedelser inför laboration 2, se även Lab PM: Arbetsbok
för MC12: 82-101 |
||||
Veckans tema: Assemblerprogrammering för HC12, introduktion till
laborationssystemet. Målsättningar, att: ·
ha utfört laboration 1 ·
ha förberett laboration 2 |
LV4(0616) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
8/2 |
Babord |
FL6 |
Pekare
och fält |
|
Må
8/2 |
Jup024 |
KOS4 |
Förbered laboration 3 |
|
Ti
9/2 |
Babord |
ÖV3 |
Inledande
C, och stackens användning |
|
On
10/2 |
Bryggan |
LAB2 |
MEI |
Laborationsuppgifterna
ska vara väl förberedda |
On
10/2 |
Bryggan |
LAB1 |
DI-b |
Laborationsuppgifterna
ska vara väl förberedda |
To
11/2 |
Jup309 Jup310 |
KOS4 |
Förbered laboration 3 |
|
To
11/2 |
Styrbord |
FL7 |
Pekare,
listor och absolutadressering |
|
To
11/2 |
Bryggan |
LAB2 |
DI-a |
Laborationsuppgifterna
ska vara väl förberedda |
Fr
12/2 |
Bryggan |
LAB2 |
EI
|
Laborationsuppgifterna
ska vara väl förberedda |
Fr
12/2 |
Jup024 |
KOS4 |
Förbered laboration 3 |
|
Obligatoriska
förberedelser inför laboration 3, se speciellt Lab PM. Arbetsbok
för MC12: 65-67 |
||||
Veckans tema: Assemblerprogrammering för HC12, avbrottshantering Målsättningar, att efter läsvecka 4 kunna: ·
konstruera
system innefattande olika typer av undantag (interna undantag, avbrott,
återstart). Detta betyder exempelvis att man
ska kunna – beskriva och exemplifiera de olika typerna av
undantag. – skriva program för systemstart, inklusive
återstart. – skriva enkla avbrottsrutiner för digitala
komponenter. – beskriva och tillämpa olika metoder för
prioritetshantering vid multipla avbrottskällor (mjukvaru- och hårdvarubaserad prioritering,
avbrottsmaskering, icke maskerbara avbrott). och att: ·
ha utfört laboration 2 ·
ha
förberett laboration 3 |
LV5(0716) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
15/2 |
Bryggan |
LAB2 |
DI-b |
Laborationsuppgifterna
ska vara väl förberedda |
Må
15/2 |
Babord |
ÖV4 |
Pekare,
dynamiska arrayer och absolutadressering |
Förberedelser
för lab 4 borrmaskin |
Må
15/2 |
Jup024 |
KOS5 |
EI Förbered laboration 4 |
|
Ti
16/2 |
Bryggan |
LAB3 |
MEI |
Laborationsuppgifterna
ska vara väl förberedda |
Ti
16/2 |
Babord |
Ingen lektion |
||
On
17/2 |
Jup024 |
KOS5 |
DI Förbered laboration 4 |
|
On
17/2 |
Bryggan |
LAB3 |
DI-a |
Laborationsuppgifterna
ska vara väl förberedda |
To
18/2 |
Jup309 Jup310 |
KOS5 |
MEI |
|
To
18/2 |
Styrbord |
ÖV5 |
Avbrottshantering i C/assembler |
|
Fr
19/2 |
Bryggan |
LAB3 |
EI |
Laborationsuppgifterna
ska vara väl förberedda |
Obligatoriska
förberedelser inför laboration 4, se speciellt Lab PM. Inlämningsuppgift:
”Goldbach hypotes” |
||||
Veckans tema: Inledande C-programmering, pekare Målsättningar, att efter läsvecka 5 kunna: ·
skriva
enkla C-program med användande av programspråkets datatyper och
styrstrukturer. Detta betyder att man till exempel ska kunna – strukturera program med hjälp av funktioner och
subrutiner, med lämpliga val av parametrar och resultattyp, samt utnyttja
styrstrukturer som for-, while, if- och switchsatser på ett strukturerat
sätt. – utnyttja sammansatta datatyper som fält och poster
samt använda sig av standardmönster (for-loopar) vid programmering med fält. – på ett disciplinerat sätt kunna använda pekare,
främst för överföring av referenser som parametrar. – beskriva betydelsen av begreppen kompilering,
assemblering och länkning samt genomföra dessa moment med valda verktyg. – beskriva och genomföra separat- och
korskompilering. – använda en debugger för enkel felsökning. och att: ·
ha utfört laboration 3 ·
ha
förberett laboration 4 |
LV6(0816) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
22/2 |
Bryggan |
LAB3 |
DI-b |
Laborationsuppgifterna
ska vara väl förberedda |
Må
22/2 |
Babord |
FL8 |
Kodningskonventioner,
avbrott med C |
|
Må
22/2 |
Jup024 |
KOS6 |
EI Förbered laboration 5 |
Arbeta med simuleringar/laborationer |
Ti
23/2 |
Bryggan Loggen |
LAB4 |
MEI |
Laborationsuppgifterna
ska vara väl förberedda |
Ti
23/2 |
Babord |
ÖV |
Övning reservtid |
|
On
24/2 |
Jup024 |
KOS6 |
DI Förbered laboration 5 |
Arbeta med simuleringar/laborationer |
To
25/2 |
Jup309 Jup310 |
KOS6 |
MEI |
Arbeta med simuleringar/laborationer |
To
25/2 |
Styrbord |
ÖV |
Övning reservtid |
|
To
25/2 |
Bryggan |
LAB4 |
DI |
Laborationsuppgifterna
ska vara väl förberedda |
Fre
26/2 8.15-10.00 |
Jup308 Jup309 |
LAB4 |
EI Laboration
4 |
Laborationsuppgifterna
ska vara väl förberedda |
Obligatoriska
förberedelser inför laboration 5, se speciellt Lab PM. Följande uppgifter
föreslås dessutom som självverksamhet under vecka 6: Exempelsamling: 2.9, 2.10, 2.17, 2.21, 2.22, 2.36,
2.38 |
||||
Veckans tema: Maskinnära programmering i C Målsättningar, att efter läsvecka 6 kunna: – skriva subrutiner som kan anropas från C, med
användande av C’s anropskonventioner. – använda ”typedef”
och instruktioner till C:s preprocessor (makron) på ett disciplinerat sätt – utnyttja adresseringssätt och pekare för
referensöverföring. – skriva C-rutiner som utnyttjar variabler på
absoluta adresser (register) för minnesadresserad in- och utmatning. och att: ·
ha utfört laboration 4 ·
ha
förberett laboration 5 |
||||
|
LV7(0916) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
29/2 |
Bryggan |
LAB4 |
DI-b |
Laborationsuppgifterna
ska vara väl förberedda |
Må
29/2 |
Babord |
FL9 |
Periferikretsar
och IO |
|
Ti
1/3 |
Bryggan |
LAB5 |
MEI |
Laborationsuppgifterna
ska vara väl förberedda |
Ti
1/3 |
Babord |
ÖV6 |
Programmering
av periferikretsar |
|
Tor
3/3 |
Bryggan |
LAB4 |
EI
Laboration 4 |
Laborationsuppgifterna
ska vara väl förberedda |
Tor
3/3 13.15-17.00 |
Bryggan Gnisten |
LAB5 |
DI Laboration
5 |
Laborationsuppgifterna
ska vara väl förberedda |
Fre
4/3 |
Bryggan Loggen |
LAB5 |
EI |
Laborationsuppgifterna
ska vara väl förberedda |
Veckans tema: Programmering av periferikretsar Målsättningar, att efter läsvecka 7 kunna: – beskriva och använda kretsar för tidmätning. – beskriva och använda kretsar för parallell och
seriell överföring (RS232). – beskriva och använda kretsar
för DA- och AD-omvandling. och att: ·
ha utfört laboration 5 |
LV8(1016) |
|
|||
Tid |
Plats |
Lektion |
Behandlar |
Läsanvisning/uppgifter |
Må
7/3 |
Bryggan |
LAB5 |
DI-b |
Laborationsuppgifterna
ska vara väl förberedda |
Ti
8/3 |
Bryggan |
LAB |
Extra
tillfälle |
Möjlighet
att redovisa laborationer för dig som ännu inte hunnit med detta. |
To
10/3 |
Styrbord |
FL10 |
Repetition,
genomgång av kursens mål och förberedelser inför tentamen |
|
To
10/3 |
Bryggan Loggen |
LAB5 |
EI |
Laborationsuppgifterna
ska vara väl förberedda |
Fr
11/3 |
Bryggan Gnistan Loggen |
LAB |
Extra
tillfälle |
Möjlighet
att redovisa laborationer för dig som ännu inte hunnit med detta. |
Veckans
tema: Slutför
laborationsseriern. Repetition och sammanfattning, kursens lärandemål Efter fullgjord kurs ska studenten kunna * medverka vid konstruktion och programmering av
enkla inbyggda system med givna komponenter. Detta betyder att man till exempel ska kunna – beskriva och exemplifiera uppbyggnaden av enkla
inbyggda system. – använda en microcontroller och några digitala komponenter
för programmering av ett inbyggt system. – beskriva de svårigheter som uppstår vid
konstruktion av program som ska hantera asynkrona händelser från flera
kringkomponenter. |