The Engineering group develops two types of software: test software used to test the functionality of space instruments and embedded software which runs inside a scientific instrument.
Electrical Ground Support Equipment (EGSE) is a collection of tools which is used to control and test (a part of) a space instrument. Software is an important part of an EGSE; it handles communication with the instrument, processes data and performs automated test procedures.
An EGSE with corresponding software is needed by almost every project that develops hardware for a space instrument. Using the same software in all these projects avoids unnecessary duplication of effort and improves software re-use. To this end, SRON has developed a generic EGSE software system.
The core of the EGSE software is a C++ application running under Linux. It has a graphical user interface, based on the Qt toolkit. Support for specific hardware is implemented in separate modules, so called daemons, which run independent of the user interface. Additional components of the EGSE have been developed in Perl, Python, and IDL (Interactive Data Language). The EGSE is in redesign, in cooperation with industry, making more use of Qt and applying Google protocol buffers with more emphasis on Python scripting.
- Tele-Commanding (TC): There are two methods to command hardware through the EGSE. In the most straightforward case, the user manually sends parameters to any of the connected hardware devices by specifying the device, the parameter and the required value. The second, more advanced method is to run a Python script containing a predefined list of actions. Such a script can use all features of the Python language, including loops, if-then-else statements, and user interaction. A graphical interface can be built on top of the script, allowing users to choose parameters with just a click of the mouse.
- Plotting: A plot window can be attached to device parameters in order to plot data from the device in real time. Alternatively, a running script can send data to a plot. Plots can be strip-charts, XY-plots, histograms, or even 3-dimensional plots. A curve-fitting feature is available which can, for example, immediately calculate the full-width half-maximum of a Gaussian histogram.
- Housekeeping (Telemetry/TM): A housekeeping screen in the EGSE user interface presents a list of selected device parameters and their current values. Housekeeping items can be manually arranged for maximum viewability. Values in the housekeeping screen are periodically refreshed at a configurable rate. Safety limits may be assigned to each individual parameter. When a safetly limit is crossed, the EGSE gives a clear visual warning and optionally performs an automatic shutdown procedure to prevent damage to the equipment.
- Online analysis: The generic EGSE supports advanced online analysis through Python, with aid of Numpy and Scipy. Incoming data are analyzed by a custom script which may for example apply Fourier transforms, data fitting or filtering.
Scientific instruments for space often contain an embedded system; a small computer built into the instrument. The software running on the embedded system is responsible for controlling the instrument while it flies on a satellite. Embedded software is useful not only for space missions, but also for laboratory setups. For example, if a very quick response to an input signal is required, there may not be enough time to transfer the signal to a normal PC. An embedded system can typically respond to input signals in real-time.
LEON3 and ARM9
SRON uses an embedded platform based on the LEON3 or ARM9 microprocessor. The LEON3 processor has been developed specifically for space applications. Both LEON3 and ARM9 are available as a soft-core: a VHDL model which can be programmed into an FPGA. Embedded software engineering poses a few specific challenges, such as limited CPU speed and limited memory. For example, LEON3-based systems typically run at approximately 80 MHz, while normal PCs run at 2 GHz or more. The development of embedded software is done with C++ and RTEMS. RTEMS is a real-time operating system for embedded systems.