Revision as of 11:31, 22 September 2022 by Mperrotin (talk | contribs) (Specific tutorial on PolyORB-HI-C)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


PolyORB-HI is a middleware that interfaces generated code from AADL models to Real-Time Operating Systems. It maps the primitives of the generated code to the ones offered by the operating system, in order to ensure their integration. Its integration with the TASTE architecture is described here.

The C version can be used on top of Linux, RT-Linux, Maemo and RTEMS. It works on LEON, ARM, PowerPC and x86. It has been successfully tested on native computers (x86 with Linux), LEON boards (with RTEMS), ARM (with DSLinux and Maemo).


PolyORB-HI provides the following services to the generated code:

  • Tasking: handle tasks according to their requirements (period, deadline, etc.).
  • Data: define types and locking primitives
  • Communication: send/receive data on the local application and send them to the other nodes of the distributed system.
  • Device Drivers: interact with devices when a connection uses a specific bus.


The overall architecture is depicted is in the following figure and consists of the following layers :

  1. Data Types: provides uniform access to data types regardless the target platform
  2. Monitoring: check system health and log errors
  3. Tasking: create and manage task execution (period, deadline, etc.) using generic function (adaptation to POSIX and specific - RTEMS OS)
  4. Communication: store data to communicate between threads located either on the same node (local communication) or a remote (distant node connected through a bus) node. In case of a remote node, this service would use the device drivers service.
  5. Time: uniform access to time primitives regardless the underlying execution platform.
  6. Device Drivers: access to device (read/write data, access register, etc.). This layer provides a high-level access to the driver and ues the execution platform primitives to call the driver itself. In case you want to design a new driver, this is detailed in this page.
  7. Locking Access: uniform access to primitive to lock and unlock shared data. This consists of wrapper functions to avoid concurrency issues (semaphores, mutexes, ...) regardless the execution platform.


Released under GPL license.


Installation from sources

assert@assertvm:~/tool-src/po-hi-c$ make distclean ; ./support/reconfig && ./configure
  • Invoke make
assert@assertvm:~/tool-src/po-hi-c$ make
  • Finally, invoke make install
assert@assertvm:~/tool-src/po-hi-c$ make install

Note: Make sure your GCC and Ocarina bin/ directory is in your PATH environment variable before executing the above commands.

Specific tutorial on PolyORB-HI-C