RTLINUX/RTFIFO and Tcl/Tk Professor Insup Lee CIS642: Seminar in Real-time Systems

advertisement
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/
Download