The heart of the software is the operating system.

Diese Software muss besonders sorgfältig entwickelt werden und auch
die Tests müssen umfangreich durchgeführt werden.
Die Informatikschüler Andreas Parteli, Thomas Gummerer und Nicolo Vattai
arbeiten seit dem Sommer 2008 intensiv an der Entwicklung eines eigenen Betriebssystems.
Ab dem Sommer 2009 wird diese schwierige Aufgabe von anderen Schülern weiter getragen.

Der eingesetzte Mikrocontroller ist der MC9S12XEP100 von der Firma Freescale Motorola.

Acht serielle Schnittstellen, unabhängig konfigurierbar, sowie 24 analoge Eingänge
mit 12 Bit Auflösung zeigen dass dieser Controller die Spitze der HC12 Serie ist.

4 Megabytes internes Flash und 1 Megabyte internes RAM.
Für Parameter stehen weitere 256 Kilobytes zur Verfügung.

Es ist sicherlich schwierig ein geeignetes Betriebssystem (RTOS) für diesen Controller
zu finden, besonders wenn man an die Besonderheiten unseres Satelliten denkt.

Die Software unseres Satelliten in Blöcke unterteilt:

  1) Operating system (Kernel)
  2) Program for the power managment(our hardware)
  3) Program ACS (Lagestabilisierung) at real time  (1 reaction wheel + 3 torquer)
  4) Program für den GPS-Empfänger (DLR Oberpfaffenhofen)
  5) Program Magnetometer (unsere Hardware mit Sensor Honeywell)
  6) Program Magnetometer ZARM Bremen
  7) Program coarse sun sensor (6 kleine Solarzellen, unsere Hardware)
  8) Program fine sun sensor (Vierquadrantensensor, unsere Hardware)
  9) Program Payload Röntgenteleskop  (MPE Garching)
 10) Program Payload AIS-Empfänger    (LuxSpace Luxemburg)
 11) Program Payload hochauflösende CCD-Kamera
 12) Program Payload CMOS-Kamera
 13) TMTC Funkverbindung im S-Band
 14) TMTC Funkverbindung im UHF-Band
 15) Programm Beacon auf 2 Meter VHF

 Sämtliche Programmteile, außer dem ersten müssen auswechselbar sein.

 Sämtliche Programmteile werden mit einem 4 Bytes Kontrollcode CRC ausgestattet.

 Der Satellit arbeitet in verschiedene Modi:

 1) Stabilisierung
 2) Normalfunktion
 3) verschiedene Notsituationen

 Ein Betriebssystem arbeitet normalerweise mit Tasks verwaltet von einem Scheduler.
 Jeder Task hat seinen Stackbereich und wenn der Scheduler durch einen Interrupt den
 laufenden Task unterbricht, so werden die Register auf diesen Stack gespeichert worauf
 der Scheduler den nächsten Task startet.
 Sollte sich ein Task blockieren, so wird er vom Scheduler unterbrochen ohne dass die
 weiteren Tasks in Mitleidenschaft gezogen werden.
 Um so ein Betriebssystem zu entwickeln braucht es Jahre an Programmierzeit und für
 die Tests.
 Ein Betriebssystem muss auch die unterschiedlichsten Aufgaben der Anwender erfüllen.
 Auf unserem Satelliten haben wir aber spezielle Anforderungen.

 Wir verwenden ein einfaches Betriebssystem, welches effizient und doch sicher ist.
 Ein jedes Anwendungsprogramm oder Softwareblock beginnt an einer Blockadresse des
 internen Flashs des Controllers. jedes Anwendungsprogramm erhält auch einen
 fixen Bereich im internen RAM für die globalen Variablen.

 Die interne Struktur eines Anwendungsprogramms wird mit einer Schrittkette
 (state machine)aufgebaut.
 Hat die Variable, welche die Schrittkette verwaltet, den Wert Null, so wird
 dieser Softwareblock initialisiert.

 Die zur Verfügung stehende zeit für einen Schritt einer solchen Schrittkette darf
 die halbe Millisekunde nicht überschreiten. Rechnet man nun mit einem Mittelwert
 von 300 Mikrosekunden je Durchgang, so dürfte man die fünf oder sechs Millisekunden
 für die Hauptschleife nicht  überschreiten.

 Ein Interrupt im Raster von 100 Mikrosekunden überwacht, dass kein Durchkang einer
 Schrittkette die Maximalzeit überschreitet. Eine Variable mit einem Timeout-Wert wird
 vor jedem Aufruf eines  Anwenderprogramms geladen.
 Wird eine Maximalzeit überschritten, das heißt ein Programmteil hängt, so wird der
 Satellit immer ein Notprogramm aufrufen.