Skip to content

Latest commit

 

History

History
executable file
·
426 lines (297 loc) · 18.7 KB

00_Einfuehrung.md

File metadata and controls

executable file
·
426 lines (297 loc) · 18.7 KB

Einführung

LiaScript

Parameter Kursinformationen
Veranstaltung: @config.lecture
Semester @config.semester
Hochschule: Technische Universität Freiberg
Inhalte: Motivation der Vorlesung "Eingebettete Systeme" und Beschreibung der Organisation der Veranstaltung
Link auf GitHub: https://github.com/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme/blob/master/00_Einfuehrung.md
Autoren @author


Herzlich willkommen im neuen Semester!

Motivation und Zielstellung

Worum geht es in der Veranstaltung und was sollte ich mitnehmen?

  • Perspektive 1: Modulhandbuch
  • Perspektive 2: Hardware
  • Perspektive 3: Software
  • Perspektive 4: Anwendungen

Modulhandbuch

Qualifikationsziele /Kompetenzen:

Mit der erfolgreichen Teilnahme an der Veranstaltung sollen die Studierenden in der Lage sein:

  • die Teilkomponenten eines Rechners ausgehend von der Schaltnetzen/-werken zu beschreiben und ausschnitthafte Teilelemente selbstständig entwerfen zu können,
  • die Integration der Elemente und die Abläufe bei der Programmabarbeitung in verschiedenen Modellrechnern zu beherrschen und die Vor- und Nachteile verschiedener Konfigurationen bewerten zu können,
  • die konkrete Realisierung von eingebetteten Systemen in entsprechenden Anwendungen aus den Schaltplänen zu erfassen und die softwareseitige Umsetzungen daraus abzuleiten
  • einfache, eingebettete Systeme zu entwerfen und zu realisieren

Inhalte

Grundlegende Prinzipien der Modellierung digitaler Systeme: Boolesche Algebren und Funktionen, kombinatorische und sequentielle Schaltungen, Herleitung eines Modellrechners und Abbildung von dessen Funktionsweise, Einführung in die Entwicklung eingebetteter Systeme(Sensoren, Aktoren, elektrische Peripherie, Programmierkonzepte), Anwendungsfelder

Hardware

Was sind die Bausteine des Rechners?

{{0-1}}

@startditaa
               +------------------+
               |c88F              |
               |     Speicher     |
               |                  |
               +---------+-+------+
                       ^ | ^
                       | | |
+----------+  Adresse  | | |               +-----+-----+
|cF88      +-----------+ | |               |  A  |  B  |
|          |             | |        Daten  +-----+-----+
|          |   Befehl    | +-------------->+cFF4       |
|  Steuer- |<------------+                 |           |
|   werk   |                     Kontrolle |    ALU    |
|          +------------------------------>+           |
|          |                               |           |
|          |                       Status  |           |
|          |<------------------------------+           |
|          |                               |           |
|          | Kontrolle                     |           |
|          +-------------+         Daten   |           |
|          |             | +-------------->|           |
|          |  Status     | |               |           |
|          |<----------+ | |               |           |
+----------+           | | |               +-----------+
                       | | |
                       | V V
               +-------+-----------+
               |c8F8               |
               |    Ein/Ausgabe    |
               |                   |
               +-------------------+
@endditaa
                                 {{1-2}}

Diagramme

Auf welche konkreten Systeme schauen wir dabei insbesondere?

  • ATmega4808/4809
  • ATmega32

                                 {{2-3}}

Wie kann ich die Perspektiven systematisieren


                Abstraktionsebenen

           +----------------------------+ -.
  Ebene 6  | Problemorientierte Sprache |  |
           +----------------------------+  |
                                           ⎬ Anwendungssoftware
           +----------------------------+  |
  Ebene 5  | Assemblersprache           |  |
           +----------------------------+ -.

           +----------------------------+
  Ebene 4  | Betriebssystem             |     Systemsoftware
           +----------------------------+

           +----------------------------+
  Ebene 3  | Instruktionsset            |     Maschinensprache
           +----------------------------+

           +----------------------------+  -.
  Ebene 2  | Mikroarchitektur           |   |
           +----------------------------+   |
                                            ⎬ Automaten, Speicher, Logik
           +----------------------------+   |       ╔══════════════════╗
  Ebene 1  | Digitale Logik             |   |    ◀══║ HIER STARTEN WIR!║
           +----------------------------+  -.       ╚══════════════════╝

           +----------------------------+
  Ebene 0  | E-Technik, Physik          |     Analoge Phänomene
           +----------------------------+                                      .

Software

Und wie wirkt sich das auf die Software aus?

Nehmen wir an, Sie realisieren ein Arduino Beispielprogramm wie dieses:

byte leds[] = {13, 12, 11, 10};
void setup() {
  Serial.begin(115200);
  for (byte i = 0; i < sizeof(leds); i++) {
    pinMode(leds[i], OUTPUT);
  }
}

int i = 0;
void loop() {
  Serial.print("LED: ");
  Serial.println(i);
  digitalWrite(leds[i], HIGH);
  delay(250);
  digitalWrite(leds[i], LOW);
  i = (i + 1) % sizeof(leds);
}

@AVR8js.sketch

{{2}} Am Ende des Compiliervorganges entsteht daraus der sogenannte Maschinencode. Dieser ist die Sprache, die der Rechner originär versteht und der entsprechend ausgeführt werden kann.

{{2}}

:100000000C9472000C947E000C947E000C947E0084
:100010000C947E000C947E000C947E000C947E0068
:100020000C947E000C947E000C947E000C947E0058
…
:1000A0000C947E000C947E000C947E000C947E00D8
:1000B0000C947E000C947E000C947E000C947E00C8
:1000C0000C947E000C947E000C947E000C947E00B8
:1000D0000C947E000C947E000C947E000C947E00A8
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
:1000F00000E00CBF0E9480000C9483000C94000070
:0A010000279A2F98FFCFF894FFCF            45
:00000001FF

Worin unterscheiden wir uns also von einem Arduino-Kurs?

Anwendungen

Und wie nützt mir das?

Diagramme

Wenn wir noch einen Schritt weitergehen, können wir die Daten auch an einen Server übergeben. Dieser übernimmt die Aufbereitung und Visualisierung.

Hier lassen sich dann die eigentlichen "Untersuchungen" realisieren und zum Beispiel die Frage beantworten, ob die Sonne am Wochenende häufiger scheint.

Diagramme

Die roten Punkte stellen die Verteilung der Wochenendmessungen der vergangenen Woche dar, während die blauen Kreuze die Wochentage illustrieren. Dunkelheit wird durch einen Wert nahe 1023 ausgedrückt, während helle Messsituationen durch kleine Werte dargestellt werden.

                             {{1-2}}

**Aber ich will Webentwickler werden ... **

Antwort A: Was macht Sie da so sicher? Das Studium vermittelt ein breitgefächertes Weltbild und keine eng zugeschnittene Sicht.

Antwort B: Die Fähigkeit in Algorithmen zu denken ist eine Grundlage wissenschaftlichen Arbeitens.

Antwort C: Am Ende steht Ihnen das Rüstzeug zur Verfügung kleine eingebettete C-Projekte selbst anzugehen.


Organisation

Name Email
Prof. Dr. Sebastian Zug sebastian.zug@informatik.tu-freiberg.de
Adrian Köppen adrian.koeppen@student.tu-freiberg.de

Bitte melden Sie sich im OPAL unter Digitale Systeme für die Veranstaltung an. Dort finden Sie auch die aktuellen Informationen zur Veranstaltung.

Zeitplan

Die Veranstaltung wird sowohl für die Vorlesung als auch die Übung in Präsenz durchgeführt.

Veranstaltungen Tag Zeitslot Ort Bemerkung
Vorlesung I Montag 14.30 - 16.00 HUM-1115 wöchentlich
Vorlesung II Mittwoch 11:30 - 13.00 HUM-1115 gerade Wochen

Die zugehörigen Übungen starten im Dezember und werden dann wöchentlich durchgeführt.

  • Übung 1 (ROB), Dienstags, 14.30 - 16.00 Uhr, RAM-2119
  • Übung 2 (BM, Mm, BAI), Mittwochs, 14.30 - 16.00 Uhr, KKB-2097

Die Übungen werden ab Dezember stattfinden. Dort haben Sie dann insbesondere ab Januar Gelegenheit anhand spezifischer Mikrocontrollerschaltungen Ihre Kenntnisse praktisch zu vertiefen.

Prüfungsmodalitäten

Credit-Points: 6

Prüfungsform: Die Veranstaltung wird mit einer schriftlichen Prüfung abgeschlossen. Diese wird als Open Book Klausur entworfen. Sie dürfen dazu alle schriftlichen, nicht-digitalen Materialien verwenden.

Im Laufe der Übungen werden wir "alte" Übungsaufgaben durchspielen, die Ihnen einen Eindruck von der Prüfung vermitteln sollen.

Literaturempfehlungen

  1. Umfassende Lehrbücher

    • David A. Patterson, John L. Hennessy: Computer Organization & Design
    • B. Becker, R. Drechsler, P. Molitor: Technische Informatik - Eine Einführung, Pearson Studium, 2005
    • Hoffmann, D. W.: Grundlagen der technischen Informatik, Hanser Verlag
  2. Videos

    • Youtube – „How a CPU Works“ Link

Bei den jeweiligen Vorlesungsinhalten werden zusätzliche Materialien angegeben.

Engagement und Motivation

Arbeitsaufwand: Der Zeitaufwand beträgt 180h und setzt sich zusammen aus 60h Präsenzzeit und 120h Selbststudium. Letzteres umfasst die Vor- und Nachbereitung der Lehrveranstaltung, die eigenständige Lösung von Übungsaufgaben sowie die Prüfungsvorbereitung.

Open Educational Resources

                          {{0-1}}

Die Lehrmaterialien finden Sie unter GitHub, einer Webseite für das Versionsmanagement und die Projektverwaltung.

https://github.com/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme

Die Unterlagen selbst sind in der Auszeichnungsprache LiaScript verfasst und öffentlich verfügbar.


                     {{1-2}}

Markdown ist eine Auszeichnungssprache für die Gliederung und Formatierung von Texten und anderen Daten. Analog zu HTML oder LaTex werden die Eigenschaften und Organisation von Textelementen (Zeichen, Wörtern, Absätzen) beschrieben. Dazu werden entsprechende "Schlüsselworte", die sogenannten Tags, verwendet.

Markdown wurde von John Gruber und Aaron Swartz mit dem Ziel entworfen, die Komplexität der Darstellung so weit zu reduzieren, dass schon der Code sehr einfach lesbar ist. Als Auszeichnungselemente werden entsprechend möglichst kompakte Darstellungen genutzt.

# Überschrift

__eine__ Betonung __in kursiver Umgebung__

+ Punkt 1
+ Punkt 2

Und noch eine Zeile mit einer mathematischen Notation $a=cos(b)$!

----------------------------------------------------------------------------

Überschrift

eine Betonung in kursiver Umgebung

  • Punkt 1
  • Punkt 2
Und noch eine Zeile mit einer mathematischen Notation $a=cos(b)$!

Eine gute Einführung zu Markdown finden Sie zum Beispiel unter:

Mit einem entsprechenden Editor und einigen Paketen macht das Ganze dann auch Spaß.

  • Wichtigstes Element ist ein Previewer, der es Ihnen erlaubt "online" die Korrektheit der Eingaben zu prüfen
  • Tools zur Unterstützung komplexerer Eingaben wie zum Beispiel der Tabellen (zum Beispiel für Atom mit markdown-table-editor)
  • Visualisierungsmethoden, die schon bei der Eingabe unterstützen
  • Rechtschreibprüfung (!)

                             {{2-3}}

Allerdings vermisst Markdown trotz seiner Einfachheit einige Features, die für die Anwendbarkeit in der (Informatik-)Lehre sprechen:

  • Ausführbarer Code
  • Möglichkeiten zur Visualisierung
  • Quizze, Tests und Aufgaben
  • Spezifische Tools für die Modellierung, Simulationen etc.
void setup() {
  Serial.println("Hello stuff.");
}

void thing(char i) {
  switch(i) {
  case 0: Serial.println("a pear"); break;
  case 1: Serial.println("an apple"); break;
  case 2: Serial.println("an elephant"); break;
  case 3: Serial.println("an arduino"); break;
  }
}

void loop() {
  Serial.print("here's ");
  thing(random(4));
}

@AVR8js.sketch

??Simulation: Noninverting Amplifier

Eine Reihe von Einführungsvideos findet sich unter Youtube. Die Dokumentation von LiaScript ist hier verlinkt


Trotz Simulation und Virtuellem ...

... braucht es aber auch immer etwas zum anfassen.

Blick hinter eine Arduino-Anwendung

Generelles Engagement

  • Stellen Sie Fragen, seien Sie kommunikativ!

Hinweis auf das OPAL Forum!

  • Organisieren Sie sich in Arbeitsgruppen!

Hinweis auf Repl.it

Hinweis auf ThinkerCAD

  • Bringen Sie sich mit Implementierungen in die Veranstaltung ein.

Und wenn Sie dann immer noch programmieren wollen ...

Dann wartet das racetech Team auf Sie ... autonomes Fahren im Formular Student Kontext.

WALL-E

Hausaufgabe

  • Legen Sie sich einen GitHub Account an ... und seien Sie der Erste, der einen Typo in den Unterlagen findet und diesen als Contributor korrigiert :-)