Real-Time Linux in Industrial Appliances

Booming usage of Linux in embedded environments is creating an on-going demand to use this general-purpose operating system in industrial control devices and other fields, previously reserved for classic real-time operating systems. The course covers key topics, essential to understand the opportunities in using Linux as a real-time operating system and its fails. You will learn what Real-Time really means and how to achieve it in Linux.

Exercises done on ARM based development board with example of Real-Time application (controlling real industrial process), which will be developed during the course, are to give you a strong technical understanding and confidence in the subject.

Emphasis is put on developing POSIX-RT based real-time applications using some modern Linux variants, in order to work out a universal and re-usable framework, for your future Real-Time Linux projects. In order to learn programming techniques, the software is verified with partial tests and latency measurements are done during the exercises.

4-days (32h)

Course outline

Detailed agenda

Day. 1, Linux and Real-Time – the introduction

After ‘Day 1’:

The applicable terminology will be defined and problems introduced. Participants will review their knowledge of Linux Kernel and userspace. Latency and other problematic variables will be measured. Eventually the general solution will be introduced (Real-Time patches or co-kernel).

Day 2. How to make Linux Real-Time?

After ‘Day 2’:

This day is devoted to methods of minimizing and locking worst case latency in Linux kernel. Applications introduced there can be used on a standard, non-modified system, but only utilizing PREEMPT-RT will give them determinism. Parts of Linux, that after applying the patch, became real-time aware are discussed. Application design essential to achieve full determinism is also introduced. During hands-on exercises and workshop, the Embedded Linux-based industrial control application will be created, measured and tuned in order to achieve real-time determinism.

Day 3. Utilizing Co-kernel approach

After ‘Day 3’

This part is devoted to another Linux real-time approach – utilizing the co-kernel design. Real-time applications created and discussed here, are being controlled by real-time co-kernel, that also virtualizes Linux kernel (which is used in non-critical parts of a process). Various aspects of such system are discussed here, the problems regarding real-time process to non-real time Linux based GUI are posed and solved.

Day 4. Real-Time communication

After ‘Day 4’

Participants will gain knowledge, how to communicate from Linux Real-Time system to the outer world. Exercises include various standard measuring and control interfaces (RS232, GPIO, SPI, I2C and so on), as well as some specific ones: Analog Input-Output, CAN and so on. Industrial IO and Comedi framework for gathering data is also discussed and tested. In order to build distributed system, necessary network protocols and Real-Time network (Xenomai based) are also discussed, implemented, and tested.