Linux
A popular Operative System (OS) is Linux. It has grown from being a hobby project to be used in applications such as bank transaction systems running on mainframes, and understandably it has also seen widespread use in embedded systems. The advantages of Linux compared to other OS's available for embedded systems are numerous. The most important one is the main reason why Linux have become such a success - open source. This makes it possible for any software engineer with the appropriate skills to adapt and add functionality to the kernel to suit his or her specific hardware. The open source quality of the Linux kernel also allows its users to discuss modifications and troubleshooting freely, which leads to an abundance of available information on how to go about to build an embedded system of your own. Linux is of course only the kernel, but it have helped to spread the idea of open source to provide everything from compilers and boot loaders to desktops and graphics libraries as open source. The abundance of available open source programs for both desktop and embedded systems is a major advantage when putting up an embedded system in either a short time period or when adding functionality to an existing system. A web server for instance doesn't care on what processor it's running on as long as it's compiled correctly, and this makes it rather easy to re-use code and programs between different projects utilizing the same OS. BitSim have experience from building several embedded systems utilizing the Linux kernel. The main task of the systems have ranged from monitoring specific on-board hardware components with status reports through a web server, to advanced signal analysis in a multiprocessor system.
uClinux
uClinux is an adaptation of the Linux kernel for running Linux on processors which lack a memory management unit (MMU). Most famous of these processors, and which are closest to BitSim's other core competences, are the Xilinx MicroBlaze and the Altera Nios-II. These are soft processors which can be instantiated in FPGAs, making embedded systems on FPGAs possible. Together with intellectual property cores (IPs) for the desired hardware functionality, the same hardware can have very different functionality depending on what's instantiated in the FPGA. The uClinux system can then, in most cases, run the same software as used in a "normal" Linux setup.