Mikrocontroller 3
Herz einer jeden Computeranlage ist die Central Processing Unit, so auch bei einem Mikrocontroller. Hier wird das eigentliche Programm abgearbeitet. In den Urzeiten liefen diese mehr der Reihe nach ab. Werte
wurden dem Speicher oder einer Eingabe-Einheit entnommen, miteinander verknüpft und wieder ausgegeben. Heute geschieht das alles eher ereignisorientiert. Verschiedenste Ereignisse erfordern Reaktionen,
häufig sogar gleichzeitig.
Die einfachste Form der Programmierung hat die Bezeichnung 'Assembler'. Hier sind die Befehle zwar 1 zu 1 in Maschinensprache umsetzbar, aber noch einigermaßen lesbar. Will man also die maximale
Geschwindigkeit eines Systems optimal ausnutzen, dann ist ein Assembler die richtige Wahl. Allerdings hat dieser auch einige Nachteile. So repräsentiert ein Assembler immer nur den Befehlssatz dieser
spezifischen CPU, der Quellcode kann also kaum auf andere Typen übertragen werden. Außerdem sind schon für geringe Anforderungen viele Programmschritte nötig, was den Code schwer lesbar und damit
fehleranfällig macht.
8 Bit | 256 Adressen |
16 Bit | 65.536 Adressen |
32 Bit | 16.777.216 Adressen |
64 Bit | 4.294.967.196 Adressen |
So spannend vielleicht Motordaten für den Ingenieur sein mögen, der Computer speichert sie ohne Emotionen eine nach der anderen ab. Wichtigstes Bindeglied zur Welt des Ingenieurs ist die Adresse. Bei bis
zu 64 Bit breiten Adressräumen müsste man sich in über 4 Mrd. Adressen orientieren. Die Daten sind verloren, wenn nicht klare Ordnungsstrukturen vorgegeben sind. Was der Ingenieur als zumindest
zweidimensionales Diagramm sieht, speichert der Rechner hintereinander ab.
Nein, heutige Programmierung von Mikrocontrollern erfolgt eher mit dem Gegenteil von Assembler, also einer Hochsprache, z.B. einer Erweiterung der Programmiersprache C. Sie basiert auf der Vehicle
Distrubuted EXecutive, die 1988 als Zusammenschluss französischer Hersteller gegründet wurde und 1994 mit der ein Jahr zuvor gegründeten Organisation führender deutscher Hersteller Offene Systeme und
deren Schnittstellen für die Elektronik im Kraftfahrzeug verbunden wurde.
Zu OSEK/VDX gehört auf jedem Mikrocontroller ein kompatibles Betriebssystem, OSEK Operating System genannt. Dies ist je nach Hardware völlig verschieden, garantiert aber, dass in der OSEK-Sprache
geschriebene Anwendungen lauffähig sind, egal, ob es sich z.B. um einen 16- oder 32-Bit Mikrocontroller handelt. Überführt wurde das ganze Projekt inzwischen in die 2003 gegründete AUTomotive Open
System ARchitecture. Daran sind 2009 schon 170 Firmen beteiligt.
Inzwischen wird die am Ende der Entwicklung und diverser Tests durch den Debugger erstellte Programmversion genau wie das Betriebssystem des Mikrocontrollers im ROM gespeichert. Übergriffe auf dessen
Speicher sind somit ausgeschlossen. Multitasking als Ergebnis der Ereignissteuerung ist schon immer eine Anforderung gewesen. Wichtig ist es, die auf Ereignisse reagierenden Prozesse (Tasks) unabhängig
voneinander zu machen.
Solange im Bereich der Mikrocontroller auch hardwaremäßig multitaskingfähige Prozessoren nicht üblich sind, muss der Prozessor zwischen einzelnen Tasks hin- und herschalten (Scheduling). Man sagt, die
Tasks werden quasiparallel bearbeitet. Jeder für sich hat seinen sequentiellen Ablauf (Befehle der Reihe nach). Interessant sind Parallelen zum Bus, wo ebenfalls zu einer bestimmten Zeit immer nur ein einziger
Teilnehmer Zugriff hat. Wieder gibt es Rangfolgen für die Wichtigkeit von Tasks, die während der Entwicklung festgelegt und diesmal mit Hilfe des Schedulers durchgesetzt werden.
|