|
Die zentrale Software des Satelliten ist das Betriebssystem.
Sämtliche Programmteile werden mit einem 4 Bytes Kontrollcode CRC ausgestattet. Der Satellit arbeitet in verschiedene Modi:
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. |
||