KESO is a Multi-JVM for embedded devices and networks of micro
controllers. KESO builds on a standard
OSEK/VDX
or
AUTOSAR OS
operating system that provides scheduling and synchronization mechanisms to
support multiple tasks on one micro controller. It furthermore provides
notification mechanisms and a timer concept that allows the handling of timed
or cyclic events.
KESO is designed for static embedded systems. The static nature of the system
enables the use of analyzing techniques that allow the creation of a system
that is highly adapted to the Java applications. Because complicated mechanisms
such as a dynamic loader for Java classes are not required in such a system, we
can achieve code sizes that allow to run KESO on smallest embedded devices. To
avoid the interpretation of bytecode on the target controllers, the Java bytecode
is compiled to a native code binary image ahead of time.
KESO applications are developed in Java using a uniform programming model. There
is a single configuration for the system as a whole. Subsequent configurations
such as the configuration for the OSEK/VDX operating system are created automatically
by jino, the KESO building tool.
KESO provides a concept similar to the process concept found in modern operating
systems for personal computers. These units are called domains in KESO
and allow the safe co-existence of multiple tasks on the same micro controller.
These domains can communicate through a uniform portal mechanism that works
similar to Java Remote Method Invocation (RMI) or
Remote Procedure Calls (RPC). The conceptual design of KESO was inspired
by the Java operating system for personal computers
JX.
KESO allows for software-based replication of selected (critical) applications.
Replicas are spatially isolated from each other and co-located applications by
domains. An application-specific majority voter picks a sane replica or triggers
the state recovery of a malfunctioning component. The feature is fully automated
and just needs to be activated in the system configuration.
KESO has experimental support for controller networks, which allow domains to
be located on different nodes while providing a global view to the application.
These domains will be able to communicate via the portal mechanism just as
domains that are colocated on a micro controller. Since the location of a
domain is transparent to the application, a relocation or integration of tasks
within the controller network will boil down to a reconfiguration that does not
require a change to the applications. KESO backends are currently available and
ready to use for the following platforms:
JOSEK,
CiAO,
Trampoline OS,
Elektrobit ProOSEK (for TriCore) and
RTA-OSEK (for TriCore, untested).
KESO is unique in several aspects:
It is the first Multi-JVM for deeply embedded systems.
It provides OSEK/VDX API calls and system primitives to the (Java)
application developer, including service protection which is not provided by
OSEK/VDX operating systems.
It enables hardware drivers to be written in pure Java.
It provides a per domain configurable heap management strategy (garbage collector).
License / Download
KESO is distributed under the terms of the GNU Lesser General Public License, version 3.
KESO is available as a snapshot
(2012-06-13).
The Documentation area contains various information that should help you
getting started with KESO.
Stilkerich, Michael ; Lohmann, Daniel ; Schröder-Preikschat, Wolfgang: Gradual Software-Based Memory Protection
. In: ACM (Hrsg.) : Proceedings of the Workshop on Isolation and Integration for Dependable Systems (IIDS '10) (EuroSys 2010 Paris 13.04.2010). New York : ACM, 2010, S. -. - ISBN 978-1-4503-0120-6 (BibTeX)