Compared with those who write firmware for desktop or mobile platforms, those of us who are responsible for developing firmware for embedded systems have considerable obstacles to overcome. It is more difficult to solve problems such as code reuse or portability. We are very interested to learn about another hardware abstraction method, called Luos, which describes itself as a micro service of embedded system.
This open source project supports the deployment of a distributed architecture composed of collaborative microservices. Through containerized applications and hardware drivers, the interfaces of various components are hidden behind a consistent API. No matter where the resources are located, multiple services may run on the same microcontroller or on different microcontrollers, but they can communicate in the same way.
By following the hardware and software design rules, the architecture of a collaborative computing unit can be created, which is completely independent of the actual hardware. The microcontroller communicates at the hardware level through a pair of bidirectional signals, so the hardware cost is very low. It is even integrated with ROS, so it is easier to make robots.
By integrating a special block called a door, you can connect from the host to the architecture in real time through USB, WiFi or serial port, and output data stream, input data or deploy new software. The host software stack is based on Python and runs under the jupyter notebook. We like it very much.
The current compatibility is compatible with many STM32 and atsam21 micros, so it is likely that you can use it with any device you have, but there will be more platforms in the future.
Now yes, we know CMSIS and the idea of hardware abstraction layer (HAL) as part of platform specific software packages, which is not new. However, the working methods of different platforms are completely different. Porting code from one platform to another is just because you can no longer get your favorite microcontroller, which is a real resistance. We can all use it, so why not clone GitHub and have a look for yourself?