MaRTE OS (Minimal Real-Time Operating System for Embedded Applications) is a real-time operating system that implements the services defined in the POSIX.13 standard. MarteOS is a real-time operating system for embedded applications that follows the minimum real-time POSIX .13. The project is developed by the Computer and Real Time Group at the University of Cantabria, although there are also collaborators in different places.
It allows to run embedded applications written in Ada and C. Here are its main features:
- Based on the AdaCore GNU toolchain.
- Implements the real-time appendix of Ada2005:
- Pthreads, mutex, condvars.
- All of these services have a defined response time (including memory allocation with TLSF).
- Available under the GNU General Public License 2.
This operating system works either directly on PC or emulator.
The development environment is based on the GNU compilers GNAT, GCC and GCJ. Most of its code is written in Ada with some C parts and assembler. In general, the objective of the POSIX standard is to provide an API to applications to abstract them from the operating system below, in order to facilitate migration between the different operating systems that conform to that standard. Specifically, POSIX.13 is oriented to real-time application environment profiles, as is our case, and constitutes a reduced version of POSIX.
Currently, MaRTE OS offers support for applications written in C or Ada. The kernel can be compiled together with these applications to function as a Linux process, or to be run directly on some processors of the Intel X86 family (486, Pentium I and Pentium II). The final objective of this project is the total migration of MaRTE OS to the ARM7tdmi microprocessor (arranged in the S3C44B0X microcontroller), in order to run applications under this operating system.
MaRTE OS is made to be compiled from Linux. That is why this last operating system has been chosen as the basis for the generation of the entire development environment. Since MaRTE OS is made in C and Ada it has been necessary to develop cross-compilation tools (GCC and Gnat), so it has been possible to compile from Linux, hosted on a PC with an x86 family processor, applications that were later going to be run on a different processor (the ARM7tdmi). Once the cross development environment is obtained, the lowest level part of MaRTE OS could be programmed. This part is called "abstract interface with the hardware", and provides the rest of the operating system with an abstract view of the platform on which it is running.
The main task has therefore been to reprogram the routines of this interface (defined in a single file) satisfying its dependencies with the hardware. Using the peripherals provided on the board used (S3CEV40), the behavior specified for each of these routines has been achieved, which have to do with the loading/saving of some processor registers, disabling/enabling interruptions, timings, etc. Additionally, the initialization routines of the peripherals associated with the abstract interface with the MaRTE OS hardware have been implemented. In addition, some additional routines such as handling the reset interrupt are provided. Finally, a battery of tests consisting of the abstract interface with the hardware has been included, as well as some scripts that allow compiling all the tests. After compiling our applications in Linux and generating the corresponding executables it is necessary to transfer them to the board used. This provides an environment, called Embest, which offers facilities to load and debug our applications in the microcontroller that has been used. The Embest environment works under Windows.
Among the main features of the Mars OS kernel are:
- Supports mixed language applications in Ada, C and C ++ (experimental support for Java as well).
- It offers the services defined in POSIX .13: pthreads, mutual exclusions, condvars.
- All services have a limited time response (including dynamic memory allocation with TLSF).
- Individual memory address space shared by the multi-threaded application and Mars OS.
- Available under the GNU 2 General Public License.
- Based on the GNU AdaCore tool chain.
- Implements Annex Ada2005 Real Time.
Contributions by users
Some contributions by Mars OS users
Communication and middleware protocols
- PolyORB (DSA and CORBA) and GLADE for MaRTE OS x86 for equipment without Operating System with RT-EP.
- RT-WMP Real-Time Wireless protocol (UNIZAR).
- RT-EP protocol with a reserved bandwidth layer, distributed mutually exclusive (Mutex) algorithms, broadcast services.
- FRESCAN network protocol for CAN bus with reserved bandwidth and sporadic servers.
- DTM, FRESCOR Distributed Transaction Manager.
- MyCCM, OMG CCM (THALES).
- CAN bus
- Wireless ralink rt61
- SVGA, BTTV, Soundblaster 16
- Mouse, Keyboard, Joystick
- Ethernet drivers (intel eepro100, rtl8139, SiS900)
- Serial port driver
- I2C protocol, compass CMPS03 driver
- IDE disk driver (CompactFlash and HD) and FAT 16 filesystem
- Advantech Data acquisition and Digital IO cards drivers (PCM3718 and others)
- GPS Novatel ProPak driver
- P2OS driver (compass, sonar, odometer, motors)
- Yenta Cardbus
Core type: Real-time kernels
Project status: Available
Platforms: x86 ARM (on Raspberry Pi)
Company/Founder: Mario Aldea-Rivas and Michael González Harbor
Company/Developer: University of Cantabria
Licence: GNU General Public License version 2
Written in: Ada, C and Assembler
Website: http://marte.unican.es [archive]