Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) Klausur am 25. Juli 2008

Ähnliche Dokumente
Friedrich-Alexander-Universität Erlangen-Nürnberg

a) Welche Aussage zu Zeigern ist richtig? Die Übergabesemantik für Zeiger als Funktionsparameter ist callby-value.

Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) Klausur am 9. April 2008

d) Was passiert, wenn das folgende Programmstück übersetzt und ausgeführt

d) Welche Aussage zu Zeigern ist richtig? Beim Rechnen mit Zeigern wird immer der Typ des Zeigers beachtet.

Zeiger vom Typ (void *) sind am besten für Zeigerarithmetik geeignet, da sie kompatibel zu jedem Zeigertyp sind.

f) Was versteht man beim Zugriff auf I/O-Register unter dem Begriff "Memory-mapped"?

d) Welche Aussage zum Thema virtueller Adressraum ist richtig?

b) Was bewirken folgende Programmanweisungen? uint8_t x = 42; x ^= x;

Zeiger vom Typ (void *) sind am besten für Zeigerarithmetik geeignet, da sie kompatibel zu jedem Zeigertyp sind.

Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme und Betriebssysteme. Schriftliche Diplomvorprüfung

Zeiger vom Typ (void *) sind am besten für Zeigerarithmetik geeignet, da sie kompatibel zu jedem Zeigertyp sind.

U5-2 Register beim AVR-µC

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

d) Welche Aussage zu volatile ist richtig?

A B C D E C 5 7 D 3 E. 2. [6-Bit, positiv] Welche Dezimalzahl wird durch die gegebene Bit-Sequenz kodiert?

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Informatik für Ingenieure (InfIng)

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Implementierung von Interruptbehandlungen. Interrupts

myavr Programmierung in C

U2 Fortgeschrittene AVR-Programmierung. U2-1 Externe Interrupts des AVR-μC. 1 Flanken-/Pegel-Steuerung. 1 Flanken-/Pegel-Steuerung (2) 2 Maskieren

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC)

e) Welchen Wert hat die Variable i nach Ausführung der folgenden Zeilen Code: x25 0x84 b) Welche Aussage zu folgender Funktion ist richtig?

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung. Synchronisation mit Unterbrechungsbehandlungen

U5 Fortgeschrittene AVR-Programmierung

Atmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Schnittstellenbeschreibung. Inhalt

Wiederholung: Zugriff auf AVR-Prozessor-Register. Aufgabe 3: 7seg-Modul der SPiCboard-Bibliothek

Sebastian Maier (Lehrstuhl Informatik 4) Übung 4. Sommersemester 2017

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

Übungen zu Systemnahe Programmierung in C (SPiC)

"Organisation und Technologie von Rechensystemen 4"

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18

Wer möchte, kann sein Programm auch auf echter Hardware testen

U2-1 Register beim AVR- C. U2-2 I/O-Ports des AVR- C. 1 Überblick. 2 Makros für Register-Zugriffe. 1 Überblick

Übungen zu Systemnahe Programmierung in C (SPiC)

Wiederholung: Zugriff auf AVR-Prozessor-Register. Aufgabe 3: 7seg-Modul der SPiCboard-Bibliothek

U3-1 Register beim AVR-μC. U3 3. Übung. U3-2 I/O-Ports des AVR-μC. 1 Überblick. 2 Makros für Register-Zugriffe. 1 Überblick

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

Wiederholung: Zugriff auf AVR-Prozessor-Register

Hauptklausur zur Vorlesung Bildverarbeitung WS 2002/2003

Unter einem Interrupt kann man sich einen durch Hardware ausgelösten Unterprogrammaufruf vorstellen.

Klausur: Ökonomische Theorie der Politik Termin: Prüfer: Univ.-Prof. Dr. J. Grosser. Maximale Punktzahl. Summe 100.

Vorlesung Objektorientierte Programmierung Klausur

Klausur. Softwareentwurf. 04. Februar 2013 Bearbeitungszeit: 120 Minuten

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2018/19

Abschlussklausur. Betriebssysteme. 30. Januar Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

Systemnahe Programmierung in C (SPiC)

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Globale Variablen

Klausur. Softwareentwurf. 22. März 2011 Bearbeitungszeit: 120 Minuten

Beispielklausur Parallele und Funktionale Programmierung XXX 200X

Klausur zur Vorlesung Höhere Mathematik I

Klausur. Softwareentwurf. 13. März 2013 Bearbeitungszeit: 120 Minuten

K Ergänzungen zur Einführung in C

Klausur zu Grundlagen der Programmierung in C

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Sommersemester 2018

Klausur zu Grundlagen der Programmierung in C

Mikrocontrollerplatine vorbereiten

Klausur. Softwareentwurf. 14. Februar 2011 Bearbeitungszeit: 120 Minuten

e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

Viel Erfolg bei der Bearbeitung der Aufgaben!

Signale und Systeme I

UNIVERSITÄT DUISBURG-ESSEN

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Signale und Systeme II

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18

Computational Engineering I

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht,

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Kompilieren Datentypen Operatoren. Überblick. 1 Kompilieren. 2 Datentypen. const static volatile. 3 Operatoren. Alexander Batoulis

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt

Lineare Algebra für Informatiker Abschlussklausur

Allgemeine Hinweise:

Klausur. Betriebssysteme SS 2007

Einführung in die Programmierung und Programmiersprachen (OOP)

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Klausur zum Kurs Betriebssysteme (1802) am 18. September 2010

Einführung in die Programmierung. (K-)II/Wb17

E Mikrocontroller-Programmierung

Klausur Algorithmen und Datenstrukturen II 10. August 2015

Klausur Betriebsysteme, Windows NT. Wintersemester 00/01. Dipl.-Ing. Jürgen Halkenhäuser Dipl.-Ing. T. Kloepfer

Nachname Vorname Matrikelnummer Klausurzulassung WS / SS Dozent. Aufgabe 1 14 Aufgabe 2 12 Aufgabe 3 10 Aufgabe 4 6 Aufgabe 5 10 Gesamt 52

GdI 2 Systemnahe Programmierung in C

Abschlussklausur. Betriebssysteme und Rechnernetze. 12. Juli Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

Vertraulich. Nachname: Vorname: Matrikel-Nummer: Studiengang: WIN TI Datum: Maximale Punktzahl: 58 Erreichte Punktzahl: Note: Datum: Unterschrift:

Forth-Vokabular. Vokabular für Attiny2313-Forth Stand: A: Assembler-Wort F: Forth-Wort C: Compiler-Wort

Teil II. Literatur zur C-Programmierung:

Klausur SoSe 2013 / PROBEKLAUSUR

Grundlagen der Technische Informatik / Digitaltechnik (GTI/DT)

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil 8: gavrasmw und weitere Beispiele

Transkript:

Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) SS 2008 Dr.-Ing. Jürgen Kleinöder Friedrich-Alexander-Universität Erlangen-Nürnberg Informatik 4 (Verteilte Systeme und Betriebssysteme) Martensstr. 1, 91058 Erlangen Klausur am 25. Juli 2008 Angaben zur Person: Nachname Vorname Matrikelnummer Studiengang Fachsemester (X) (X) (X) Ich fühle mich gesund und bin in der Lage die Klausur zu schreiben Die wichtigen Hinweise auf der nächsten Seite habe ich zur Kenntnis genommen Ich habe die Klausur alleine und ohne fremde Hilfe bearbeitet Unterschrift Aufgabe 1 Aufgabe 2 Aufgabe 3 Summe I L a: b: c: - 1 von 10 -

Wichtige Hinweise Die folgenden Informationen bitte aufmerksam lesen und die Erklärung auf Seite 1 unterschreiben. Es sind keine eigenen Hilfsmittel zugelassen. Die Heftung der Klausur darf nicht aufgelöst werden. Die Bearbeitungszeit für diesen Teil der Klausur beträgt 45 Minuten. Prüfen Sie Ihr Exemplar der Klausur auf Vollständigkeit! Dieser Teil der Klausur hat insgesamt 10 Seiten (inkl. Deckblatt). Die Lösung einer Aufgabe muss auf das Aufgabenblatt in den dafür vorgesehenen Raum geschrieben werden. Sollte der Platz nicht ausreichen, können Sie die Rückseiten der Aufgabenblätter mitverwenden. Kennzeichnen Sie dabei die Zugehörigkeit Ihrer Lösung zu einer Aufgabe deutlich. Zusätzliche Blätter gehen nicht in die Bewertung ein! Die Lösungen müssen dokumentenecht in blau oder schwarz geschrieben werden. Als falsch Erkanntes muss deutlich durchgestrichen werden. Tintenkiller darf nicht verwendet werden. Keinen Bleistift verwenden! Fragen zu den Prüfungsaufgaben können grundsätzlich nicht beantwortet werden. Tragen Sie Ihren Namen und Vornamen, Ihre Matrikelnummer, Studiengang und Fachsemesterzahl auf dem Deckblatt der Klausur ein. Bitte legen Sie Ihren Studenten- und einen Lichtbildausweis zur Kontrolle bereit. Sie dürfen den Raum nicht verlassen bevor Ihre Personalien überprüft wurden und Sie die Klausurunterlagen der Aufsicht zurückgegeben haben. In den letzten 15 Minuten der Bearbeitungszeit können Sie den Raum nicht mehr verlassen. Bleiben Sie an Ihrem Platz sitzen, bis am Ende alle Klausurunterlagen eingesammelt und nachgezählt sind und die Aufsicht das Zeichen zum Gehen gibt. Die Klausurergebnisse werden in ca. zwei Wochen im WWW unter der Seite der Vorlesung im SS 2008, Unterpunkt "Ergebnisse" veröffentlicht. - 2 von 10 -

Aufgabe 1: (10 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort korrigieren, kreisen Sie bitte die falsche Antwort ein und kreuzen die richtige an. Lesen Sie die Frage genau, bevor Sie antworten. a) Welche Aussage zu Zeigern ist richtig? Die Übergabesemantik für Zeiger als Funktionsparameter ist callby-value. Die Übergabesemantik für Zeiger als Funktionsparameter ist call-by-reference. Ein Zeiger kann zur Manipulation von schreibgeschützten Datenbereichen verwendet werden. Zeiger vom Typ void* sind am besten für Zeigerarithmetik geeignet, da Sie kompatibel zu jedem Zeigertyp sind. b) Welche der folgenden Aussagen über den C-Präprozessor ist richtig? Der Präprozessor ist eine Softwarekomponente, welche Java-Klassen durch C-Funktionen ersetzt, die dann von einem C-Compiler übersetzt werden. Der Präprozessor optimiert Makros durch Zeigerarithmetik. Nach dem Übersetzen und dem Binden müssen C-Programme durch den Präprozessor nachbearbeitet werden, um Makros aufzulösen. Die Syntax von Präprozessoranweisungen ist unabhängig vom Rest der Sprache C. c) In Betriebssystemen wie Linux oder Windows unterscheidet man die Begriffe Programm und Prozess. Welche Aussage ist richtig? Programme sind Anwendungen der Benutzer, während Prozesse Aktivitäten des Betriebssystems sind. Programme sind C-Quellcode-Dateien, die durch einen C-Compiler in einen lauffähigen Prozess übersetzt werden können. Ein Prozess hat einen eigenen virtuellen Adressraum. Daten des Prozesses sind vor direktem Zugriff durch andere Prozesse geschützt. Ein Programm ist ein Prozess in Ausführung. 2 Punkte 2 Punkte 2 Punkte - 3 von 10 -

d) Welche der folgenden Aussagen bzgl. der Interruptsteuerung trifft zu? Pegel-gesteuerte Interrupts werden beim Wechsel des Pegels ausgelöst, daher der Name. 2 Punkte Interrupts sind eine Besonderheit von AVR-Mikroprozessoren. Auf anderen Architekturen kommen POSIX-Signale zum Einsatz. Pegelgesteuerte Interrupts müssen durch Polling des Pegels abgefragt werden. Wurde gerade ein Flanken-gesteuerter Interrupt ausgelöst, so muss erst ein Pegelwechsel der Interruptleitung stattfinden, damit erneut ein Interrupt ausgelöst werden kann. e) Gegeben ist folgendes Makro: #define ADD(a,b) a+b #define MUL(a,b) a*b Was ist das Ergebnis von folgendem Ausdruck: 4 * MUL( ADD(1,2), 3) 10 18 28 36 2 Punkte - 4 von 10 -

Aufgabe 2: (22 Punkte) Schreiben Sie ein Lauflicht-Programm für einen AVR-Mikrokontroller mit 8 LEDs an Port A. Es soll immer genau eine LED aktiv sein, im Ausgangszustand die LED an Pin 0. Das Programm stoppt nach Einschalten der LED an Pin 7. Mit einem Taster kann ein neuer Durchlauf gestartet werden. Wird der Taster bereits während des Durchlaufs gedrückt, so stoppt das Programm nicht, sondern fängt unmittelbar nach LED 7 wieder mit einem neuen Durchlauf bei LED 0 an. Im Detail soll sich das Programm wie folgt verhalten: Die Initialisierung der Hardware soll in einer eigenen Funktion void init() erfolgen, die zu Beginn des Programms aufgerufen wird. Es können hierbei keine Annahmen über den initialen Zustand der Hardware gemacht werden. Anschließend erfolgt ein kompletter Lauflichtdurchlauf. Zum Warten zwischen dem Umschalten zweier LEDs wird die Funktion void wait(unsigned int interval) aufgerufen. In dieser Funktion wird aktiv in einer Warteschleife mit interval Durchläufen gewartet. Für interval wird konstant der Wert 5000 übergeben. Nach einem Lauflichtdurchlauf wird der Mikrokontroller in den Standard- Stromsparmodus versetzt falls zwischenzeitlich die Taste nicht gedrückt wurde. Durch einen Tastendruck soll der Mikrokontroller aus dem Stromsparmodus geweckt werden können und einen neuen Lauflichtdurchlauf beginnen. Information über die Hardware LEDs: PORTA, Pins 0-7, Start bei LED an Pin 0 - Pin als Ausgang konfigurieren: entspr. Bit in DDRA-Reg. auf 1 Taster: PORTD, Pin 2 - Pin als Eingang konfigurieren: entspr. Bit in DDRD-Reg. auf 0 - externe Interruptquelle INT0, ISR-Vektor-Makro: INT0_vect - Aktivierung der Interruptquelle erfolgt durch Setzen des INT0-Bits im Register GICR. - Taster verbindet den Pin mit Masse, es muss der interne Pullup-Widerstand verwendet werden (entspr. Bit in PORTD-Reg. auf 1 setzen). - Konfiguration der externen Interruptquelle 0 (Bits in Register MCUCR) ISC01 ISC00 Beschreibung 0 0 Interrupt bei low Pegel 0 1 Interrupt bei beliebiger Flanke 1 0 Interrupt bei fallender Flanke 1 1 Interrupt bei steigender Flanke - 5 von 10 -

Ergänzen Sie das folgende Codegerüst so, dass ein vollständig übersetzbares Programm entsteht. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> /* Funktiondeklarationen, globale Variablen, etc. */ /* Unterbrechungsbehandlungsfunktion */ /* Funktion main */ /* Initialisierung */ - 6 von 10 -

/* Hauptschleife */ /* ein Lauflicht-Durchlauf */ /* Vorbereitung des naechsten Durchlaufs bzw. Schlafen */ /* Ende der Funktion main */ L: - 7 von 10 -

/* Funktion init */ /* Ende der Funktion init */ /* Funktion wait() */ /* Ende der Funktion wait() */ I: - 8 von 10 -

Aufgabe 3: (13 Punkte) Die folgenden Beschreibungen sollen kurz und prägnant erfolgen (Stichworte, kurze Sätze) a) Beschreiben Sie die Unterschiede bei der Ausführung eines Programms auf einem Mikrokontroller ohne Betriebssystem und auf einem Betriebssystem wie z. B. Linux. b) Beschreiben Sie den Unterschied zwischen Pegel- und Flanken-gesteuerten Interrupts. - 9 von 10 -

c) Was passiert, wenn während der Bearbeitung eines Interrupts weitere Interrupts der gleichen Quelle eintreffen? Worauf muss man deshalb bei der Programmierung von Interrupt-Funktionen achten? - 10 von 10 -