The ELESOFTROM Company manufactures software for the embedded systems in various scale: from microcontroller based solutions to integrated mini-pc platforms. Depending on requirements, developed software can be stand-alone ('bare metal') or work in operating system (prefered Linux).

Software development
Linux for embeded systems
Fixing embeded software
Profiling and optimization
Software quality and reliability evaluation
Consulting services
Specifications, requirements and models
Multitasking software design for embedded systems

We develop firmware for the embedded systems by the implementation in following languages: C, C++ and assemblers of various types of architectures (e.g. x86, ARM, AVR, msp430, i8051, etc). We carry out whole software manufacturing process, begining from requirements and models building, through architecture design, development, deployment and maintenance. According to customer needs and available platform resources, the firmware may be intended to run as stand-alone or work under control of the operating system. If the project requires use of the operating system (Linux)s prefered. We can also write accompanying software for the PC (for Windows or Linux) that assists the embedded system, and user application for control the devices and other functionalities. More about it


The ELESOFTROM Company has developed multithreading, preemptible, Real-Time Operating System (RTOS) for ARM Cortex-M3 and Texas Instruments msp430/msp430x microcontrollers. The desing and development of the system were driven by an idea of keeping low the load introduced by the system itself. The most significant work was done in optimization and coding of the effective context switching routine. This is important for having fast system response on external events and efficient inter-thread signalling. Version for ARM Cortex-M3 was carefully tested on STM32L162 microcontroller (full code coverage achieved by test set, total more than 400 tests were performed). More information about DioneOS

The ELESOFTROM company is experienced in creation of embedded Linux adjusted to hardware and user needs. Since a few years we improve our skills in development and debugging kernel mode drivers as well as making modifications of in the system items and the kernel. We use advanced testing and debugging methods that are required for building high quality and reliable software. We take care of effectivness and efficiency of developed software, that is especially important in the real time domain.
If it is needed, we can build and provide a toolchain (including cross-compiler) for required processor architecture, that works under Linux or under Windows with Cygwin environment installed.

We can perform debugging and analysis of the complex problems in the software of existing systems. Such problems can be manifested by sudden reset or hanging the device. Mostly they happen rarely and unexpected, so they look like non-deterministic issues (nevertheless they degrade the reliability of the system). This leads to difficulties in finding a cause of the error, so they are impossible to be repeated on demand for debugging purpose. Such type of problems, if they are not hardware related, are very offen a consequence of incorrect multithreading servicing or neglecting the concurrent access to shared data. The ELESOFTROM has analysing and testing methods that are efficient in such cases. The methods were evolved during design and development of many real time embedded systems. More about it.

We carry out the analysis and in-system verification of the execution time parameters. Using the results of investigations, we perform a code profiling oriented on shorter execution time. For specific demands we can optimize or develop from the scratch the critical parts of the code. If it is required they can be implemented in assembler language.

We evaluate structure and architecture of supplied source code. The analysis of the existing code is a basis for the assesment of correctness of the applied solutions and their impact on reliability. We can test the software if it uses proper multithreading techniques (i.e. guarding shared variables, inter-thread synchronization). We are testing and debugging the software with complex errors that are rare and difficult to repeat.

We support companies in the design process and the development of the software. This help is provided by consultating services that are focused on selected, single issues and difficulties encountered in a firmware development. The service may be useful on different levels of the system building: from a choice of technologies for specific project, to final implementation in selected programming language.

In the process of an user interview, we can create documents that define the user requirements and the system constrains. This description is subject to further analysis and correctness check on the system level. In order to create well-defined specification we build the system model (expressed in UML). These documents are the basis for selection of the proper technologies and the design of the architecture. This type of documentation is the input for the design phase, it can be used in the project management for advance check and to verify if the project is finished in the means of the requirements.

We design software for the embedded systems taking into account multitasking issues and real-time constrains. We analyze dependencies between concurrent threads and we use proper synchronization as well as guarding for access to common resources. In the design, the real-time requirements (e.g. response time) are translated into the system constrains like maximum interrupt latency and the CPU usage. The real parameters may be later verified in the preliminary tests performed on hardware.