RTembedded is a complete framework for generating all kinds of multi-threaded, real-time embedded Linux applications. The designer constructs the design with easy to use tools, connecting together fully tested functional blocks to perform the desired processing. An application code generator then creates the required software modules and provides a clean interface to the user’s custom code. In many cases, RTembedded can create the entire application including make and install files.
Take the case of building a robot. Typically, this will require interfacing to motor controllers, cameras, sensors etc. The task of writing drivers for all this hardware and making a system work properly is a substantial task. Using RTembedded takes away to need to go directly to the hardware and instead provides a clean interface that provides everything that the designer needs. The designer can then focus on the higher level functions without worrying about the details of hardware interfacing and driver design.
Another example would be an Internet of Things (IoT) device. This usually requires interfacing to multiple sensors and hardware devices and also has a networking component. RTembedded can greatly simplify all of the interfacing requirements and generate most or all of the code automatically.
RTembedded is not limited to just these applications though. By providing a unified framework for real-time embedded Linux code, RTembedded promotes code reuse and can be extended to almost any application by creating new RTembedded code modules.
While RTembedded itself is written in C++, user code can be Python 2, Python 3 or C/C++. RTembedded will generate appropriate APIs for the target language option.
RTembedded consists of a few parts:
- RTeCore. RTembedded’s RTeCore contains all of the support infrastructure and convenience classes used by other parts of the RTembedded system.
- RTembedded modules. RTembedded modules are the components that are connected together by the designer to create the basis of the app. RTembedded will include many standard modules but it is easy to create new modules by following the RTembedded Module Design Guide. Developers will be able to submit new modules for inclusion in the standard RTembedded distribution.
- Design tools. RTeDesigner, a GUI-based design tool, allows the designer to construct a system in a very high level way. The concept is somewhat similar to that used in gstreamer in that RTembedded modules have defined sources and sinks that can be interconnected if compatible. The output of the design tool is a design file that is used by the code generator.
- Application code generator. This takes the design file and generates an app that will build and run. If all required functionality is provided by modules then nothing more needs to be done. Hooks are provided to add custom user code where extra functionality is required.
There are two ways to extend the functionality of an RTembedded app. One way is to write a custom RTembedded module. This requires more in-depth knowledge of real-time systems but templates will be provided to ease this process. RTembedded modules are written in C++/Qt. The second way is to write code that drives the custom API generated for the app by the code generator. This high level code does not need to be concerned with real-time or multi-threading issues – all that is hidden behind the generated API. High level code can be Python 2, Python 3 or C++, making sophisticated real-time embedded processing accessible by almost everyone.