CMRX on Linux!
Did you know you can now try CMRX without even having any embedded hardware around you? Yes, that’s right. Now that CMRX has got a native support to run hosted on Linux machine, you can build CMRX instance as a plain normal Linux process.
To demonstrate this, we prepared two small demos which stress capabilities of this port.

Desktop on Microcontroller-Grade Resources
First demo consists of simple desktop window manager that runs entirely inside the CMRX. While this is not a typical use case for an embedded operating system, it demonstrates the capabilities of CMRX kernel.
The interesting feature of this demo is the fact that rendering is completely done inside the window server. This actually isn’t a new approach, it was first used in Amiga in mid-80s. We decided for this approach due to the use of the RPC interfaces and memory isolation, which makes any form or shape of client-side rendering highly impractical.
From the driver’s point of view, the device it is drawing to is just a plain framebuffer device with no advanced features.
You can check the demo in its GitHub repository
Peripheral Emulator
Another demo is closer to the embedded nature of the CMRX RTOS. In this demo, an emulated peripheral is created. This peripheral is memory-mapped into area accessible by the CMRX processes. These processes see a register file similar to a register file of any other peripheral they would normally talk to. At the PC end, this emulator creates an UNIX socket you can connect to. Whatever send to the socket will appear as a data received by emulated UART peripheral. Anything sent via the UART peripheral will appear in this UNIX socket.
The application running inside CMRX is simple: Just a driver that controls this emulated UART peripheral and provides RPC call-based API for applications to talk to. And a simple application that does UART echo.
We made this demo part of CMRX examples repository where you can check it out.
Both demos have building instructions included and require only basic setup such as working compiler and a few minutes of time.
Digital Twins
These demos are cool, but what is the real use of an embedded RTOS running on ordinary PC? First, it is worth noting, that what you’ve just seen is no emulation. There is no virtual machine involved, no dynamic code translation. This port leverages CMRX portability and implements its abstract machine using Linux system calls. This means, that from the point of view of the application running inside the system, this is a fairly normal instance of CMRX. Applications are unaware of (but not prevented from talking to) underlying Linux.
Such system essentially behaves as a digital twin. You can do your development using such setup and obtain representative results. This way you can do development even without development boards already be available. Development of high-level application logic may get faster as you don’t have to flash your microcontroller after every build. The fact that your peripherals are emulated also makes injection of inputs and capture of outputs way easier - its all just data.
If the concept of emulated peripherals is further exploited, then you can leverage such CMRX hosted instance even in your CI pipeline for early test stages. Instead of connecting a development board and HIL tester to your CI worker node, run all hardware emulated and convert the setup to pure SIL. What is the advantage? You can run infinite amount of instances of such CI with no additional costs in test hardware. More CI nodes means faster testing, faster testing means higher bandwidth for more tests. More tests means higher resulting quality.