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-Kernel RT Processes Linux Kernel Display Disk Devices Hardware level X-Window Data Linux Process Software level 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-FIFO (contd.) RT-FIFO RT Task RT Task RT Kernel Space non-RT Task non-RT Task Std Linux Space RT-FIFO is unidirectional by default Number of FIFO is fixed and can only be changed in the RT Kernel source code 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 RTFIFO 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 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 TclTk applications Takes care of how data is passed between Tcl-Tk application and Real-Time task Extension Design RT-Kernel RT-FIFO App Tcl/Tk-RT Ext. Tcl/Tk RT Task X-Window Device Display User space application only have to deal with Tcl/Tk 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 Command Module RT-FIFO RT Task B App Tcl/Tk-RT Ext. Tcl/Tk RT Task A Device X-Window 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 www.rtlinux.com www.rtlinux.org www.fsmlabs.com RTLinux Whitepaper (Victor Yodaiken) RTLinux Manifesto (Yodaiken) RTLinux FAQ (Barabanov, Yodaiken, Hilton) RT Linux man pages: http://www.rtlinux.com/man_page_index.html Tcl/Tk Documentation: http://dev.scriptics.com/doc/