Embedded Software

embedded sw

Compilers and Tools

RT-RK has a dedicated group of compiler engineers with a proven experience in this domain. The team can offer complete compiler from scratch development, based either on the RT-RK’s proprietary compiler solution or customization of the existing open source alternatives such as GCC or LLVM.

The team has been contributing some of the work to open source community, thus a few references are already available in the official repositories of the aforementioned compilers. Significant RT-RK contributions (complete ports, backend work, assembler, JIT, other) can be seen in the rapidly growing community of LLVM. This compiler knowledge has been leveraged in different fields to debug and improve other technologies such as Renderscript (LLVM/Android) and Native Client (LLVM/Chrome), to name a few.

java logogcc logoLLVMeclipse logolauterbach logo

The team has skills to cover complete toolchain development or improvements, which includes also support for assemblers, linkers, debuggers, required libraries, emulators as well as integration with different IDEs.

On Windows, Linux, and Cygwin platforms we offer: Eclipse based, GCC customization, with a complete toolchain development (Compiler, Linker, IDE).

We are specialized in u-boot, flashing, and terminal boot tool customization, and experienced in JTAG debugger scripting and customization (Lauterbach, EPI MAJIC, Green Hills).


Virtual Machines and JIT Compilers


Apart from LLVM, the company has a history of contributions to different virtual machines and binary translators. The competence range goes from Java Dalvik Virtual Machine to JavaScript engines. RT-RK has been engaged in development of V8 since its early start (pre-Crankshaft era) up to today, with regular contributions to the official trunk. The team also works on other JavaScript compilers such as IonMonkey in Firefox, so the company can offer full support to customers who want to optimize or use different JIT compilers in their systems.


Binary translations has been in focus on different projects, and based on involvment we had in Valgrind and QEMU, the company can prove admirable expertise in this field too. Similar to other open source projects that we took part in, parts of our work are already available as a reference in public.


Optimization of existing solutions

Bottlenecks in applications can be caused by number of reasons, and these reasons can be specific to application, enviroment, architecture or platform itself. Determining what causes your solution to be undesirably efficient can be difficult task to perform, and once the root causes are known, it may be even more difficult to resolve the problem. RT-RK has been challenged on numerous occasions to improve performance of the existing solutions.

Some references that can be shared today include optimization of routines inside of Qt, FFmpeg (AMR NB and WB floating point decoders, MP3 fixed and floating point decoders, AC3 floating point decoder and encoder, EAC3 floating point decoder, AAC floating point encoder, other), Skia, VP8, MP3 decoder, WebRTC, AAC multichannel decoder, libpng, zlib, and others. Only Pixman library has more than 60 optimizations done by RT-RK. Each change made to these projects has been accompanied with a performance boost numbers (before and after the change).

Reference implementation of floating point decoders and different multi-core/multi-threading algorithm changes have been applied in several projects. At the same time, for customers who have hardware specific features we provide solutions that, if applicable, leverage those features.

ffmpegQtmp3accWEB RTC


The key application on majority of the platforms is a web browser. With the complexity of Internet and new standards, internals of browsers have become the most important code sections in a system. Thus, RT-RK has spent time and effort to get experience with different browsers on Linux (Chromium, QtTestBrowser) and Android (Chromium, ContentShell, built-in browser), among others. The browser is a crossroad at which expertise of different teams in RT-RK is needed: compiler engineers deal with technologies such as Native Client and JavaScript engines, Kernel engineers deal with Kernel support needed for it, optimization engineers look for both high-level algorithms and low-level routines in search for better core/hardware utilization, while others deal with a variety of problems including correct support for OpenGL, breakpad, and many more. Making sure all the pieces work together without flaws is fundamental, and smooth work of the browser on your platform is a key to your product's success.


Operating Systems and System Software Development

RT-RK has been fast to get hands-on knowledge on number of operating systems for embedded devices. Some of our effort has been tracked in news, such as the early port of Android for BigEndian MIPS systems in 2010. Since that milestone, RT-RK has been a close follower and contributor to AOSP. The company was a big supporter of the new platform, but kept up-to-date with other proven embedded systems, mostly Linux based.
Today, one of the services we provide to customers is a full image of Linux based distribution customized for the architecture and hardware of choice. Android platform and Debian distributions are two common choices of our customers.

android tool

Android FroyoAndroid GingerbreadAndroid HoneycombAndroid Ice Cream SandwichAndroid Jelly Bean

We offer system software concept, architecture and development for different embedded platforms: MIPS, ARM, Texas Instruments, Intel, and ST MicroElectronics, and development of proprietary OS for embedded systems. On Linux kernel we provide: porting/adaptation/support, kernel software development (drivers, devices), and real time adaptations/extensions. On RTOS we offer services of: customization of 3rd party solutions (Nucleus, ThreadX), proprietary RTOS kernel solution, and real-time software design and development. We are also specialized in legacy file systems (FAT, JFFS, CRAM), and proprietary dedicated solutions (StreamingFS, FlashFS, JournalFS).