Il kernel del software è il sistema operativo proprio. Questo software deve essere curato al massimo come anche le procedure di test. Gli studenti Andreas Parteli, Thomas Gummerer e Nicolo Vattai a partire dell' estate 2008 programmano un sistema operativo proprio per soddisfare le esigenze di questo satellite. Con l'estate 2009 altri studenti portano avanti questo compito difficile.

Come micro viene usato il MC9S12XEP100 della Freescale Motorola. Otto porte seriali, idipendentemente configurabili, 24 ingressi analogici con 12 Bit di risoluzione dimostrano che questo micro è il top della serie HC12.

4 Megabyte di flash interno e 1 Megabyte di RAM interno. Per parametri sono 256 KByte di EEPROM a disposizione.

Difficile trovare un RTOS adeguato per questo micro, sopratutto guardando le necessità del nostro satellite.

Il software per il nostro satellite diviso in blocchi:

  1. sistema operativo (kernel)
  2. gestione distribuzione power (hardware nostro)
  3. gestione ACS in tempo reale (reaction wheel + 3 torquer)
  4. gestione ricevitore GPS (DLR Oberpfaffenhofen)
  5. gestione magnetometro (hardware nostro con sensore Honeywell)
  6. gestione magnetometro ZARM
  7. gestione coarse sun sensor (6 piccoli pannelli solari, hardware nostro)
  8. gestione fine sun sensor (sensore a 4 quadranti, hardware nostro)
  9. gestione payload telescopio a raggi X (MPE di Garching)
  10. gestione payload ricevitore AIS (LuxSpace di Lussemburgo)
  11. gestione payload camera CCD ad alta risoluzione
  12. gestione payload camera CMOS
  13. TMTC connessione radio nella banda S
  14. TMTC connessione radio nella banda UHF
  15. gestione Beacon sui 2 metri
Tutti i blocchi ad eccezione del primo devono essere sostituibili da terra.

Tutti i blocchi vengono dotati con quattro bytes di controllo CRC per garantire il contenuto.

Il satellite ha poi diversi modi di operare:
  1. stabilizzazione
  2. funzionamento normale
  3. emergenze varie
Un sistema operativo normalmente lavora con tasks gestiti da uno scheduler. Ogni task ha poi il suo stack e lo scheduler con il sistema di interrupt interrompe un task, salva i registri sullo stack e fa partire il prossimo task. Un task che si blocca viene interrotto dallo scheduler e non compromette gli altri tasks. Per sviluppare un sistema operativo del genere ci vogliono anni di programmazione e di test. Un sistema operativo generale deve soddisfare le piu svariate esigenze di utenti, sul satellite abbiamo esigenze proprie.

Adotteremo un sistema operativo molto semplice, efficace ed in definitiva anche sicuro. Ogni blocco software inizia ad un indirizzo che combacia con l'inizio di un blocco flash della memoria del controllore. Ad ogni blocco software viene dato il suo range di RAM per le variabili globali. La struttura interna di un blocco software viene costruito con una state machine. Se la variabile che gestisce la state machine ha il contenuto zero, allora viene inizializzato questo blocco.

Il tempo a disposizione per ogni modulo della state machine non dovra superare al massimo mezzo millisecondo, in questo modo con un tempo intermedio di 300 microsecondi non si dovrebbe superare i cinque o sei millisecondi per il loop totale. Un interrupt di 100 microsecondi sorveglierà che nessun modulo di una state machine supera il tempo massimo. Prima di chiamare un module viene caricato una variabile di timeout. Se viene superato un tempo massimo il satellite inizia sempre un modo di emergenza.