Chimera Home Page  Chimera Real-Time Operating System David B. Stewart and Pradeep K. Khosla Advanced Manipulators Laboratory, The Robotics Institute, Carnegie Mellon University, Pittsburgh, PA 15213 Questions regarding Chimera should be directed to Dr. David B. Stewart.The Advanced Manipulators Laboratory, at Carnegie Mellon University, hasdeveloped the Chimera Real-Time Operating System, a next generationmultiprocessor real-time operating system (RTOS) designed especially to supportthe development of dynamically reconfigurable software for robotic andautomation systems. Version 3.0 and later of the software is already being usedby several institutions outside of Carnegie Mellon, including university,government, and industrial research labs. Chimera provides most of the features available in commercial real-timeoperating systems, and performs as well as VxWorks, OS-9,VRTX, and LynxOS. Insome cases, such as interprocessor communication, Chimera performance is anorder of magnitude faster. The main strength of Chimera, however, lies in themultitude of features offered which are necessary for quickly developingreconfigurable and reusable code, but are not available in other real-timeoperating systems. Chimera is a VMEbus-based operating system which supports multiplegeneral and special purpose processors. General purpose processors come inthe form of single-board-computers (currently MC680x0 family of processorssupported) which we call Real-Time Processing Units (RTPUs). Chimera hasa full-featured real-time kernel which supports both static and dynamicscheduling, extensive error detection and handling, a full set of libraryutilities, several different multiprocessor communication andsynchronization primitives, and a fully integrated host workstationenvironment. More detail into each of these is given below. Both C andC++ programming languages are supported, with the GNU CC compiler beingused for cross-compilation for the target hardware. The Chimera real-time kernel is multitasking, allowing multiple tasks torun concurrently. By default, the kernel supports both fixed (e.g. ratemonotonic algorithm) and dynamic priority scheduling (includingearliest-deadline-first and the maximum-urgency-first schedulingalgorithms). It uses a policy/mechanism separation which allows the userto easily customize any part of the kernel or to add a new scheduler. Thecontext switch time is 66 usec, which includes the complete save andrestore operation of both the main CPU and MC68882 co-processor registers.The dynamic scheduler takes 26 usec per reschedule operation. Hardware timers are controlled by the operating system, thus allowingsoftware developers to write programs with timing constraints for anynumber of tasks. This method allows any number of tasks to pause on a timesignal, regardless of the number of timers available in hardware, and takesaway the need for the user to program any timers. Periodic and Aperiodictasks are all programmed in the same way, and deadline and execution timesmay optionally be specified for use with both static and dynamic schedulingalgorithms. For small delays, a "delay" utility automatically times thespeed of the processor, and performs an empty loop for the duration of thedelay, which is specified in seconds. The kernel also supports high-performance local semaphores (7 usec fornon-blocking call on a 20MHz MC68020). UNIX-compatible system calls areusually implemented in user space in order to minimize kernel overhead andimprove response time of applications. C-language interfaces to local,VMEbus, and mailbox interrupts are provided, which allow quick developmentof interrupt-driven applications. The kernel automatically configuresitself to use the built-in devices of the RTPU for providing theseservices, allowing the same binary executable to run on several differentmodels of RTPU, as long as they use the same processor family. An extensive set of utility libraries are provided, including typical UNIXlibraries (e.g. strings, math, random, time, etc.), a concurrent standardI/O (e.g. printf, fgets, etc. with multitasking synchronization), a matrixmath package (e.g. addition, inverse, gaussian elimination, determinant,etc.), a command interpreter library for quickly developing customcommand-line interfaces, a configuration file reading utility, and avariety of other useful utilities. Chimera has elaborate error detection and error handling capabilities.Its most prominent features are the global error handling and deadlinefailure handling mechanisms. With the global error handling, errors withinthe system or user modules generate an error signal, which in turn invokesa previously defined error handler. It completely removes the need to haveto check error return values, such as if (read(...) == -1) thenperror(...). A default error handler is provided to print out an errormessage and abort the task. The default handler can be overriden by anynumber of user-defined handlers. The handlers can be assigned to specificerrors, or any set of errors based on the module or scope where the erroroccured. Processor exceptions also generate error signals, allowing bothprocessor exceptions and software errors to be handled with a singlemechanism. The mechanism is also able to detect various memory corruptionproblems, thus aiding in tracking down bugs in the system at an earlystage. A debug mode causes the exact file, module, and source code linenumber of where the error handling was invoked, as well as a trace of anyuser-defined error handlers called, to aid in debugging. This form oferror handling allows the separation of program code and error handlingcode, thus making the code much easier to develop and maintain. The deadline failure handling operates in a similar manner to the globalerror handling, except that it detects timing errors, such as misseddeadlines, insufficient CPU time avaiable, and maximum estimated CPU timefor a task surpassed. User error handlers can be installed to alter thedefault action of the system. If the global error handling is not enabled, then standard system calls(such as open(), read(), etc.) have the functionality of their UNIXcounterparts; for example, they will return -1 on error, and set errno. Chimera is a true multiprocessor real-time operating system, unlike mostcommercial RTOS, which are single processor operating systems that arereplicated on multiple CPUs and communicate with each other using some formof network protocol. The real-time kernels communicate with each otherwith a low-overhead, non-blocking message passing mechanism which we callexpress mail. This underlying system communication provides the basis formany different user-level real-time multiprocessor communication andsynchronization mechanisms, including dynamically allocatable global sharedmemory, remote semaphores, prioritized message passing, global statevariable tables, multiprocessor subsystem task control, remote procedurecalls, host workstation integration, remote symbolic debugging,triple-buffer external subsystem communication, and the extended filesystem. Chimera provides many tools for quickly developing dynamically reconfigurablesensor-based control systems, such as the multiprocessor subsystem task controlmechanism, the global state variable table, reconfigurable device drivers,generic sensor/actuator and special purpose processor interfaces, and aconfiguration file reading mechanism. The operating system automaticallyintegrates the reconfigurable modules by creating and initializing tasks on theappropriate RTPUs, setting up inter-module communication paths, handling theirtiming and synchronization, catching and directing signals which control flowof an application, and providing on-line information of a subsystem such asstate of each task, measured versus desired frequency, missed deadlines, andexecution and CPU utilization of each task, through the use of a noveltool built-into the kernel which we call automatic task profiling. Chimera provides a network interface to Onika, so that programmers canwork with real-time code graphically by combining icons representing real-timemodules into reusable software. Both high-level event-driven applicationsand low-level feedback software can be generated, modified, debugged, andexecuted in this fashion. Chimera is already being used by many systems in university, industry,and government labs. These include Carnegie Mellon University, The JetPropulsion Laboratory, California Institute of Technology, ConcordiaUniversity, Air Force Institute of Technology, and University of Alberta.Chimera has allowed all of these systems to share both software andhardware, thus reducing the development costs and improving the flexibilityof applications. Chimera has also proven itself to be anexcellent testbed for real-time systems groups, because every part of thekernel can easily be overriden by user's code. Click here for an annotated presentation of Chimera 3.0, The Real-Time Operating System for Reconfigurable Sensor-Based Control Systems. Click here for the Chimera v3.2 manual.HARDWARE SUPPORT: Chimera Hardware Support List October 1, 1993.RTPU drivers (General Purpose Processor Boards, on which Chimera kernel is executed)model processor Description--------------- --------------- --------------------------------------------IV3201A MC68020 Ironics IV3201AIV3204A MC68020 Ironics IV3204AIV3220 MC68020 Ironics IV3220IV3230 MC68030 Ironics IV3230PME6833 MC68030 Radstone PME 68-33IV3207 MC68040 Ironics IV3207 (expected Jan. 1994)ADT drivers (Bus adaptors for hooking up a Sun host workstation to a VMEbus.)model host slave driver Description--------- ------ ------ ------ -------------------------------------------BIT3_412 VMEbus VMEbus hxm BIT3 Corp. Model 412BIT3_413 VMEbus VMEbus hxm BIT3 Corp. Model 413BIT3_466 Sbus VMEbus sxm BIT3 Corp. Model 416PTSBS915 Sbus VMEbus pxm Performance Technologies, Model PT-SBS915 (expected Jan 1994)SPP drivers (Special Purpose Processors, which execute Chimera executive, and operator as slave processors in the system)model driver nproc size(hex) Description--------------- ------ ----- --------- ------------------------------------MC3200 mcfpa 1 200000 Mercury 3200 FPUSKYI860 bolt 1 400000 Skybolt i860 FPUIOD drivers (I/O devices)model type driver nports size(hex) Description---------- ---- ------ ------ -------- ------------------------------------BIT3_412 MEM bit var var BIT3 Model 412BIT3_413 MEM bit var var BIT3 Model 413DT1401 ADC dtadc 32 10 Data Translation ADC/DACDT1401 DAC dtdac 2 8 Data Translation ADC/DAC *1DVME601B ADC diadc 16 10000 Datel Intelligent ADCIV1623 PIO ipio 6 20 Ironics PIOIV1640 DAC idac 8 10000 Ironics DACIV1642 ADC iadc 16 80 Ironics ADCIV1643 DAC mdac 16 20 Ironics ADC (same as MPV904)IV1645S ADC iadc 16 80 Ironics ADCIV3220 SIO isio 2 20 Ironics SIO, local to IV3220 RTPUIV3230 SIO isio 2 20 Ironics SIO, local to IV3230 RTPUMPV901 ADC iadc 16 80 Burr Brown/Pentland ADC (same as IV1642)MPV904 DAC mdac 8 20 Burr Brown/Pentland ADC MPV950S ADC iadc 16 80 Burr Brown/Pentland ADC(same as IV1645S)MPV954 DAC idac 8 10000 Burr Brown/Pentland ADC (same as IV1640)TRC005 RCB trpi 3 40 Trident Robotics Puma RCBVMIC4100 DAC vdac 16 20 VMIC DACVMIC2510B PIO vpio 2,4,8s 10 VMIC PIOXVME500/* ADC xadc 16,32h 400 XYCOM ADCXVME590/* ADC xadc 16,32h 400 XYCOM ADC (same as XVME500/[123])XVME505/* DAC xdac 4 100 XYCOM DACXVME595/* DAC xdac 4 100 XYCOM DAC (same as XVME505/[12])XVME240 PIO xpiofts 4 400 XYCOM PIO for LORD FTS[SIO=Serial I/O, ADC=Analog-to-Digital Converter, DAC=Digital-to-AnalogConverter, PIO=Parallel I/O, RCB=Robot Control Board, MEM=Shared MemoryInterface]SAI drivers (drivers for sensors and actuators)model Description----- ------------------------------------------------------------dim6 'Dimension 6' six-dof trackball; uses an SIO-type IOD driverpumad Puma Driver, uses RCB-type IOD driverlfts Lord Force Sensor, uses PIO-type IOD driverpgrip Puma pneumatic gripper, uses RCB-type IOD drivervis External Vision Subsystem, uses MEM-type IOD driver |
|