Early-bird deadline in:

Use FRUCT discount code at booking.com

Learn more about our Virtual Reality project

You are here

R&D in Software For Embedded Systems

Network real-time services

Linux offers embedded designers an inherently modular operating system that can be easily scaled down to compact configurations suitable for embedded designs. Plus, Linux is the fastest growing server operating system and is rapidly moving into embedded applications.

For chips manufactured by ELVEES with built-in SpaceWire channels software has been developed to work with in the OS Linux environment:

OS Linux architecture with SpaceWire services

  • Drivers for SpaceWire channel controllers, which allow to use of SpaceWire channels (links) as regular network devices. Each SpaceWire channel is represented by the Network Services as regular linux network device with its own IP address, which supports data transmission over TCP/IP. User applications are provided with standard POSIX socket interface, so a lot of network applications can be used over SpaceWire without any change. Among them http, ftp, telnet clients and servers, and a wide range of standard utilities for network configuration and diagnostics, as ifconfig, route, ping, nuttcp etc.
  • Time Access Service

    Time Access Service, that provides applications with a consistent interface to a local time source that is source that is maintained to be synchronised to the onboard time source master. The time values provided by this service might typically be used by applications to schedule some operations, such as the acquisition of an image or to time stamp locally generated telemetry data. This service corresponds to the standard CCSDS SIOS «Time access service».

  • Distributed interrupts service

    Interrupt-Code represents a system signal request. It is issued by a node link that will be considered as the source node for this interrupt (Interrupt Source). The Interrupt-Code is broadcasted to find an Interrupt Handler node. It is distributed over the network to all other nodes. An Interrupt-Code should be accepted for handling in some node of the SpaceWire network, which will be called the Interrupt Handler. The host of the node is supposed to implement some interrupt processing routine. One of 32 interrupt request signals (interrupt source identifiers) could be identified by the Interrupt-Code. Distributed Interrupts Service (DIS) uses a POSIX real-time signal to inform user applications about the interrupt or exception that has been set somewhere in the distributed system. Applications have to register at the DIS service and define the interrupt handler to receive the particular real-time signal.


    The Consultative Committee for Space Data System (CCSDS) proposed standart for Packet Transfer Protocol. The CCSDS Packet Transfer Protocol has been designed to encapsulate a CCSDS Space Packet into a SpaceWire packet, transfer it from an initiator to a target across a SpaceWire network, extract it from the SpaceWire packet and pass it to a target user application. The protocol was implemented as a kernel module for OS Linux. As TCP / IP protocol stack, it performs the function of the transport and network levels of the OSI model. Due to this, it is possible to access the functions of the protocol using a standard BSD sockets interface.

Parallel programming and HW/SW Co-design for Many-Core SoC

Unified MPSoC design and programming flow

We establish new unified methodology, model-based languages and tools for design and programming of MPSoC-based embedded systems: from algorithms design to embedded system software/ hardware complex ready to market. Unified interconnection interfaces and protocols will fulfill the technology platform requirements of local application-specific parts of the heterogeneous multi-domain embedded systems. Unification of software design and development with modeling and simulation tools will significantly decrease systems time-to-market.

  • Model-based rapid platform-independent MPSoC software development: self-adapting libraries, model-based formal verification, high-level algorithmic simulation and system level modeling;
  • Application domain specific MPSoC architecture development: cores synthesis, IP-blocks selection, communication topology and architecture, system-level and RTL modeling;
  • Self-adapting embedded systems based on MPSoC development: interconnection synthesis and modeling, multi-layer protocol development and verification, multi-protocol system aggregation.


Adaptive libraries for multi-core processors and MPSoCs

  • SAMPL project (Self-Adapting Matrix Processing Library)

The flowchart of SAMPL

Matrix multiply performance

It is an initiative, whose goal is in reducing the cost of porting high-performance library between different MPCoS’s. SAMPL is a so-called “library writer”, tuning and adaptation of a subprogram is based on the formal ground developed. The whole scheme contains macro-flow graph generator, static resource allocator and C-code generator.




Digital Communication Network Simulator

  • DCNSimulator project (Digital Communication  Network  Simulator)

DCNSimulator main steps

It is the framework for design, system-level simulation and analyzing of various digital systems. In DCNSimulator, the system consists of objects which are defined under your targets: they can be devices, applications, protocol layers, certain functional units and so on. The framework is implemented in C++ and based on Qt and SystemC. There are three main steps you do with DCNSimulator:

For network design, DCNSimulator provides a plug-in for MS Visio, so you can simply draw a network from devices and channels (or, generally speaking, from objects and links between them) and edit parameters of network objects. Besides this, systems can be described as usual C++ projects, for example, in Visual Studio. During the simulation, in the special console you can control parameters and internal components of simulated objects (for example, you can check and even change a content of device buffers and registers).

DCNSimulator SpaceWire Model Library

DCNSimulator SpaceWire Model Library

Currently, with DCNSimulator we do system-level simulation of SpaceWire networks, and for that we’ve implemented DCNSimulator SpaceWire Model Library. The library completely implements all levels of the standard, excluding the signal and physical ones: it supports a channel noise imitation and random bits injection, all character types, link initialization, flow control, errors detection, wormhole routing with any addressing type, time-codes and interrupts mechanisms, provides basic program models of a terminal node, routing switch and link, can simulate different protocols (RMAP, STP, etc) and provides API for every device to make and investigate applications.

DCNSimulator Results Analyzing

Results analyzing

After simulation, the network can be analyzed in detail at level of bits, characters, packets or particular events. You can see all bits transferred through the channel and find out what bits were corrupted and why; you can analyze propagation of data packets, time-codes and interrupts; you can see where and when some timeouts happened, and so on. Statistical information is also gathered: maximum, minimum, average and full time of data packets and control codes propagation; workload of every device and channel caused by data and control codes flow.


SpaceWire network administration

SPiNSAW project

SPiNSAW screenshot

SpaceWire Network System Administrator Workspace(SPiNSAW) is application for local and remote routers tuning and configuration with graphical user interface.

SPiNSAW gives an opportunity for tuning any available parameters of any router in network, for state monitoring and for setting work modes of МСК-01 (ASIC, FPGA), included to network.

SPiNSAW works on PC under OS Windows and Linux. For local router configuration it should be directly connect over COM-port (or USB-COM adapter) to PC with running SPiNSAW. If case of remote router RMAP could be used.

SPiNSAW is based on function library. This library gives a full control of router. Graphical user interface is only comfortable visual method to call necessary function of the library. The library could be used without GUI to write program for monitoring and administration of SpaceWire routers in em-bedded systems. The library was developed on Standard C and C++ and can be used to create new applications. It is possible to use the library for POSIX-systems which have a C compiler and sup-port COM-port. The SpiNSAW GUI is developed on crossplatform QT library

SPiNSAW can work in two modes: simple and advanced.

Simple mode doesn’t demands special knowledge of router internal organization. In this mode basic router programmable components such as routing table and transfer and receive speed registers are available. In advanced mode all soft-ware available components could be read and write. In the simple mode user can:

Using of SPiNSAW advanced mode demands understanding of internal router ar-chitecture and meaning of the software available components. In this mode user have a possibility to monitor current state of each router in network in details. Advanced features:

Current router setting could be saved to file. Later it could be loaded from a file and apply (automatically or manual).

SPiNSAW is multifunctional application. It is suitable not only for network administration but for device testing, developed systems and also distributed algorithm testing too.