RTLINUX/RTFIFO and Tcl/Tk Nishant Upadhyaya Maung Wynn Aung Han Professor Insup Lee CIS642: Seminar in Real-time Systems University of Pennsylvania
Objectives To develop a Real-Time Extensions for Tcl-Tk that interfaces with RT Tasks through RT-FIFO To exploit the power of Tcl-Tk and X-Window for fast RT application development
What is RT-FIFO? RT-FIFO are located in kernel address space RT-FIFO are character device interfaces acting as pipes between RT and non-RT tasks Used for Inter-Process Communication (IPC) RT-Kernel RT-FIFO Linux ProcessRT Processes X-WindowLinux Kernel DisplayDiskDevices Software level Hardware level Data
RT-FIFO (contd.) RT-FIFO is unidirectional by default Number of FIFO is fixed and can only be changed in the RT Kernel source code RT Kernel SpaceStd Linux Space RT Task non-RT Task RT-FIFO
RT-FIFO (contd.) Data transfer rate is about 100MB/sec in a modern x86 RT-FIFO functions are non-blocking and atomic on RT side (avoids priority inversion) Standard Linux processes see it as standard character device They are in /dev file system and named as /dev/rtfx where x is FIFO ID integer number.
RT-FIFO Handling API rtf_create: create a new RT-FIFO rtf_create_handler: to attach a data handler rtf_destroy: to destroy the RT-FIFO rtf_get: to read data rtf_put: to write data rtf_resize: to change size of RT-FIFO
Difficulties To include RT-FIFO handling functions into a user space task is inflexible User space tasks usually use Tcl/Tk for rapid UI development for X-Window Mixing RT-FIFO implementations and Tcl/Tk functions can be counter productive due to changes in software versions, RT task implementation details, etc.
Approach for Tcl/Tk-RT Extension It consists of a small extension to Tcl-Tk The Extension can be linked to Tcl-Tk libraries dynamically using load command Extension acts as a virtual IPC layer for Tcl- Tk applications Takes care of how data is passed between Tcl-Tk application and Real-Time task
Extension Design User space application only have to deal with Tcl/Tk RT-Kernel RT-FIFO RT Task X-Window Display Tcl/Tk-RT Ext. Tcl/Tk App Device
Tcl/Tk-RT Extension API Provides a simple API for testing rtf_open: Open a new RT-FIFO rtf_close: Close a RT-FIFO rtf_read: Read data from RT-FIFO rtf_write: Write data to RT-FIFO
Advantages Advantages of the approach are- User space tasks are easier to develop using Tcl/Tk Command Module can be loaded/unloaded dynamically It allows flexibility in modification, testing, upgrading RT applications
Implementation and Testing Developed a small test program using Tcl/Tk that uses our extension to interface with RT Tasks Test program includes a Tcl/Tk console it controls and monitors the RT Tasks Two RT Tasks are created and send data, Alpha and Beta respectively, through the RT-FIFO pipes The console can start, stop, monitor the RT modules and data received
Program Structure RT-Kernel RT-FIFO Command Module RT Task X-Window Tcl/Tk-RT Ext. Tcl/Tk App RT Task Device
User Console
Data From RT Tasks
Program Demonstration Running the demonstration program under X windows
Conclusions RT application development can be greatly enhanced by introducing RT-extension to Tcl/Tk It can be further improved by introducing more sophisticated real-time services Scripts can be automatically generated by using Graphical UI tools
References RTLinux Whitepaper (Victor Yodaiken) RTLinux Manifesto (Yodaiken) RTLinux FAQ (Barabanov, Yodaiken, Hilton) RT Linux man pages: Tcl/Tk Documentation: