http://www.rts.uni-hannover.de/rtaddon/
This page contains a few patches, tools, or examples for Xenomai and
RTAI, mostly developed by people of the Real-Time
Systems Group at the University of Hannover. All content is
licensed under GPL where nothing else is stated. Check-out and enjoy! The Real-Time Driver Model (RTDM) is intended to provide a unified environment for developing and using devices drivers under real-time Linux. It comes with a POSIX-like upper interface to address devices from both user and kernel space real-time tasks. On its lower end, it offers a small but powerfull API to write real-time drivers for those devices. RTDM has been merged into Xenomai (former RTAI/fusion branch)
on 2005-07-20 and comes with official releases since 2.0 (actually,
since fusion-0.9). RTAI gained RTDM support with release 3.3. The RTDM
layer for Xenomai is implemented as a skin. Xenomai also comes with a
full-featured serial devices driver for RTDM (see 16550A in the drivers
directory). Further information can be found in the API
documenation of Xenomai. For examples of RTDM drivers and
applications see the Xenomai source code, e.g. the CAN-Stack
or the examples
repositroy, or have a look at RTnet.
Some bleeding-edge patches to fix, enhance, or cleanup Xenomai and
Adeos I-pipe are kept in the patch repository
on this server. They are either not yet finished, under discussion, or
simply too new to be found in the official source code repositories.
Have a look, give it a try if you find something interesting, and
please post feedback to xenomai-core at gna.org or adeon-main at
gna.org. This driver addresses Hilscher InterBus master cards (CIF IBM for PC/104 or ISA) and makes the I/O data of the attached InterBus slaves available through RTDM-based process image devices. Requires Xenomai with RTDM support. Beyond providing support for this specific bus and adapter, this driver acts as a prototype implementation for a generic process image device class, which is intended to access process data over various kinds of field busses, higher level protocols, or virtual devices.
Real-Time Soft-PLC CoreEver wondered how to create a hard real-time soft-PLC using only free software? Here is an answer: an examplary PLC core for POSIX skin of Xenomai. This mini PLC makes use of the great IEC-61131-3 compiler of MatPLC. The I/O interface is based in general on the process image device profile for RTDM and in particular on the InterBus master driver presented above. This means that, for attaching your own process, adaption of the device configuration will likely be required (same scenario as above: one Phoenix Contact I/O slave). You can also easily implement a different I/O interface. The build process works as follows: MatPLC's iec2cc compiler is used to translate your 61131 program written in instruction language (here: demo.il) or structured text into a C++ intermediate file. This file and the provided framework will then be compiled to a runtime binary for the real-time target system.
Socket-based CAN DriverA highly portable socket-based CAN device API has been developed within the Socket-CAN project. A hard real-time capable implementation of this API can be found in Xenomai. It is based on the RTDM layer, thus could also be ported over other RTDM-providers like RTAI. The related CAN device profile for RTDM is available online and also comes with the Xenomai package (since 2.3). This page now only contains the historical SJA1000 CAN driver, developed as a proof-of-concept for the CAN stack in Xenomai:
SMI Register Manipulation ToolThe System Management Mode of modern x86 systems, which is entered via System Management Interrupts (SMI), is a plague when it comes to low latency real-time requirements. Fortunately, SMI can be switched off on recent Intel chipsets. Xenomai already comes with built-in support for such a work-around, configurable in the kernel. RTAI has an (unhandy) separate kernel module for this. But when playing with PREEMPT_RT patches, you were lost so far. Here comes the smictrl tool into play. It can be used to fiddle with the SMI register of modern Intel chipsets. Invoked without arguments, it dumps the register value. Via smictrl -s <value> you can set a new value. A good start to reduce SMI-related latencies is to clear bit 0, which disables SMI completely. Warning: Disabling SMI support may also disable overheating safety belts of your system. Make sure processor and chipset are adequately cooled before turning all SMI support off.
© 2005-2007 Jan Kiszka - kis...@rts.uni-hannover.de |