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.
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
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.
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.
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).