Wiki page
[About] by
hothing
2017-07-04 07:48:18.
D 2017-07-04T07:48:18.655
L About
N text/x-markdown
U hothing
W 7245
# MaRTE OS
Minimal Real Time Operating System for Embedded Applications
Version 2.0 - Feb 2017
Copyright (C) 2000-2017 Universidad de Cantabria, SPAIN
Authors: Mario Aldea Rivas aldeam@unican.es
Michael Gonzalez Harbour mgh@unican.es
## Introduction
MaRTE OS is a real-time kernel for embedded applications that follows
the Minimal Real-Time POSIX.13 [POSIX] subset. Most of its code is
written in Ada with some C and assembler parts.
It allows software cross-development of Ada and C applications using
the GNU compilers Gnat and Gcc. In particular in the case of Gnat the
Run-Time Library (GNARL) has been adapted to run on our kernel. Remote
debugging of applications is also possible using the GNU debugger gdb.
MaRTE OS supports two target architectures: x86 and Raspberry Pi
(models 1 and Zero).
For the x86 architecture the MaRTE OS the cross environment is formed
by a PC running Linux as "Host" and a bare x86 board as "Target", both
systems connected by and Ethernet LAN (for application booting) and a
serial line (for remote debugging).
MaRTE OS is developed by the Group of "Ingenieria Software y Tiempo
Real" of the Department of "Ingenieria Software y Electronica" of the
University of Cantabria. It is not a finished product, but we share it
hopping it can be useful for educational or experimental purposes.
MaRTE OS is available under the GNU General Public License.
## Functionality Implemented
MaRTE OS implements the following POSIX functionality:
- Pthread Management (creation, finalization, attributes, ...).
- Priority scheduling (FIFO, Round-Robin and Sporadic Server
scheduling policies supported).
- Mutexes and Condition Variables.
- Semaphores.
- Signals (partially implemented).
- Clocks (monotonic and real time) and Timers.
- CPU time Clocks and Timers.
- Console I/O.
- Time Services: absolute and relative tasks and Pthreads suspension.
- Dynamic Memory Management.
This POSIX functionality support the whole gnat run time library, so
the current MaRTE OS implementation allows running complex C and Ada
applications which do not use a file system (limitation imposed by the
Minimal Real-Time POSIX.13 subset).
Apart from the POSIX standard functionality supported, in MaRTE OS we
have implemented some other features we consider very interesting for
real-time systems programmers:
- Application-Defined Scheduling:
MaRTE OS includes application program interfaces (API) that enables
Ada and C applications to use application-defined scheduling
algorithms in a way compatible with the scheduling algorithms
defined in POSIX and in the Ada 95 Real-Time Systems Annex. Several
application-defined schedulers, implemented as special user tasks,
can coexist in the system in a predictable way.
- Interrupts Management at Application Level:
MaRTE OS offers to Ada and C programmers an API that allows dealing
with hardware interrupts in an easy way. Basically this API offers
operations to: enable and disable hardware interrupts, install
interrupt handler procedures and put tasks or threads waiting for a
hardware interrupt.
- Addings to POSIX:
Ada binding for CPU-Time clocks and access to the thread-specific
data form a thread different from the owner.
## Development Environment
MaRTE OS works in a cross development environment:
Host Target
+-------------------+ Ethernet +-----------------+
| Linux |--------------------------------| |
| Gnat | (For booting purposes, | i386 or above |
| gcc | involves dhcpd and nfsd) | Floppy Disk |
| gdb | | |
| MaRTE OS | | Doesn't need HD |
| dhcpd (or bootpd) | RS-232 | Doesn't need OS |
| nfsd |--------------------------------| |
+-------------------+ (For debugging purposes, +-----------------+
gdb is used)
## Distribution Directory Overview
This is the top level of the MaRTE OS directory structure. The following
is a description of the files and directories you will find in it:
- INSTALL: Installation instructions.
- README: This file.
- arch: link to the directory of the active architecture ('linux_arch/',
'linux_lib_arch/' or 'x86_arch/')
- arch/drivers/: code for some device drivers.
- arch/include/: POSIX C header files.
- arch/libmc/: libc implementation.
- examples/: some simple program examples.
- COPYING: The license used to distribute MaRTE OS code
- kernel/ : source code for the hardware independent part of the kernel.
- lib/: link to the object files and libraries directory of the active
architecture ('objs/linux_lib_objs/', 'objs/linux_objs/' or
'objs/x86_objs/').
- gnat_rts/: GNAT packages modified for MaRTE OS.
- marte_ug.html: MaRTE OS User's Guide.
- minstall: main installation script.
- misc/: miscellany of utility packages.
- objs/: object files and libraries directory.
- posix5/: POSIX.5 packages (POSIX Ada bindings). Based on the Florist
[Florist] implementation.
- sll/: singly linked lists used by the kernel.
- tasks_inspector/: a tool to analyze graphically the execution flow of
a finished application.
- utils/: compilation utilities.
- x86_arch/: source code for the hardware dependent part of the kernel
for 386 PC or above.
- rpi_arch/: source code for the hardware dependent part of the kernel
for Raspberry Pi 1 and Zero.
- linux_arch/: source code for the hardware dependent part of the kernel
to execute MaRTE OS as a Linux process.
- linux_lib_arch/: source code for the hardware dependent part of the kernel
to execute MaRTE OS as a Linux process with access to the Linux GLIBC
library (including filesystem functions for example).
- xtratum_arch/: source code for the hardware dependent part of the kernel
for the XtratuM hypervisor.
- tests/: a set of regression tests for MaRTE OS.
- lang_support/: includes support libraries for other languages. For example,
the runtime for C++ applications (libsupc++.a) and the C++ STL port library
taken from uSTL.
## References
[POSIX] IEEE Std. 1003.13-1998. Information Technology -Standardized
Application Environment Profile- POSIX Realtime Application
Support (AEP). The Institute of Electrical and Electronics
Engineers, 1998.
[Florist] http://www.cs.fsu.edu/~baker/florist.html
[uSTL] http://ustl.sourceforge.net/
Contact Address: MaRTE OS Internet site:
aldeam@unican.es http://marte.unican.es
Department of Ingenieria Software y Electronica
Group of Ingenieria Software y Tiempo Real
University of Cantabria
Z 5ce6fa638584aa3dcb5c7fb6e62239ec