In2305-II Embedded Programming: Cursus-informatie 2006-2007


Mededelingen

Eindcijfer

Eindcijfer op basis van toets (nov), praktikum (dec) en tentamen (jan) is hier te vinden. Studenten die praktikum of tentamen niet hebben behaald hebben nog geen eindcijfer. Een aantal studenten kan nog in aanmerking komen voor een eindcijfer indien zij het herkansingstentamen op 4 juli 2007 behalen.

Tentamen

De antwoorden van het tentamen op 17 jan 2007 zijn hier te vinden. Het tentamen is bezocht door 66 studenten. De uitslag is hier te vinden. De cijfers zijn nog niet afgerond omdat deze verwerkt worden in het eindcijfer volgens de formules onderaan deze pagina.
Het tentamen is goed gemaakt, ca 2/3 heeft een voldoende. Ik heb vraag 15 en 16 laten vervallen omdat de vraagstelling wat onduidelijkheden vertoonde. Derhalve is de score-cijfer afbeelding gebaseerd op 28 vragen (i.e., de lijn loopt van cijfer 1 bij 7 vragen goed tot cijfer 10 bij 28 goed). In februari hoop ik ook met uitwerkingen te komen, die heb ik nu niet beschikbaar.

Praktikum

Het december-praktikum is behaald door 69 studenten (13 studenten zijn vooraf of tijdens het praktikum afgehaakt / weggestuurd). De uitslag is hier te vinden. De cijfers zijn niet afgerond omdat deze verwerkt worden in het eindcijfer volgens de formules onderaan deze pagina (het eindcijfer wordt wel afgerond). Je kan dus nu uitrekenen wat je voor het tentamen op 17 jan 2007 moet halen om het vak te halen.

Toets

De november-toets is gedaan door 39 studenten. De toets zelf (incl. antw) is hier te vinden. De uitslag is hier te vinden.
NB: In2305-ii is een gloednieuw vak, er is dus geen tentamenverleden, er bestaan dus geen oude tentamens / toetsen!.
De cijfers zijn niet afgerond omdat deze verwerkt worden in het eindcijfer volgens de formules onderaan deze pagina (het eindcijfer wordt wel afgerond). Zoals aangekondigd tijdens de nabespreking verleden week zijn vragen 7 en 8 vervallen. Verder is de normering is op twee manieren opgetrokken: (1) het cijfer loopt van 1 - 10 ipv. 0 - 10, (2) ondanks het feit dat tav. de moeilijkheidsgraad van de vragen er rekening was gehouden met de korte toetsduur (45 min voor 10 vragen ivm 3 uur voor 30 vragen tijdens het tentamen), is de score verhoogd met 10%. Het gemiddelde cijfer is 4.65. Ik heb zelf enigszins het vermoeden dat dit het gevolg is van de cijfers behaald door studenten die ik praktisch nooit gezien heb tijdens college..

Praktikumindeling

De indeling van het praktikum is hier te vinden.


Vakbeschrijving

Het vak in2305-ii, dat dit jaar voor het eerst wordt aangeboden, geeft een introductie in real-time programmeren op een embedded systeem. De student leert de principes van real-time programmeren in C (interrupts, multitasking) met behulp van een simpel Real-Time Operating Systeem (RTOS). Het vak behandelt de principes van een RTOS, diens werking, en behandelt hoe real-time applicaties mbv een RTOS worden geprogrammeerd. Het college wordt vergezeld van een klein prakticum (3 dagdelen) waarin de student een real-time motorbesturing programmeert op een microcontroller platform die het toerental van de electromotor regelt (simulatie van een automotive cruise control applicatie). Als platform wordt een soft core gebruikt (de X32) die gerealiseerd is op een FPGA-demonstratie-board, die verbonden is met een electromotor-opstelling (zie foto).

[picture of the lab setup]

Rooster (colleges, praktica)

Colleges zijn in Zaal E, EWI gebouw. Praktica zijn in Zaal DW_00_200 (itt tot wat in het web rooster staat vermeld)

NB: onderstaande college-onderwerpen zijn op basis van de huidige planning, maw. dit kan wijzigen als blijkt dat eea sneller of langzamer gaat dan verwacht!.

Prakticum

Praktica zijn in Zaal DW_00_200 (Drebbelweg). Zie hier voor nadere gegevens en regels voor de praktica.

Het prakticum bestaat uit 3 dagdelen verspreid over drie weken (1 dagdeel per week, het dagdeel is di ochtend of wo middag of do middag or vr middag, afhankelijk hoe je bent ingedeeld). Het prakticum is verplicht, en moet met voldoende resultaat zijn afgesloten wil je het vak kunnen halen. Omdat het praktikum slechts uit 3 dagdelen bestaat is er weinig tijd beschikbaar en is het essentieel dat het werk thuis wordt voorbereid (gebruik bv. de X32 simulator of de DOS versie van uC/OS die met het boek wordt meegeleverd). Studenten die de opdrachten onvoldoende hebben voorbereid en/of die veel te laat arriveren op het praktikum worden onherroepelijk weggestuurd, met als gevolg het niet behalen van het praktikum. Er geldt namelijk: aanwezigheid is verplicht voor elk van de drie dagdelen: afwezigheid leidt onherroepelijk tot het niet behalen van het praktikum en derhalve het vak.

Het praktikum wordt in groepjes van 2 studenten uitgevoerd. Behalve dat je je moet inschrijven in TAS, moet je je ook via email opgeven bij de student assistenten waarbij een groepje slechts EEN email verstuurt met beide namen en studienummers, samen met en EEN emailadres waaronder het groepje bereikbaar is. Als je geen partner weet geef je je individueel op. Je wordt dan in een groepje ingedeeld. De indeling in een van de vier dagdelen wordt door de student-assistenten bepaald op basis van beschikbaarheid. Wel kon een groep zich bij TAS inschrijven voor een specifiek dagdeel (di, wo, of vr) waar de voorkeur naar uit gaat, mits dat dagdeel nog niet voltekend is. Hier wordt - voor zover mogelijk - mee rekening gehouden, maar inschrijving voor een bepaald dagdeel biedt geen garantie. NB: dit geldt met name nu er sinds 26 nov 2006 de donderdagmiddag is bijgekomen.

In het praktikum moet een embedded programma worden ontwikkeld die het toerental van een electrische motor regelt (simulatie van een cruise control systeem bij auto's). De opdracht staat beschreven in de praktikumhandleiding. Als microcontroller gebruiken we de X32, een experimentele 32-bit softcore, geschreven in VHDL, die op een Xilinx Spartan-3 FPGA board is geimplementeerd. De softcore bevat peripheral devices zoals een UART om met de Linux host te communiceren (daar wordt het embedded programma gecompileerd en vervolgens ge-upload naar de X32), en devices op de motor aan te sturen en om de verdraaing van de motor-as te meten. De X32 wordt geprogrammeerd in ANSI C.

Materiaal

Beknopte Studeerwijzer voor het boek
(David E. Simon, An Embedded SW Primer, Addison Wesley):

[picture of the book]

Chapter 1. A First Look at Embedded Systems. Doorlezen. Geeft een aardig idee wat embedded systems zijn en wat de specifieke toepassingsgebieden zijn. De voorbeelden die behandeld worden dient men wel te kennen, deze komen nml. veelvuldig terug in latere hoodstukken. Wordt indirect getoetst.
Chapter 2. HW Fundamentals for the SW Engineer. Niet noodzakelijk, maar wel iets dat een goede embedded SW engineer hoort te weten. Er wordt aangenomen dat de basiskennis reeds aanwezig is op grond van in2305-i. Errata Figure 2.18 en 2.19: haal OVERLOADED weg. Wordt niet getoetst.
Chapter 3. Advanced HW Funadamentals. Niet noodzakelijk, maar wel iets dat een goede embedded SW engineer hoort te weten. Er wordt aangenomen dat de basiskennis reeds aanwezig is op grond van in1705 en in2305-i. Wordt niet getoetst. Wij zullen de X32 behandelen.
Chapter 4. Interrupts. Kern, helemaal bestuderen. Interrupts vormen de basis voor elk computer systeem, en met name embedded systemen, omdat die instantaan op een veelheid van externe events moeten kunnen reageren. Wordt getoetst.
Chapter 5. Survey of SW Architectures. Kern, helemaal bestuderen. In dit hoofdstuk wordt een aantal architectures besproken, beginnende bij een heel simpele round-robin opzet tot een volwaardige RTOS opzet. Elke nieuwe architectuur wordt gemotiveerd aan de hand van de tekortkomingen van de net besproken architectuur. Essentieel hoordstuk om het nut van een RTOS te doorgronden, alsmede om in te zien dat je niet altijd maar een RTOS-oplossing moet nemen. Errata: Fig. 5.6 is niet correct. Zie slides op college. Wordt getoetst.
Chapter 6. Introduction to RTOS. Kern, helemaal bestuderen. In dit hoofdstuk wordt het programmeren mbv een RTOS uitgebreid besproken aan de hand van bekende aspecten zoals priority scheduling, data sharing, reentrancy, semaphores als basis-oplossing voor data sharing met de daarbij behorende problemen zoals priority inversion, deadlock. Wordt getoetst.
Chapter 7. More OS Services. Belangrijk, echter slechts gedeeltelijk bestuderen. Met interrupts en de basis RTOS functies: (priority) task scheduling en semaphores heb je eigenlijk al genoeg om embedded applicaties te bouwen. In dit hoofdstuk worden een aantal aanvullende toeters en bellen geintroduceerd, zoals queues, mailboxes, pipes, timers, events, en memory management, die het programmeerleven makkelijker maken. Tekst van 7.1 t/m 7.4 doorlezen, met name de gevaren van het ondoordacht programmeren mbv bovenstaande functies dient men te onderkennen (de Pitfalls op pag. 181 t/m 184). Het gebruik van timer functies (7.2) en interruptroutines in combinatie met een RTOS (7.5) dient daarentegen helemaal bestudeerd te worden. Wordt getoetst.
Chapter 8. Basic Design Using an RTOS. Belangrijk, echter slechts doorlezen. In dit hoofdstuk worden algemene stelregels gegeven hoe een embedded systeem moet worden ontworpen. Alle eerder behandelde concepten komen bij elkaar in het voorbeeld design van 8.3 (de Underground Tank Monitoring System) inclusief methoden om bugs te voorkomen (lees met name 8.4). In tegenstelling tot de UTMS zullen wij ons echter primair richten op de Cruise Control applicatie die op het prakticum moet worden geprogrammeerd. Wordt indirect getoetst.
Chapter 9. Embedded SW Development Tools. Belangrijk, echter slechts doorlezen. Goede introductie in de algemene tool chain architectuur bij embedded systems. Wij zullen ons echter primair richten op de X32 tool chain die op het prakticum wordt gebruikt. Wordt indirect getoetst.
Chapter 10. Debugging Techniques. Niet noodzakelijk. Goede en belangrijke introductie in wat in de embedded systems praktijk het meest belangrijkste (en tijdrovendste) is: testen en debuggen. Gegeven de gelimiteerde tijd komen wij hier helaas niet aan toe, maar is warm aanbevolen voor verdere studie. Een deel van de stof komt automatisch aan bod tijdens het prakticum. Wordt niet getoetst.
Chapter 11. An Example System. Niet noodzakelijk. Dit hoofdstuk geeft een nadere uitleg van een PC-versie van de UTMS die is meegeleverd bij het boek (op CD). Omdat het hier om een versie gaat die weinig "embedded" is, geven wij de voorkeur aan de Cruise Control HW en SW bij het prakticum. Wordt niet getoetst.

Toetsing

De toetsing van het vak omvat zowel college als prakticum. Voor beiden haal je een cijfer (respectievelijk c en p genoemd). Het college wordt getoetst door een Multiple Choice tentamen. Het prakticum wordt getoetst in termen van een "cijfer" A, B of C dat overeenkomt met p = 10, 8 of 6. Een onvoldoende prakticumcijfer bestaat niet: het eindcijfer (e genoemd) wordt namelijk pas geldig nadat het prakticum is behaald. Het prakticumresultaat is van invloed op het eindcijfer, dat is gegeven door e = max(c, (7.5*c + 2.5*p)/10). Hieruit blijkt overigens hoe belangrijk het prakticum is voor het behalen van dit vak.

Er bestaat de mogelijkheid tot het doen van een tussentoets. Deze toets bestaat uit het maken van (waarschijnlijk) 10 MC vragen tijdens het eerste uur (45 min) van een collegeblok. Tijdens het tweede uur wordt de toets besproken. De toets geeft een idee hoe het tentamen zal gaan en speelt mee in de beoordeling van het vak (het eerder genoemde cijfer c) volgens een gunstig no-cure-no-pay-achtig principe, waarbij onvoldoenden geen negatief effect hebben. Zij p het cijfer voor de toets en q het cijfer van het tentamen. Dan geldt dat c = max(q, (7.5*q + 2.5*p)/10). Altijd komen dus!


Arjan J.C. van Gemund Docent