MIA Platform: sMart Integrated Avionics
Traditional approaches in flight software for space applications have two fundamental flaws: an excess of complexity and an enormous difficulty of reuse. This happens because traditional space software is generated ad hoc for each particular mission, which causes a high interdependence between components. This approach also usually leads to custom external and internal interfaces very tightly-coupled with each other, as well as to custom data formats and protocols. It also requires extensive internal knowledge of previous missions in order to tackle the design of the next one. In summary, traditional approaches for space software development tend to have very high development times and enormous costs in each mission, which are not mitigated enough from mission to mission.
The MIA (sMart Integrated Avionics) platform is a generic execution system for avionics and space applications that is being developed in the context of the SAFEST project. MIA has been conceived and designed to solve the abovementioned issues by providing modularity and standardization. It is based on a layered architecture of configurable software components which provide generic functionalities and services aimed at the necessities of flight software.
These software layers are executed on top of a hardware processing device, which is also part of the MIA platform, and can be adapted to different models and manufacturers. MIA supports and is especially suited for system-on-chip devices, which contain both processing cores to execute embedded software and some FPGA fabric for configurable circuitry. This way a mission planner can allocate functionalities to either the software or the FPGA depending on the project’s needs.
On top of the hardware four layers are deployed, each with a specific purpose:
- Time and Space Partitioning: this layer is based on XtratuM/NG hypervisor that provides a virtualization of the underlaying hardware for the upper layers. This virtualization allows the developer to integrate separate and independent software partitions into the platform. Partitions are useful to isolate independent functionalities in separate environments, which is highly desired when software of different criticality levels co-exists in a mission. The hypervisor guarantees that one partition does not affect the execution flow of other partitions in any manner.
- OS: this layer contains an optional operating system. MIA is designed to support different types of real-time operating systems as well as baremetal partitions with no OS. Part of the OS layer consists in a board support package (BSP) to adapt to each particular hardware layer (or the hypervisor).
- Services layer: this layer provides common services and functionalities that the applications can use. These functionalities are especially suited for flight and space necessities, are wrapped below a specifically defined application programming interface (Sener Service Layer API, SSLA). At the moment, most MIA services are based on NASA’s core Flight System (cFS) which includes standard features for time management, scheduling, event handling, TM/TC, task execution, etc.
- Application layer: this layer contains the different applications that provide the mission-related functionalities and comply with mission requirements. Since these apps use the platform services below, they do not have to re-implement common functionalities in each successive mission.
As can be seen by this description, the MIA platform approach is especially aimed at solving the reuse problem in traditional space software. In MIA, when creating the SW for a particular mission, only mission-related functionalities have to be developed, relying on the platform for all core and background services. This separation is achieved by having a standardized application programming interface (API) provided to mission developers, which allows them to generate highly modular applications that are easy to re-use from mission to mission. Over time, this can lead to a collection of developed apps readily available for inclusion in future missions, analogously to a space Appstore.
Some of the main advantages of using the MIA platform in space missions are:
- Reduction of the software development costs
- Faster development and testing time
- High configurability of the platform to adapt to different mission requirements or levels of criticality
- Built-in integration with different hardware platforms with support for FPGA-allocated functionalities