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. |
||