![Page 1: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/1.jpg)
Realtime applications with RTAI
R.KOCIK – Embedded Systems department
1
![Page 2: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/2.jpg)
Outline
I. Which RTOS to choose ? II. Why not to choose Linux ?
III. Realtime Linux
IV. Using RTAI
V. RT TASK scheduling with RTAI
VI. Synchronisation, Communication
VII. RTAI: conclusion
VIII. And other RTOS ….
2
![Page 3: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/3.jpg)
I. WHICH RTOS TO CHOOSE?
3
![Page 4: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/4.jpg)
Specification of a RTOS
l Minimum to manage realtime - Interrupt management, - Time base, - Tasks declaration, creation, execution, preemption,
destruction
l Minimum cost (speed, memory,…)
4
![Page 5: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/5.jpg)
Additionnal Services
l Memory Management l Communications with devices (driver) l Tools for communication an synchronisation l Human Machine Interface
5
![Page 6: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/6.jpg)
Development Architecture
l Cross Development
Development computer • Source writing • Cross compilation • Linking :
-code -RT kernel and librairies -loader
• Simulation • Download • Debug
Target computer • Embedded system • I/O • Controlled system • Sometimes keyboard/Screen
6
![Page 7: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/7.jpg)
Development Architecture II
Development & target computer • Source writing • Cross compilation • Linking :
-code -RT kernel and librairies -loader
• Simulation • Debug • Execution
7
![Page 8: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/8.jpg)
II. WHY NOT TO CHOOSE LINUX ?
8
![Page 9: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/9.jpg)
LINUX
l Linux is an open source OS
l Manage I/O
- Disk
- IHM (keyboard, mouse, screen)
- Network
l Multitask
- Load balancing
- Resource management
- Average response time 9
![Page 10: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/10.jpg)
DRIVER
COM
Linux kernel and Modules
CPU RAM DISK
NETWORK
Hardware
FILESYSTEM
KERNEL
MODULE
Kernel space
User Space
Not Allowed
Emacs Bash Mozilla
API
10
![Page 11: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/11.jpg)
The Linux KERNEL
l Functions - scheduling functions and priorities - processus management - Timers ans alarms, time functions - Hardware resources access - Interrupt handling - User and group management - Modules management - Debug functions (printk) - Exceptions handling - System information
The kernel is not multitask and can’t be preempted !
11
![Page 12: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/12.jpg)
Linux Modules
l Why modules ? Modularity !!! _ Avoid kernel recompilation when drivers are added _ Save memory : only needed functions or drivers can
be loaded
l A module can use functions, variables and kernel strucutres
l Code is executed with administrator privileges l A module is allowed to acces I/O
Exceptions in a module are usually fatal for the system !
12
![Page 13: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/13.jpg)
Modules
l Modules are referenced in a list updated by the kernel (lsmod to vizualise this list)
l A module can only use functions exported by the kernel or other modules
l A module can only be loaded and removed by the user root
l The kernel updated a list of linked between modules (it allows to know when a module can be removed)
13
![Page 14: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/14.jpg)
Linux and Realtime
l Process - wake up date can’t be guaranted - Round robin scheduler : load balancing - Calls to kernel functions can not be preempted
l Memory - Swap on Ram and process
l Interrupt - Regularly disabled by the kernel
14
_ LINUX IS NOT REAL TIME !
![Page 15: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/15.jpg)
III. REALTIME LINUX
15
![Page 16: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/16.jpg)
KURT implementation
l A realtime API is added in the kernel l kernel preemption is allowed l Interruption disable is reduced l response time ≈ 100µs
16
Linux KURT
For soft realtime constraints applications !
![Page 17: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/17.jpg)
RT-Linux, RTAI
l A micro kernel is added under linux kernel l Linux is executed in background l Linux and a RTOS in a same system l https://www.rtai.org/ l Response time < 20µs
17
or RTAI
Used in hard realtime constraints applications
![Page 18: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/18.jpg)
Others realtime solutions around LINUX
l RTLinux l RTAI (variante de RTLinux) l eCos l . . . l And commercial distributions
- FSMLAbs (RTLinux) - MontaVista HardHat - Lineo Embedix Realtime - TimeSys Linux/RT - LynuxWorks BLueCat Linux (Lynx Real Time Systems)
18
![Page 19: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/19.jpg)
RTAI
l Real time small executive l New functions can be added
- Multi schedulers
- Communications
l Open source l Split in sevral modules l Manage flotting point unit (FPU)
19
![Page 20: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/20.jpg)
RTAI lives with LINUX
l Linux is unchanged : all linux applications can still be used
l Clear separation between realtime (RTAI) and
non realtime (Linux) behaviour : l RT tasks : no linux system calls l RT tasks and linux application communications
- Memory sharing - Real time Fifo
20
![Page 21: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/21.jpg)
IV. USING RTAI
21
![Page 22: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/22.jpg)
How to build a realtime application ?
l Modify the Linux kernel - RTAI installation, guidelines
l Patch Linux l Compile the patched kernel l Install and run the new kernel
l Write the realtime application in module - Executed in kernel space - Incorporates realtime tasks - 1 or more module
l Execute the application - Compile the application modules - Load all the needed RTAI modules - Load the application modules
22
![Page 23: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/23.jpg)
Write a module (linux 2.4)
23
#define MODULE #include<linux/init.h> #include <linux/module.h> #include<linux/version.h> static int output=1; int init_module(void) { printk("Output= %d\n",output); return 0; } void mon_code(void) { output++;
} void cleanup_module(void){ printk("Adiós, Bye, Ciao, Ovuar, \n"); }
![Page 24: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/24.jpg)
Write a module (linux 2.6)
24
#define MODULE #include<linux/init.h> #include <linux/module.h> #include<linux/version.h> no more needed static int output=1; int mon_init(void) { printk("Output= %d\n",output); return 0; } void mon_code(void) { output++;
} void mon_cleanup(void){ printk("Adiós, Bye, Ciao, Ovuar, \n"); } module_init(mon_init);
module_exit(mon_cleanup);
![Page 25: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/25.jpg)
Compiling and executing
l Compile a module : Ø Linux 2.4 : gcc -I /usr/src/linux/include/linux -O2 –Wall D__KERNEL__ -c exemple1.c
Ø Linux 2.6 : kernel source and makefile needed
l Load a module > insmod exemple1.ko (exemple1.o with kernel 2.4)
l Printk output on console > dmesg | tail -1 Output= 1
l List modules # lsmod Module Pages Used by: exemple1 1 0 sb 6 1
25
![Page 26: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/26.jpg)
Load steps (resumed)
1) External referenced symbol verification 2) Kernel version verification 3) Code and data memory allocation and copy of
the module in the allocated space 4) Symbol table update with module symbols
(output and mon_code) 5) Call of module init_module function
26
![Page 27: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/27.jpg)
Cleaning
l Remove module - Will execute the cleanup_module()function
# rmmod exemple1
# dmesg | tail -2
Output= 1
Adiós, Bye, Ciao, Orvua,
27
![Page 28: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/28.jpg)
Pass data to a module ?
# insmod exemple1.ko output=4
# dmesg | tail -3
Output= 1
Adiós, Bye, Ciao, Orvua,
Output= 4
28
![Page 29: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/29.jpg)
Makefile
l Interpreted by the command make l Set of rules l Rule : define commands to build a target from
source files. Also define dependancies (source files) needed by the commands
rule : dépendancies
command
l www.gnu.org/software/make/manual
29
![Page 30: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/30.jpg)
RTAI modules
• rtai_hal : base functions • rtai_sched : mono processor scheduler • rtai_sem : semaphore functions • rtai_fifos : RT modules and linux applications
communications functions
+ application modules - I/O handling - Tasks
l To be loaded each time the application has to be started
_ Script
30
![Page 31: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/31.jpg)
Typical Realtime application
31
RT Fifo
RTAI
other peripheral Network Disk
X Windows
Screen
RT Task Linux kernel
RT Task
RT Fifo
User Process
![Page 32: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/32.jpg)
V. RT TASK SCHEDULING WITH RTAI
32
![Page 33: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/33.jpg)
RTAI : task handling
l RTAI - Each Realtime task is a thread RT_TASK - Linux kernel = idle priority thread
l Task scheduling l Preemptive l Fixed priority (default) or EDF l ! Processor overload => Linux can not be executed
33
![Page 34: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/34.jpg)
Task create #include <rtai_sched.h> MODULE_LICENSE("GPL"); static RT_TASK tache; #define STACK_SIZE 2000 iret = rt_task_init(&tache, // task pointer
routine, // name of function to be execute 1, // int passed to routine STACK_SIZE, // execution stack size 1, // int priority, 0=highest priority 0, // int 0 => fpu not used // 1 => fpu is used 0 // signal (see rt_task_signal_handler) );
l iret = 0 if ok, <0 either l task creation is done in init_module!
34
rt_task_init doesn’t execute the task !
![Page 35: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/35.jpg)
Periodic task
• In init_module iret = rt_task_make_periodic(&tache,
start_date, nano2count(PERIODE));
_ Periodic execution,first execution since start_date, units is count
l In the task
loop containing task + function rt_task_wait_period ();
_ suspend task execution until next period
35
![Page 36: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/36.jpg)
Suspend and delete a task
l Suspend rt_task_suspend( rt_whoami() );
l Re-execute rt_task_resume( &tache);
_ Also allows to execute a non-periodic task
l Ending rt_task_delete( &tache);
36
![Page 37: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/37.jpg)
Time
l Timer : 2 possible behaviour - rt_set_oneshot_mode()
l Recent Pentium provides CPU TSC (Time Stamp Clock) => variable time base
l 386,486 and old pentium don’t provide CPU TSC => need to read an external timer 8254 => cost time, not efficient
- rt_set_periodic_mode()
l Default mode
l Fixed period
l The tasks whose period is not a multiple of timer period are executed with the nearest multiple period
37
![Page 38: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/38.jpg)
Time (2) l First, the timer must be started
tick_per = start_rt_timer(per);
- one shot mode : per irrelevant - Periodic mode : per = period of the timer in count,
tick_per = alocated period
l To read the timer rt_get_time(); in count unit rt_get_time_ns(); in nanosecond unit
l Conversions RTIME tn, tc; tc = nano2count(tn); tn = count2nano (tc);
l Stop the timer (cleanup_module) stop_rt_timer();
38
![Page 39: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/39.jpg)
RTAI scheduling
l Scheduling policy can be combined - EDF > fixed priority - Linux = task with the smallest priority
l Priority - Fixed priority : de 0 à RT_LOWEST_PRIORITY
ma_prio = rt_get_prio( rt_whoami());
old = rt_change_prio(rt_whoami(), ma_prio+1);
- Dynamic priority rt_task_set_resume_end_times(wakeup_date, duedate_date);
rt_task_set_resume_end_times(-period,-deadline);
39
![Page 40: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/40.jpg)
Multiprocessor scheduling
l SMP : Symetric Multi Processor
l 2 solutions - 1 scheduler handle n processors
l Execute the n highest priority tasks among the t ready tasks
- 1 scheduler on each processor l Each task is allocated to a processor
40
![Page 41: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/41.jpg)
VI. SYNCHRONISATION, COMMUNICATION
41
![Page 42: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/42.jpg)
Synchronisation / Communication: why?
l Transmit an event - fugitive, memorised, incremented - With/without value
l Ordering - before / after - Control the number of execution
l Data exchange - With synchronisation - Without synchronisation
l Ensure data integrity
42
![Page 43: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/43.jpg)
RTAI : binary semaphore - mutex
l Rendez-vous, mutual exclusion
l Creation SEM mon_sem; rt_typed_sem_init(&mon_sem, // semaphore pointer 1, // initial value BIN_SEM // type );
l Take a semaphore If the semaphore is présent : on prend le sémaphore et on continu Si le sémaphore est absent : on est bloqué jusqu’à ce que le sémaphore
soit restitué ierr = rt_sem_wait(&mon_sem);
l Restituer le sémaphore
ierr = rt_sem_signal(&mon_sem);
43
![Page 44: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/44.jpg)
Sémaphores (2) l Problèmes : inversion de priorité, interblocage
l Autres types rt_typed_sem_init(&mon_sem,1,BIN_SEM);
l A compte : CNT_SEM l Ressource : RES_SEM
- met en place le protocole de priorité plafond
l Destruction - ierr = rt_sem_delete(&mon_sem);
l Variantes asynchrones - rt_sem_wait_if : pas de blocage si sémaphore absent - rt_sem_wait_until(&sem,date): blocage au maximum jusqu’à date - rt_sem_wait_timed(&sem,durée) : blocage au maximum pendant durée
44
![Page 45: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/45.jpg)
RTAI : Fifos
45
RT Fifo
RTAI
Périphériques Réseau Disques
X Windows
Ecran
Tâche RT Noyau Linux
Tâche RT
RT Fifo
Process utilisateur
![Page 46: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/46.jpg)
RTAI : RTFifos coté process utilisateur
l côté process utilisateur - périphérique spéciaux de type caractère :
l /dev/rtf0, /dev/rtf1 v… l accessibles à travers les appels : open, ioctl, read, write
- communication sans structure l file FIFO tampon d ’un nombre d ’octets fixé
- n ’existe (ne peut être ouvert) que si déjà créé par tâche RT ou par appel spécifique
46
![Page 47: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/47.jpg)
RTAI : RTFifos coté RT
l 2 modes d ’utilisation
l comme périphérique
l API spécifique RT rtf_create(unsigned int fifo, int taille); création, périphérique /dev/rtffifo existe, rtf_destroy(unsigned int fifo);
destruction, mémoire réallouée rtf_put(fifo, char *tampon, int compte);
rtf_get(fifo, char *tampon, int compte);
retour -1, si insuffisamment de données ou de place non bloquant
47
![Page 48: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/48.jpg)
RTAI : RTFifos
l côté tâche RT (2) l API spécifique RT
int my_handler(unsigned int fifo);
rtf_create_handler(3,&my_handler);
routine my_handler exécutée en mode noyau quand des données sont lues ou écrites
l permet de réveiller une tâche RT, via p.ex. un task_resume
l permet d ’éviter la scrutation régulière de la FIFO l permet de mettre en place un schéma ASYN/SYN quelconque avec
sémaphores rtf_resize => redimensionner la fifo
l plus d ’autres fonctions 48
![Page 49: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/49.jpg)
Messages
l Caractéristiques - Communication point à point (tâche à tâche)
- message : valeure entière
- SYN/SYN
- ierr = rt_send(&tache_but,valeur); //SYN
- ierr = rt_receive (&tache_orig,&entier); //SYN
l Variantes
- If : send ASYN, pas d’envoi si recepteur non prêt, pas de blocage de l’emetteur
- timed et until : blocage limité dans le temps
- rt_receive(0 … : n ’importe quel émetteur
l Pas d ’initialisation spécifique
49
![Page 50: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/50.jpg)
Boîtes aux lettres (Bal)
l Caractéristiques - Communication multi/multi point - message : taille variable - ASYN/SYN
- ierr = rt_mbx_send(&Bal,&msg,taille_msg); ASYN, mais blocage tant que le message entier n’a pas été copié dans la Bal
- ierr = rt_mbx_receive(&Bal,&msg,taille_msg); Blocage tant que le message n’a pas été reçu
l Variantes send - if : envoi ssi le message entier peut être copié dans la bal - Wp : envoi autant d’octets que possible sans blocage - timed et until : blocage limité dans le temps
l initialisation spécifique - ierr = rt_mbx_init(&Bal,taille)
- ierr = rt_mbx_delete(&Bal); 50
![Page 51: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/51.jpg)
Le problème de l ’allocation mémoire
l Segmentation, l Mémoire paginée l pas new/delete ou malloc/free - kmalloc / kfree
l non temps réel l solutions RT : - s ’allouer la mémoire de manière statique - allocation dans une table de blocs limitée
l utilisation de kmalloc au niveau noyau
51
![Page 52: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/52.jpg)
RTAI : Interruptions
l permet réactions rapides l inhibe le noyau temps réel l niveau matériel et niveau logiciel l gestionnaire d ’IT simples avec temps de réponse fixe (ou
borné) - prise en compte d ’un événement - phase urgente, laisser une tâche dans l ’espace utilisateur faire le
travail de fond
l ITs/événements peuvent être émis par : - équipement informatique (clavier, écran, disque …) - équipement industriel (capteur, actionneur, alarme …) - horloge : donne le rythme (tick = période d échantillonnage du
système)
52
![Page 53: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/53.jpg)
Interaction par Interruption
- rt_global_cli() rt_global_sti() - rt_disable_irq(), rt_enable_irq()
53
masquage
requête
encodeur priorité
priorité IA Acq
set reset
Bus données
![Page 54: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/54.jpg)
RTAI : Interruptions (2)
l Installation #define IT_CLAVIER 1 rt_request_global_irq(IT_CLAVIER, mon_gestionnaire); rt_free_global_irq(IT_CLAVIER); void mon_gestionnaire(void) { rt_pend_linux_irq(IT_CLAVIER);
l Utilisation - traitement urgent - réveiller tâche endormie
54
![Page 55: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/55.jpg)
RTAI : communication avec le matériel
l par pilote de périphérique (posixio) - « fichiers » /dev/nom
l open/ close/ read/ write
l accès direct aux ports E/S #include <asm/io.h>
outb(valeur, adresse) valeur = inb(adresse)
l taille du mot : b, w, l l pause : _p : outl_p
55
![Page 56: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/56.jpg)
Schémas classiques
l Chien de garde (Watchdog) l Comment gérer un automate d ’état (machine à
café, menu téléphone …) l BD : lecteur rédacteur l Client Serveur l tableau noir l …
56
![Page 57: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/57.jpg)
Exemple : machine à café
57
ENCOREINIT
ACTIFPREPARATIONSERVI
FRANC
FRANC
PUSH/preparer_cafe();SERVIR/
deplacer_tasse();
RETOUR ANNUL/rendre_monnaie();
ANNUL/rendre_monnaie();
![Page 58: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/58.jpg)
Machine à café : spcéfication fonctionelle
58
Process Linux
RTAI
IHM
Rt_fifo
Acqui Signal transition
Calcul Automate
Appel Genere_transition
Rendre monnaie Déplacer tasse
Préparer café Afficher message
![Page 59: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/59.jpg)
VII.RTAI : CONCLUSION
59
![Page 60: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/60.jpg)
RTAI : quelques remarques
l évolution permanente
l possibilités en phase de mise au point non détaillées ici
- outils de trace : LTT
- exécution en mode user : LXRT
l Xenomaï
- POSIX, VxWorks,VRTX,pSOS+,µITRON,RTAI
60
![Page 61: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/61.jpg)
RTAI : quelques remarques
l évolution permanente
l possibilités en phase de mise au point non détaillées ici
- debug
- outils de trace : LTT
- exécution en mode user : LXRT
l Xenomai
61
![Page 62: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/62.jpg)
RTAI-LAB
62
SCILAB/SCICOS MATLAB/SIMULINK
RTAI
Génération code +
Librairie RTAI-LAB
Spécification schémas-blocs
Exécution
http://www.rtai.org http://www.scicos.org/ http://www.mathworks.com/products/simulink/
![Page 63: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/63.jpg)
VIII. AND OTHER RTOS …
63
![Page 64: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/64.jpg)
Some RTOS … (http://www.dspconsulting.com/rtos.html)
64
RTOS URL Processor Licensing
Tornado, VxWorks h"p://www.wrs.com
x86, 68k, PPC, CPU 32, i960, SPARC, SPARCLite, SH, ColdFire, R3000, R4000, C16X, ARM, MIPS $16,500 per user + target
Hard Hat Linux h"p://www.mvista.com x86, PPC, MIPS and ARM No
VRTX h"p://www.mentor.com x86, 68k, PPC, i960, ARM $2,000 par user + target
OS-9 V3.0 h"p://www.microware.com x86, 68k, PPC, SH3, StrongARM ? + target
QNX h"p://www.qnx.com
AMD ÉlanSC300/ 310/ 400/ 410, AM386 DE/SE Intel386 EX, Intel486, ULP Intel486, Pentium, Pentium Pro, and NatSemi NS486SXF.
Pricing is based on OS modules used on the target system and per unit shipped.
pSOS h"p://www.isi.com
86, 68k, PPC, 683xx, CPU32(+), MIPS R3000/4000/5000, Coldfire 510x/520x, i960, ARM 7 (TDMI), SH1/2/3, M32R $17,000 per user + target
RTX h"p://www.vci.com x86, P5, P6 $150/RTX licence + target
LynxOS h"p://www.lynx.com x86, 68k, PPC, microSPARC, microSPARC II, PA-RISC
US$10,000 per user
Licence: US$7000 + target
…. + many other
![Page 65: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/65.jpg)
RTOS market survey(2005) (source : http://www.embedded.com/)
65
![Page 66: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/66.jpg)
RTOS market survey (source : http://www.embedded.com/)
66
![Page 67: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/67.jpg)
RTOS market survey (source : http://www.embedded.com/)
67
![Page 68: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/68.jpg)
RTOS market survey (source : http://www.embedded.com/)
68
![Page 69: Realtime applications with RTAI - Institut Gaspard Mongeigm.univ-mlv.fr/~masson/v2/Teachings/IMC-4201C/RTAI/rtai.pdf · V. RT TASK scheduling with RTAI VI. Synchronisation, ... -](https://reader030.vdocument.in/reader030/viewer/2022020803/5aca508f7f8b9a51678dce35/html5/thumbnails/69.jpg)
Choice of an RTOS
l Performance = time to provide a service to the application, it depends on: - Hardware architecture, - What measuring ? => benchmarks - Préemption duration, Task switching, semaphore, memory allocation,
services …
l Price : licence + per unit shipped
l Source Code, certification
l Tools
69