Operating Systems for Embedded Devices

Embedded devices and software that supports them have been in SYRMIA's focus for a long time. Our engineers are passionate about this area, and approach it with veracity and meticulousness. The company offers system software concept, architecture and development for embedded devices of various architectures: MIPS, ARM, Texas Instruments, Intel, and ST MicroElectronics. Typically, we provide our customers a full image of a Linux-based distribution customized for the architecture/hardware of choice. Android platform and Debian-based Linux distributions are two common choices of our customers.

In the Linux kernel area, SYRMIA provides: device driver development, porting/tuning/support, as well as real-time adaptations and extensions. For example, SYRMIA provided the core kernel support for CI-20 MIPS development board. A related specialty area are legacy filesystems (FAT, JFFS, CRAM), and proprietary filesystems solutions using StreamingFS, FlashFS and JournalFS. Furthermore, in the Real-time Operating Systems (RTOS) arena, SYRMIA offers services of customization of 3rd party solutions (Nucleus, ThreadX), proprietary RTOS kernel solutions, and real-time software design and development.

SYRMIA is a pioneer of Android development, having roots in the early port of Android to big endian MIPS systems in 2010. Ever since that milestone, the company has been a close follower and contributor to Android Open Source Project (AOSP). SYRMIA can provide a customized version of Android for your embedded device.

Virtual Platforms

In the last decade, virtualization established itself as an attractive and still rapidly expanding and improving area of software engineering. SYRMIA has a long history of contributions to different virtualization areas.

For example, our team designed and implemented Linux kernel support for the Goldfish virtual machine in Linux kernel, used in MIPS flavors of Android Emulator. Some elements of that solution are now reused for RISC V virtual machines in an entirely different context. Also, we expanded QEMU with an accurate virtualization of MIPS floating-point arithmetics, a complex solution supporting both IEEE 754-2008 and pre-IEEE 754-2008 MIPS specifications. Another major SYRMIA's project in the virtualization area was support for nanoMIPS instructions set in QEMU. nanoMIPS instruction set (that includes DSP extension) covers over 500 instructions.

Another interesting area of virtualization where the company can prove admirable expertise is binary translation. Binary translators provide, in real-time, execution of code compiled for one architecture on a hardware of different architecture. In a related area, SYRMIA's team also worked on JavaScript compilers such as v8 in Chromium or IonMonkey in Firefox. The company can offer full support to customers who want to optimize or use different JIT compilers in their systems.

Activities in Open Source Communities

SYRMIA actively participates in many open source projects. Our open source portfolio is diverse - from web browser engines to compilers and development tools - and it includes: WebKit, V8, Cobalt, LuaJIT, P4, Linux kernel, Clang/LLVM, gcc, gdb/binutils, QEMU, Valgrind. The basic way of that participation is, naturally, contributing code solutions to a particular open source project. However, SYRMIA goes above and beyond these basic activities by participating in wider open source initiatives. One example is Google Summer of Code, a Google's multi-year endeavor for attracting and engaging young talents to open source projects. Further, our engineers regularly participate in key open source conferences (FOSDEM, KVM Forum).

Let's take a look at SYRMIA's role in Google Summer of Code (GSoC) initiative in more details. SYRMIA's participation in GSoC is trifold: Firstly, SYRMIA takes part in the all-important process of generating project ideas for GSoC. The ideas are evaluated first internally (within SYRMIA), and the resulting selection is evaluated externally (within the open source community). Secondly, our engineers may take the role of a mentor for a particular project (such as "TCG Continuous Benchmarking" in QEMU). Thirdly, we are proud that some of our interns/students actually execute GSoC projects (for example, "Extend Linux User Syscall and Ioctl Support" in QEMU).


Upstreaming Client's Solutions

Companies often base their solutions on an open source project, by forking a particular project at some point of time and, in turn, modifying it by internal development to suit their own needs and requirements. The benefits of such an approach is fast development and not having to worry about breaking features not related to the company's specific project. However, there are downsides to such approach as well: if the open source project is improved in its upstream version, there may be significant efforts needed to integrate these improvements in the company's in-house version.

Having code integrated upstream, as a rule, means increased code quality through peer review and, at the same time, decreased maintenance efforts compared to the separate in-house solution. Other developers may expand existing features, or even devise new ways of testing. SYRMIA's engineers are experienced in upstreaming client's solutions, in a cost-effective way, while keeping the highest coding and overall standards. The solutions we dealt with and upstreamed successfully vary from the extension of programming language (P4), to the support for a virtual board in kernel (Goldfish platform), to the support for an entire new instruction set in QEMU (nanoMips).

SYRMIA has a group of engineers focused on open source compilers and tools. We have been involved in LLVM and GCC open source development since 2010. along with gdb/binutils support, and we have also significantly contributed to compilers for Go (golang), Lua (LuaJIT), JavaScript (v8, IonMonkey/SpiderMonkey, JavaScriptCore), among others. Our contributions were often followed by presentations on public conferences such as LLVMdev, Lua Workshop or FOSDEM.