You are here: Home / Science / 
2017-04-27 - 20:33

Dates and Events:

Breaking News:

2016-11-12 12:00

Raspberry Pi and real-time Linux

Let's have a look at the OSADL QA Farm data


2016-09-17 12:00

Preemption latency of real-time Linux systems

How to measure it – and how to fix it, if it's too high?


2014-11-18 00:00

Linux real-time: New stable release available -

but next one depends on more support from industrial users



Details of the Real Time Linux Foundation Working Group Project

OSADL Project: Real Time Linux Workshops

Real Time Linux Foundation Workshops since 1999

Real Time Linux Workshops

1999 - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 - 2014 - 2015

Fourth Real-Time Linux Workshop on December 6 to 7, 2002, in Boston, Massachusetts, USA

Paper abstracts


A paper copy of the workshop proceedings can be ordered from FRANK Linux Systems.


Industrial and experimental applications


Contributions and architectures


General issues and concepts


Papers the author of which was unable to attend


Abstracts fro which no paper was provided






Real-Time Linux for Flight Testing Uninhabited Aerial Vehicles and GA Aircraft
Charles E. Hall
Charles E. Hall

Flight testing of small UAV's requires a small, lightweight computer system on board the aircraft. To obtain quality data and correctly implement control systems the system must have a hard real time operating system.Real Time Linux has been installed on a PC104 system and interfaced to the UAV's tranducers, actuators and radio control system. The system has been used to implement a full set of attitude controllers and a navigator for autonomous flight tests of a UAV. The system has also been used to collect data during flight tests of a general aviation aircraft. The paper will discuss the use of Real Time Linux in the flight critical system.

Space Robotics: an Experimental Set-up based on RTAI-Linux
Alessandro Macchelli, C. Melchiorri, R. Carloni and M. Guidetti
Alessandro Macchelli

Thanks to a constant research and development activity in the field of robotics and, more in general, of automation, reliable and relatively low-cost machines that can substitute or assist human operators in repetitive or dangerous tasks are now available. In robotics, this is particularly true for applications in structured environment, i.e. when the workspace in which the robot operates is known with great accuracy and precisions. On the other hand, it is obviously of interest the development of applications in ustructured or unknown environments. In this case, control algorithms that can give a sort of human behavior to the machines are needed: in other words, the machines should be characterized by a functional autonomy, i.e. they should be able to modify their behavior on the basis of information acquired in real-time from the environment. In space application, it is of great interest the development of autonomous or semi-autonomous robotic devices that can substitute the astronauts in routine operations in order to free them from repetitive tasks and reduce mission costs. In this work, an experimental setup based on a 6 degrees of freedom (dof) manipulator with a 3 dof gripper designed for a possible application within PaT, the Payload Tutor proposed by ASI (Italian Space Agency), is presented. This system consists of a robotic arm, a vision system, and a gripper. Since the gripper has to interact with free-floating and irregular objects, the vision subsystem provides all the information needed for grasping unknown objects in an optimal way. The robotic arm is a Comau SMART 3-S robot, a standard industrial 6 dof anthropomorphic manipulator with a non-spherical wrist, equipped with the standard controller C3G-9000. Each joint is actuated by a DC-brushless motor, and its angular position is measured by a resolver. In our setup, the controller is only used as an interface between the resolvers and drives on t he robot and a PC running RTAI-Linux. In each sampling period generated by the controller, the real-time control system running on the PC must acquire the data from the encoders, compute the new control input for the actuators and send their values to the C3G-9000. On the robot wrist, both the video-camera and the gripper are installed. The vision system is used to provide visual information about the environment and, in particular, about objects within the workspace of the robot. These information are needed to track a moving object in the workspace with the robot, to move the robot in a desired position in order to grasp an object with the gripper and to automatically calculate the optimal grasping configuration. At the moment, the vision system consists of a monocular camera, connected to a frame-grabber board installed on the same PC that implements the robot control algorithms. By properly moving the robot arm and, at the same time, acquiring images of the object from different points of view, the vision algorithms can give a good estimate of the distance of the object from the robot wrist. This information is essential to correctly move the robot in order to grasp the object with the gripper. Moreover, by means of the vision system, the shape of the object is recognized in order to calculate the better grasping points (target points). The object is caught on these points and the contact forces are properly controlled. Generally, the target points are selected on the basis of a kinematic analysis of a first order model: the resulting points do not depend on the shape of the object and on the geometric characteristics of the gripper. In our case, the target points are calculated by means of a kinematic analysis of a second order model that takes into account also the shape of the object and of the gripper's finger: in this manner, the resulting grasping configuration is more stable. The third component of our setup is the A.S.I. Gripper. It has three degrees of freedom, and is particularly suited for no-gravity manipulation tasks (i.e. in space applications), since it can interact with free-floating and irregularly shaped objects. Its control algorithms are executed on a custom DSP board (based on the TMS320C32 chip). For this board, a loader and a DSP-monitor have been developed under Linux, together with some drivers for the DSP board. Once the object distance and the target points are calculated, the gripper is correctly positioned in the workspace with respect to the object. Then, the fingers are closed and the object is grasped on the target points. At this point, the DSP board executes the control algorithm in order to assure proper contact forces. In the final version of the paper, a detailed description of all the subsystems will be presented, together with some experimental results.

Flash Storage in Linux-Based Residential Gateways
Zachi Friedman
Zachi Friedman

The availability of new in-home interconnection technologies, combined with the explosion of non PC-based devices, is driving the demand for a single device to connect in-home appliances to the public Internet. The residential gateway, as its name implies, is a central entry and control point at the home for all voice, video and data services, as well as the cornerstone for future services. It is the true enabler of the Age of Information. Embedded Linux distributions play a leading role in this brave new gateway world, surpassing veteran operating systems. What are the do's and don?ts of working with Linux on an embedded gateway design where storage is concerned? How do you address the concern of some 38% of the respondents to a poll that said: ?My main concern about using Linux in embedded applications is insufficient driver support from chip vendors?? What are the pros and cons of NOR versus NAND-based flash storage devices, and how do you choose the right technology for your system? What are the special considerations when choosing a flash file system for a Linux gateway design? How can you avoid data and code corruption and premature flash block expiration? This presentation will discuss the above items, and also focus on the crucial tools needed for a successful, long-lasting Linux-based gateway design as perceived by M-Systems, based on the company's experience with leading OEMs.

Real-time Linux in Chemical Process Control: Some Application Results
Andrey Romanenko, Lino O. Santos and Paulo A.F.N.A. Afonso
Andrey Romanenko

Many chemical processes require real-time control and supervision in order to operate them safely and profitably, while satisfying quality and environmental standards. As a means to comply with these requirements, it is common practice to use control software based on a proprietary operating system such as QNX, WxWorks, or MS Windows with real-time extensions. To our knowledge, the idea of using Real-Time Linux has not been embraced widely by research and industrial institutions in the area of Chemical Engineering. Nevertheless, recent application reports from other industrial fields indicate that several variants of the Linux operating system, that enable it to be real-time, are an attractive and inexpensive alternative to the commercial software. In fact, several implementations of open source data acquisition and control software, and real-time simulation environment have been developed recently. Moreover, the apparent trend for the number of such applications is to increase. We describe our experience at the Department of Chemical Engineering of the University of Coimbra, with two pilot plants that are under control of a system based on real-time Linux. One of them is a completed project and the other is under development. The experimental set-ups closely resemble industrial equipment and function in similar operating conditions. We hope that this successful application will encourage further deployment of real-time Linux in the Chemical Engineering research and industry.

A Digital PID Controller Using RTAI
Rodrigo da Silva Guerra, Hermes Jose Goncalves and Walter Fetter Lages
Rodrigo da Silva Guerra

This work presents an implementation of a digital PID (Proportional+ Integral+Differential) controller in a PC machine running RTAI. PID controllers are well known and have a wide range of applications in the control of analog systems such as servomotors. In order to achieve the desired performance the system output (axis position) is feed-back to the PID controller which generates the system input (motor voltage), in a closed loop. The controller computes the error between the desired system output (reference) and the actual system output. Then, the system input, which is the PID controller output, is generated as weighted sum of the error, its integral and its differential. The weighting coefficients are known as controller gains and referred as Kp, Ki, and Kd. The values of the controller gains determines the performance of the closed loop system and even its stability. The design of PID controllers is outside the scope of this paper, however it should be said that its values are very dependent on the sampling rate at which system output is read and the new value for system input generated. Therefore it is highly desirable to have an accurate sampling rate. For typical mechanical systems, the adequate sampling rate is in the range of milliseconds. Thus, well implemented PID controllers are usually hard real time systems. The PID controller described in this work uses the PC parallel port as an analog I/O interface. Just two bits are used. One to read the system output and the other to generate the system input. As the system input and output are analog variables, a technique called Pulse Width Modulation (PWM) is used to generate (and read) analog values using digital signals. This technique is based on varying the duty cycle of a rectangular wave accordingly to the analog value to be represented. By using PWM, an analog interface can be built without the use of conventional A/D and D/A converters. However, the switching rate of the PWM signal should be fast enough to be filtered by the system under control. For typical mechanical systems that means a few hundreds of microseconds. The implemented system can be characterized by four main tasks: Two PWM tasks which generate the input and output signals, a PID task responsible for the controller in a proper sense and a user interface task. Except for the user interface task, each one of the main tasks has its own time requirements which must be accurately met. The user interface was implemented as a plain Linux process using the NCurses library. Real time tasks were provided by threads under LXRT hard real time mode. The implementation of PWM under RTAI using the timing functions provided by RTAI are presented and the convenience of using these functions for actual real time control is discussed. In Particular, the semantics of rt_sleep() is analyzed in details and it is shown that the current semantics can lead to an confusing interpretation of what a periodic task is and what a task period is. Furthermore the current semantics of rt_sleep() is incompatible with the the semantics of rt_busy_sleep(), which can lead to even more confusion. A new semantics for rt_sleep() is suggested and the corresponding implementation presented.

Graphic Supervisor of Lung Ventilator
River Quispe Tacas, Alejandro Palomino Amaro, Adolfo Ascanio Rafael and Carlos Albino Rivera
River Quispe Tacas

The Units Intensive Cares (UIC) of the Hospitals in Peru, they need of a centralized system that it integrates in a net, the different marks of Lung Ventilator to supervise from oneself place the process of ventilation mechanics, to be a process of high risk; they also need of a graphic monitor of local supervision for the Lung Ventilator that lack this system. The denominated developed system Graphic Supervisor of Lung Ventilator it consists of a sensor of developed gassy flow, a module of acquisition of data to acquire the signs of the process of the ventilation mechanics, software for the graphic user interface monitoreo developed in Linux and Real Time Linux with a net of local area to integrate the Lungs Ventilator. The signs that they supervises are: pressure proximal, breathing flow, relative humidity and temperature of breathing flow. The Graphic Supervisor of Lung Ventilator, allows the professionals of the health to observe the breathing signs of all the patients in a centralized way, this way it can improve the quality of attention to the patients in UIC and to reduce the operative costs for the attention of the patients in the hospitals

A Sample Data Acquisition and Control Application Using RTLab
Calin Culianu and David Christini
Calin Culianu

RTLab is a software project which provides a cross-variant (RTAI and RTLinux) conceptual framework for biomedical experiment interface. The intent is to provide abstract services on top of RTAI/RTLinux and COMEDI for the rapid development of a certain class of control and measurement applications typical in the biomedical field. Applications that follow a periodic acquire-analyze-control pattern can be quickly written using a plugin-style architecture. A simple control application, complete with code, will be illustrated in this paper.

Generic Real-Time Infrastructure for Signal Acquisition, Generation and Processing
Herman Bruyninckx and Peter Soetens
Herman Bruyninckx

This paper presents the design for the real-time core of a generic real-time signal acquisition, processing and generation system. The design is generic in the sense that it can be used in a wide variation of application domains, from the PLC logic of MatPLC, over medical signal processing in the RT-Lab project, to the robot motion control of the Orocos project. It's exactly the functional overlap between these projects that has stimulated the presented design, in the hope of gaining more critical mass for the real-time signal processing core of these, and other, projects. The paper only presents the design of an application-independent real-time signal processing infrastructure, and its implementation on a Linux RTOS, but not the protocols and plug-ins to be provided by the applications, on top of this infrastructure.

RealBOX, A Novel Approach to MiniRTL Implementation for Instrumentation And Control Applications
Nurpinar Akdeniz and Tekin Aydin
Nurpinar Akdeniz

RealBOX is a PC104 form factor computer based on a 486DX2 processor with 8MB RAM and 8MB Disk-On-Chip Millenium. MiniRTL operating system boots from Disk-On-Chip and expands itself to RAM when the power is applied to the box. Our initial aim and the motivation behind our work was to have an embedded system with the following critical requirements which were fullfiled ; -real-time scheduler -operation without HardDisk. -small foot-print (so a solid state memory preferably the Disk-on-Chip) -no file system checks when power goes off and come again We are using the realBOX in our data acquisition and control applications and planning to utilize it for airborne control projects. We are late a little bit to submit this abstract but we strongly hopeful that you will pay attention to our work.

Graphical Programming of Realtime Applications with LabVIEW for Linux RTAI
Thomas Leibner and Gerd Schmitz
Thomas Leibner

The programming of real-time applications nowadays involves multitasking using timing demands with microsecond resolution, inter task messaging including semaphores for synchronization of multiple running tasks. For solving this task efficiently a programmer likes to use graphical visualization methods for program flow, messaging and priority dependencies. Instead of using graphical methods only for debugging and schematic overviews of analysis problems typical for real-time and multitasking, the graphical programming environment LabVIEW(tm) by National Instruments provides state-of-the-art tools for solving programming tasks by just doing graphical formulation of algorithms and data flow. One major disadvantage of LabVIEW, not being able to be used as programming environment for hard real-time in kernel space, could be eliminated using the user space API 'LXRT' of the RTAI 'Real Time Application Interface' for Linux. It is shown, that by implementing a generalized call interface to the 'LXRT' , the user space API of RTAI could be integrated into LabVIEW for Linux. By this extension it is now possible to perform with hard real-time using graphical user space programming. The visual data flow programming of LabVIEW easily visualizes timing and synchronization dependencies. Although the full LXRT API hasn't been implemented yet, a basic set of timing and data acquisition functions for hard real-time are shown to be working. A jitter as low as five microseconds on a Pentium III/500MHz makes it possible to have 20 kHz loops with sophisticated computing, e.g. PID closed loop control and audio filtering, by just doing graphical programming. This is another example of the power of the LXRT user space API of the Real Time Application Interface for Linux, giving us the possibility to do hard real-time from user space.

Pretty Pictures in Hard Real-Time
P. N. Daly, C.F. Claver, D. Dryden, R. Gomez and B. Abareshi
P. N. Daly

The WIYN Tip-Tilt Module (WTTM) was developed as an adaptive optics solution to image degradation due to atmospheric instability and dynamics. The WTTM was successfully commissioned onto the WIYN 3.5m telescope in February 2002 and it currently undergoing shared risks commissioning. In this paper we review the hardware and software design of the WTTM and present some spectacular results from the commissioning data.

Driver Architecture in a Linux World
John W. Linville
John W. Linville

Vendors of modern networking hardware realize that the devices they provide require a great deal of software in order to function effectively. As a result, many hardware vendors provide large amounts of software for use with their devices. However, the prevalent use of the VxWorks® operating system has allowed hardware vendors to become careless with the architecture of the driver software they provide. Often the driver software provided by hardware vendors is difficult to use in a protected environment like Linux®. This paper begins by discussing strategies for making use of such drivers in a Linux environment, and continues by discussing how hardware vendors might architect Linux-friendly driver software. Finally, the paper discusses how vendors can provide first-class Linux support for their hardware and why it is in their best interest to do so. This paper is a must read both for system integrators new to Linux and for driver software architects unfamiliar with the Linux environment.

Teaching Real-Time Control Using Free Systems Software
Kenneth H. Jacker
Kenneth H. Jacker

The paper begins with a short description of the Department's real-time course and its required group projects. This is followed by an overview of the hardware and systems software used in a specific real-time control laboratory assignment. After a discussion of the analysis, design, and implementation of the project, the paper concludes with a brief look at future work.

Loosely Coupled Tool Integration Architecture for Embedded Linux
Seung Woo Son, Hyung Taek Lim, Chae Deok Lim and Heung Nam Kim
Seung Woo Son

When developing applications under embedded Linux, there is a range of software tools to assist the development process. However, they are so tightly integrated that it is not only difficult to integrate into IDE but hard to add an additional tool. They are communicating with each other through their own protocols so that there is much communication overhead between host and target machine. In this paper, we propose loosely coupled tool integration architecture based on lightweight RPC mechanism. The proposed architecture is mainly composed of two agents running on host and target side respectively. To integrate various tools in a seamless way, we suggest well-defined host-to-target protocol and inter-tool protocol. Host agent mediates request from several host tools and interacts with the target agent. The host agent set out a set of common APIs needed for host-resident tool integration. The target agent, the counterpart of the host agent, is a kind of debug demon which serves request from the host agent. As designed for embedded software development, the size of target side agent is about 100KB and consumes less than 5% of CPU time. With the proposed architecture, we easily integrate various host tools using open APIs with low overhead target agent.

GNU Bayonne: Telephony Services for Freely Licensed Operating Systems
David Sugar
David Sugar

In this paper I will talk about the needs and requirements to successfully implement telecommunication services under GNU/Linux, particularly in terms of media processing, both for traditional telephone networks and IP based ones, as well as discussing the GNU projects recent efforts in these areas, particularly in the development of stable high performance and scalable RTP transport (GNU ccRTP) and in the development of GNU Bayonne (the telephony server of the GNU project), and how realtime kernel services impact this area of development.

Shielded Processors: Guaranteeing Sub-millisecond Response in Standard Linux
Steve Brosky and Steve Rotolo
Steve Brosky

Shielded Processors: Guaranteeing Sub-millisecond Response in Standard Linux By Steve Brosky Chief Scientist Concurrent Computer Systems There has been much good work in making standard Linux into a more responsive system for real-time applications. The low latency patches and the preemption patches have allowed guarantees on worst case interrupt response time at slightly above a millisecond. These guarantees today are only met when there is no networking or graphics activity in the system. The shielded processor concept dedicates selected processors in a symmetric multiprocessing system for the real-time components of an application. This paper will describe the implementation of shielded processors in RedHawk Linux and the benefits of shielded processors. It will also present the results of benchmarks for both interrupt response and program execution determinism. Interrupt response time guarantees are significantly below one millisecond and can be guaranteed even in the presence of networking and graphics activity.

Improving the Responsiveness of Linux Applications in RTAI
Luca Marzario, Luca Abeni and Giuseppe Lipari
Luca Marzario

RTAI is a real-time kernel that permits to execute, on the same physical machine, both hard real-time applications and the Linux Operating System. RTAI is particularly useful when dealing with real-time processes that needs a guaranteed low response-time to interrupts. By using a fixed priority scheduler provided with RTAI, it is also possible to schedule periodic hard real-time, and to guarantee the schedulability of the system. In this framework, Linux is assigned the lowest possible priority, and it is scheduled in background, i.e. when no other real-time task requires execution. This is the simplest way to guarantee that the behaviour of the real-time tasks is not compromised by the behaviour of Linux applications. However, in certain cases, under high real-time load, this method can be too restrictive for Linux applications. In certain cases, it is useful to mix hard real-time and soft real tasks activities in the same system. Hard real-time tasks represent critical activities that must finish before their assigned deadline, otherwise the system correctness is compromised. Soft real-time system represent non critical real-time activities: they are required to finish before their deadline, but occasional deadline misses do not compromise the correctness of the system. The most popular example of soft real-time application is a multi-media player: if some video frame is not displayed on time, or if it is skipped, nothing catastrophic happens. The ratio of deadline misses over a given interval of time can be taken as a measure of the Quality of Service (QoS) experienced by the final user: the lower the dealine miss ratio, the better the QoS. Soft real-time multimedia applications are usually executed on Linux mainly because many drivers, libraries and tools for video and sound systems are already available on Linux. When soft and hard real-time applications share the same physical machine, one possibility is to schedule hard real-time tasks as RTAI tasks, so guaranteeing a bounded response time; and soft real-time tasks as Linux processes. However, since Linux is assigned the background priority, the amount of execution time assigned to Linux processes over a given time interval depends on the requirements of the RTAI tasks and can vary a lot from interval to interval. Therefore, the amount of execution time that multimedia streams will receive is quite irregular, and it is difficult to guarantee a-priori a certain level of QoS. In this paper, we propose to apply a well-established technique in the real-time system literature, called Resource Reservation, to RTAI. In particular, we changed the RTAI scheduler to implement the Earliest Deadline First (EDF) scheduling policy and the Constant Bandwidth Server (CBS). With CBS, every task is assigned a capacity Q and a Period P, with the meaning that a task is allowed to execute at least Q unites of time every P units of time. A hard real-time task is assigned a capacity Q greater or equal to its worst case computation time and a period P equal to the task's period. Linux is assigned a capacity and a period as well, that depend on the QoS requirement of the soft real-time applications that execute on Linux. The system is schedulable if $sum_i{frac{Q_i}{P_i}}$. At run-time, every task has a remaining capacity q and an absolute deadline d. According to EDF, the task with the earliest deadline is scheduled to execute. At run-time, Linux is treated exactly as any other hard real-time task: initially, it is assigned an absolute deadline $d = P$ and a remaining capacity $q = Q$. When the capacity of Linux is finished, its priority is decreased by postponing its absolute deadline to $d = d + P$, and its capacity is recharged to $q = Q$. In this way, Linux cannot jeopardize the behaviour of the hard real-time tasks, but it is guaranteed a minimum execution time of Q every period P. This mechanims has very little overhead at run-time. Moreover, it has another advantage in the debug phase. During the development of a hard real-time task, it can happen that the task goes into an infinite cycle. For example the task might actively wait for a condition that does never happen. With a pure fixed priority scheduler, it is quite difficult to see what happens, because Linux is scheduled in background and will never execute again. Instead, with our scheduler, Linux is guaranteed a minimum execution time every period: therefore, the programmer can still record the trace and see the logs indicating the situation. In this paper, we implemented the proposed scheduler under RTAI. It is worth to point out that the proposed mechanism is very general, and it can be implemented with little effort in RT-Linux as well. Then, we run a series of experiments that show the advantages of using our mechanism over a pure fixed priority scheduler with Linux in background. We run some simple hard real-time application consisting of 5-10 tasks with different loads, and a mpeg-player under Linux that receives the multimedia stream from a remote host through ethernet. We measured the jitter experienced by the mpeg player: by using methodology, the ``regularity'' of the player is much higher than using the plain fixed priority scheduler. The paper is organized as follows: after a brief descrpition of the Constant banwidth Server (CBS), we describe our implementation in RTAI and discuss the overhead. Then, we describe the experimental setup and we report the results. Finally, we draw the conclusion and discuss future improvements.

Implementing Resource Reservations in Linux
Luca Abeni and Giuseppe Lipari
Luca Abeni

With the recent development of kernel patches for implementing kernel preemptability and high-resolution timers (and the acceptance of the first patch in the 2.5 development kernels), supporting real-time applications in Linux user-space is no more a dream. However, real-time applications must be run using the POSIX fixed priority scheduler, and we believe that this solution presents a number of problems: for example, either a non-root user is not enabled to run real-time applications (hence, real-time support is useless for most users), or it has the power to starve all the other users' processes (even the daemons, and the root's processes). It is our opinion that to safely support real-time applications a multi-user OS such as Linux should provide Resource Reservations to enable users to access the real-time facilities without being able to starve the system. Resource Reservations are not a new concept, and they have been implemented in some Linux variants (the most notable is Linux/RK). In this work, we propose a new implementation, that fundamentally differs from the previous ones in some important points: 1) Our implementation is non-intrusive, i.e, the whole reservation scheduler is a kernel module that can be loaded at run time, and requires only few changes to the kernel; 2) Since the modifications to the Linux kernel are very limited, we can easily upgrade to new kernel versions, or take advantage of new features implemented in Linux, such as kernel preemptability and high-resolution timers; 3) The scheduling infrastructure that we use is very general, and can be used to implement other loadable schedulers; 4) Compatibility with standard Linux is maintained; 5) Thanks to the algorithm that we implemented (the Constant Bandwidth Server - CBS) and to the careful design of the scheduler infrastructure, our scheduler can cope with aperiodic task arrivals (and with tasks that block and unblock), that cause problems in other reservation-based systems. In this paper, we present the design of our scheduler (showing also how to implement different schedulers based on the scheduling infrastructure that we propose), we compare it with some previous works, and we present a preliminary performance and overhead evaluation. Finally, we describe how a user-level or kernel-level QoS manager can be implemented based on our scheduler, and can be used to enforce a CPU allocation policy, to avoid that a single user can reserve too much CPU to its real-time applications.

Predictability in Embedded Linux and Commercial Requirements
Masatoshi Iwasaki and Tatsuo Nakajima
Masatoshi Iwasaki

In Japan, many campanies who are building complex embedded systems such as cellular phones and degital televisions are considering to adopt embedded Linux for their products. Most of these companies have been adopted the ITRON real-time operating system as their operating systems, but the functionalities are not enough to build complex embedded systems because ITRON does not provide memory protection, and file systems and network systems are provides as additional middleware components. Many future embedded systems need to access various services on the Internet, and Linux already provide a lot of middleware to reduce the development cost dramatically. Japan Embedded Linux Consortium consists of over 100 companies in Japan is now dicussing on how to migrate from ITRON-based embedded systems to Linux-based embedded systems. Especially, many campanies are interested in whether embedded Linux can satisfy timing constraints for their products or not. Our paper describes requirements on timing constraints that should be satisfied in their products. We have been discussing the requirements in Real-Time Working Group of Japan Embedded Linux Consortim, and we like to show whether current Linux can satisfy the requirements.

A Quality-of-Service Enhanced Socket API in GNU/Linux
Hasan Abbasi, Christian Poellabauer, Karsten Schwan, Gregory Losik and Richard West
Hasan Abbasi

With the increase in available network bandwidth and reduction in network latency, more emphasis has been placed on End-Host QoS to provide quality of service guarantees for distributed real-time applications, such as video streaming servers, video conferencing applications, and VoIP applications. End-host QoS requires support from the underlying operating system (OS) in the form of network schedulers and traffic controllers. GNU/Linux supports a variety of network schedulers for the provision of end-host QoS, but no easy-to-use API is provided between applications and system-level traffic controllers. Moreover, existing APIs lack the ability to link QoS attributes with stream or datagram sockets and to associate QoS information with individual packets allowing sophisticated network schedulers to make scheduling decisions based on such information or to link different streams such that their QoS management is coordinated. We propose an extension to the standard Berkeley socket interface that enables applications to easily create and manage connections with QoS requirements. This new API -- called Q-Sockets -- includes per-socket traffic classification that allows the application developer to link a socket connection with a scheduler so that all data going out on this socket is scheduled accordingly. We further allow an application to pass packet-specific parameters to the scheduler for fine-grained scheduler control. Finally, we provide functionality to allow developers to link multiple sockets for the coordinated scheduling of packets on these sockets. We evaluate our approach with a multimedia application using Q-Sockets and a real-time packet scheduler.

An Assessment of Real-Time Robot Control over IP Networks
Gustavo Hommerding Alt and Walter Fetter Lages
Gustavo Hommerding Alt

This paper presents an assessment of the performance of a real time controller using an IP network to link the controller, the sensor and the actuator. This control system is part of a anthropomorphic robot manipulator with two arms and a pan-and-tilt stereo vision head, totalizing 19 joints. Each joint has an actuator, an incremental encoder, an electromagnetic break and an inductive contact sensor. There are also two six-axis force sensors. In order to cope with all devices an distributed control system was implemented. The devices are all connected to an IP network and the real time control loops are configured by software and run over the IP network. The real time requirements of the control loops, which must run at 100Hz rate, are enforced by using RTAI in LXRT hard real time mode. RTAI is also used for monitoring the time behavior of the network packets, in order to deal with the best-effort of assumption of the IP network. Indeed, an IP network assures that it will do its best effort to deliver each data packet, but there is no guarantee that the packet will be delivered. However, a real time control loop must run at an accurate rate or the system performance or stability will be impacted. Therefore, sensor data must be feed to the controller at the same rate, or it will not be able to compute the control action. Hence, the ability of the IP network to deliver the packets with reliability and rate accuracy is very important. Of course, IP networks were not designed with such applications in mind, but it is very difficult to neglect the low-costs due to mass-production. The time behavior and the performance of a controller implemented over an IP network is characterized and compared with those obtained with a local controller. A method to deal with lost packages is also proposed. The key to this method is to note that a control network does not carry digital data in the same sense a generic computer network. A control network carries control signals in a digital format, hence the corruption of the digital data can be tolerated as long as the control signal can be recovered. This paper proposes a method to recover the control signal even in the presence of lost or late packets.

RTLinux POSIX API for IO on Real-time FIFOs and Shared Memory
Cort Dougan and Matt Sherer
Cort Dougan

The primary means of communication between RTLinux tasks and Linux tasks are realtime FIFOs. They were limited by the fact that there was a static number of them and their names were limited to /dev/rtf0 through /dev/rtfXX. Starting with RTLinux/Pro 1.2, we have added a means for creating real-time FIFOs with arbitrary names and locations that can be created and operated on just as with ordinary UNIX FIFOs.

Bandwidth Allocation in RT-Linux
Vladimir Pajkovski
Vladimir Pajkovski

In systems intended for handling continuous media (both video and audio), standard Linux does not provide suitable scheduling of the system resources regarding the complexity of the tasks. Where such a system consist of mixed applications, conventional computing is executed at the same time with hard real-time tasks, single scheduling policy is not able to satisfy the demands of the real-time application. If proportional resource allocation is applied, each task can recive a fair share of a resource. Different sheduling policies are appropriate for diffent applications. In that matter, few Fair-sheduling algorithms are tried out. Fair-sheduling algorithms make sure that each resource gets proportional share of the CPU while executing the task. For implementing the algorithms and testing behaviour of the application, RT Linux is used.

Using Linux Kernel Facilities from RT-threads
Nicholas McGuire
Nicholas McGuire

RTLinux has been focused on developing a POSIX compliant RTOS layer that operates below Linux - within this development communication between RT-threads and kernel as well as user-space have been quite limited, in part due to the inherent restrictions of a RTOS and in part due to the restrictions imposed by POSIX, or rather the combination of these two sets of restrictions. As RT-threads are operating in the same address-space as the Linux kernel itself it seems natural to investigate what capabilities within the Linux kernel could be made available to RT-threads as to enhance communication paths too and from user-space and non-rt kernel-space. In this paper a few of these, very non-portable, absolutely non-POSIX, paths are described. The main resources of interest to RT-threads being: Tasklets, Kernel Threads, Software interrupts, Global Variables. Accessing Non-RT facilities in kernel space Presenting a few simple examples the mechanisms and problems with utilizing these capabilities of the Linux kernel from within RT-context are discussed.

FSMLabs RTLinux PSDD: Hard real-time with memory protection
Victor Yodaiken, Michael Barabanov, Cort Dougan
Victor Yodaiken

This paper describes the process space (user mode) real-time facility on RTLinuxPro. The Process Space Development Domain (PSDD) is available on PowerPC and X86, supports SMP, and has extensive support for developing simulations including a secondary frame or slot scheduler. The API is a subset of the standard RTLinux POSIX Threads API and, in fact, process space threads can be recompiled to run as kernel space threads with no program-ming changes. The standard debuggers work with process space threads. One useful feature of PSDD is that process space threads share memory with the host UNIX process and are able to, for example, dynamically update variables shared between real-time I/O threads and a non-real-time simulation. PSDD supports use of Fortran and C++ as well as C. The paper covers: Real-time and memory protection; Overview of Process Space Real-Time and examples; The Frame Scheduler and examples; Technical Overview and API; Credits and History.

Optimal Pulse Patterns Modulator Using Real Time Linux
David Antonio Ulloa Guzman
David Antonio Ulloa Guzman

Since that microcontrollers and DSP's stated to be used in power electronics many ideas could be realized and the Optimal Pulse Pattern Modulator was developed together with the Trajectory Controller in order to correct its problem. Working in this kind of research one need a stable and comfortable system which must be flexible to make almost any change. According to that a combination between a Hitachi SH2 core and a personal computer under Real Time Linux was implemented. This paper describes some aspects about the theory of this modulator, how that was implemented and shows results obtained with this system.

A Simulation Framework for Device Driver Development
Yan ShouMeng and Zhou XingShe
Yan ShouMeng

Proprietary I/O devices are often involved in many computer application systems,especially in embedded systems. In such scenarios, Developers have to develop drivers for these devices to utilize them under some embedded operating system. Traditionally, development of device driver can undertake only after hardware design finishes, for the writing and debugging process involve many interactions with real hardware. However, with the increasing competition among corporations, shorter time to market is important for a successful production. To shorten the development cycle of device driver, this paper propose that using a simulation device as the target of driver's operation. Previous works on device simulation focus on how to support development of application level software. VxSim[1], a component in Vxworks Tornado environment for platform simulation, only support application software which requiring very simple interactions with hardware, but is not suitable for software with extensive device accesses, especially device drivers. A simulation development method for device drive is proposed in paper[2], which simulate all system routines in a application and compile and link the driver source code with the application together. This method can only make some testing work on device driver, but cannot support the simulation of the running of the entire application system that based on the device driver. This paper presents a device simulation mechanism based on an abstraction model of I/O devices. Then a simulation framework for device driver development is discussed. This framework can effectively support writing and debugging of device driver without the need of hardware existence. For the running of application software is relying on the underlying device driver, it is natural that this framework also supports the development of the entire system without requiring hardware involvement.

POSIX Application Defined Scheduling on RTLinux
Josep Vidal, F. Gonzálvez and I. Ripoll
Josep Vidal

Although in the last years many scheduling algorithms has been proposed, just few of them has been truly implemented in real RTOS. In most cases, the availability of RTOS source code or the complexity and risks involved in introducing new politics in kernel, causes that major part of nowadays RTOS only implements fixed priorities politics. To solve this, M. González (Universidad de Cantabria) is proposing a new POSIX standard called application-defined scheduling, that allows to introduce new scheduling politics without having to modify O.S. kernel's. This paper describes our experiences in the implementation of application-defined scheduling in RTLINUX. With this feature, several application-defined schedulers, implemented as special threads, can coexist in the system in a predictable way.
A Remote Surveillance and Control System Prototype with RTLinux and RTNET
Yan Shoumeng and Zhou Xingshe
Yan Shoumeng

An embedded real-time system prototype for remote surveillance and control is presented. The system consists of an embedded single-board and a few simulators for devices of which status is monitored and behavior is controlled. These components are connected through a fast switch via which the status information of devices is sent to the single-board computer periodically. And then the single-board computer will publish the status information to Internet or Intranet through an embedded web server called GoAhead. The operators can browse the status of devices and issue device control command via any standard browser (e.g. IE or Netscape) without additional client side software installation bother. To guarantee the timely data collection of the single-board computer, RTLinux was employed. But considering RTLinux cannot access network on the RT side, we employed the RTNET, which implemented a IP stack on RT side. The data is collected by a real-time task and then fed to a user space process via FIFO and share memory. The application code for client side was a JAVA applet and would be downloaded upon the operator¡¯s browse request. The applet runs on the client side and provides the graphical presentation of data and the operating interface for operator. This prototype system will have broad application scenarios, such as Device Remote Surveillance system especially the remote monitoring of device that located in the distant mountain and hazardous scenario.
Simulating a Vehicle with RTLinux for the Testing of Transmission Control Units
Karl Rentsch
Karl Rentsch

As part of the software development cycle engineers regularly need a systematic method of testing a product prior to release. In the automotive industry this testing is critical to the safety of the users. Complex embedded control units must be tested under precise conditions representative of an automobile. This paper looks at the signals and system requirements necessary to simulate a vehicle environment in hard real-time, the development of an automated test facility for an embedded transmission control unit and the RTL tricks and techniques used along the way. Many of the complexities in developing a vehicle simulation lie in the diverse range of signals required. In the past vehicle manufacturers have relied on wiring looms to share signals between sensors and electronic modules. Today, in-vehicle networks are replacing the need for looms and simplifying the sharing of information between electronic modules. Any vehicle simulation must be able to synchronize packet data with digital and analogue signals and be highly configurable. Extended simulations require an efficient method of describing a sequence of time critical events. These sequences must combine all data types, be repeatable with sub-millisecond precision and provide a true representative of in-vehicle signals. This paper describes the use of language tools, operating from user-space, cleverly controlling real-time signal sequences One of the best methods to verify the simulation is by recording I/O signals in-vehicle for direct comparison. By developing a miniRTL based “black box” we created an in-vehicle data recorder backward compatible with the test facility. This not only allows vehicle signals to be logged but also replayed as a real-time simulation at will. This paper describes methods of data synchronization, the development of language tools for writing real-time signal sequences, the incorporation of a miniRTL based system in the recording and playback of vehicle signals and automated processes for benchmarking the controllers behavior.
Calling Plain Linux Device Drivers Functions from Hard Real Time Tasks
Walter Fetter Lages
Walter Fetter Lages

Processes running under plain Linux usually access I/O devices through device drivers implemented monolithically in the kernel or as loadable kernel modules. This has the advantage of exposing standard interfaces for all I/O devices and enables processes running without root privileges to access I/O. Unfortunately, hard real time tasks can not use the standard kernel interfaces to I/O devices, since that would force an execution of kernel code, which does not comply with the hard real time requirements. This problem has been dealt with by implementing special device drivers to be used by real time tasks. Nonetheless, those special device drivers adhere more to the concept of a library than to the concept of a device driver. Each special device driver exposes his own set of functions that can be called by real time tasks, but there is not a common set of functions among all special device drivers. In other words, the concept of uniformity is not implemented. Obviously, it is highly desirable to use the same device driver for programs running under plain Linux or under real time. If soft real time is enough for the application, LXRT can be used. LXRT tasks runs in user space but under control of the real time linux scheduler. By running under user space, LXRT tasks can use standard C library calls to access I/O through standard device drivers. However, to access the device driver a portion of the plain Linux kernel code is executed on behalf of the LXRT task. Since the temporal behavior of the kernel code is not deterministic, the real time scheduler is force to switch the LXRT task to soft real time mode while it is executing kernel code. This paper addresses that problem and shows that under some assumptions it is possible to avoid the switch to soft real time mode while accessing device drivers and therefore the hard real time properties of the task are retained. By using the method proposed in this paper, the very same device driver can be used by plain Linux processes, by hard real time tasks running in kernel space, by LXRT tasks running in soft real time mode and by LXRT tasks running in hard real time mode. The effectiveness of the method is demostrated by the implementation of a device driver for a robot controller. Test programs written in C++ as plain Linux programs, as real time kernel modules, as LXRT soft real time tasks and as LXRT hard real time task, all accessing the controller through the device driver have their temporal behavior discussed.
Yet Another RTAI Interface
Francesco Mandracci
Francesco Mandracci

The described library is a software level that enables modules to run either in user-space (POSIX threads) or real-time (RTAI tasks), without filling up the code of ifdef and forcing a well-defined code structure. It is different from LXRT: here we twice compile the same source code in order to obtain a user space executable and a kernel module. The library provides a software abstraction for: threads, semaphores, memory allocation, timing, fifo-byte-queues (memory ring buffers, named pipes, rtai fifos and tcp/ip sockets). Moreover threads/tasks needs to be structured in a strict way: each thread/task must provide five callbacks, init(), start(), step(), stop() and destroy(). Each callback must return, no infinite loops allowed. The timing source in user space is the operating system clock. In real time you can choose among the RTAI timing, one interrupt (say IRQ 7), one PCI timing source. 1) What you loose You won't be able to use the full POSIX and RTAI interfaces. And in user space you won't be able to write your main() function. 2) What you gain You gain a known-to-work structure to start from. You gain the ability to run the same source code in user space and in real time. You can less painfully debug an algorithm in user space and then try it in real time. 3) Past to present The library was developed for a numerical control for a laser cutting machine, with timings of 30 ms in user space and 0.1 ms in real time. The timing source is the same PCI servo board used to control the motors. 4) Future The process of releasing it with GNU General Public License is in progress.
Realtime Dynamic Systems Implementation with DSLib
Ivan Martinez, Jim Luther and Elbert Hendricks
Ivan Martinez

The Dynamic Systems Library (DSLib) is a newly developed interface tool for use between block-diagram modelling and realtime programing. DSLib is a set of C++ classes representing components of block-diagram modelling: blocks (functions, integrators, summing points...), inputs, outputs, schedulers, etc. Such classes can be used in standard C++ code to define simply a dynamic system from a block-diagram approach. Once the system is properly defined, DSlib classes generate the implementation of the dynamic system for a specific realtime operating system (DSLib and RTAI, at the moment). DSLib has the following advantages with respect to ease of implementation: - It is an easy tool for users familiar with dynamic systems modelling. There is a direct equivalence between a block diagram and its DSLib definition. - It encapsulates the target operating system, so standard C and C++ is the only required programming knowledge. DSLib will generate the specific functions for realtime threads definition and interaction, memory managing, etc. For interaction of the dynamic system with the external world, DSLib also provides classes to easily define realtime fifos, shared memory, and even hardware inputs and outputs by using the Comedi library. From the point of view of the software developer, DSLib can be the kernel of any dynamic system modelling application. For example, a Matlab-like application can be obtained by just adding a user interface. For more info, please visit http://dslib.sourceforge.net/  

Valid XHTML 1.0 Transitional

To top