VxWorks 5.2

(Annotations on the VxWorks Propoganda is in Red)

 VxWorks(R) is the premier development and execution environment for complex real-time and embedded applications on a wide variety of target processors. Three highly integrated components are included with VxWorks: a high performance scalable real-time operating system which executes on a target processor; a set of powerful cross-development tools which are used on a host development system; and a full range of communications software options such as Ethernet or serial line for the target connection to the host.

Real-time embedded systems are customized for specific applications. Unless the real-time embedded software is carefully customized for the specific application within the constraints of the physical device, it is hard to imagine how any benefit from the customized hardware is realized.

 On this foundation, Wind River has built an array of innovative features focused specifically on the requirements of real-time developers, allowing them to concentrate on getting higher-quality products to market faster, rather than whether their development environment will keep pace with the industry.

In modern hi-tech engineering software, not hardware, characterizes the high-quality custom crafted embedded system product. High quality custom embedded system products are often implemented as highly crafted customized software that runs on generic platforms. It makes little sense to believe in the general case that a high quality custom embedded system product can be implemented by means of generic software on a custom hardware platform. The generic software will tend to obscure any benefit obtainable for the customized hardware. The customer really needs a small highly craftable operating system like SOS16/SOS32 that does not get in the way of the embedded system application rather than a generic O.S. like VxWorks.

Adherence to Standards

Software is a strategic asset for corporations. When software adheres to recognized standards, investments are protected, and migration issues are greatly reduced for future business decisions.

VxWorks supports a wide range of industry standards including POSIX 1003.1b Real-Time Extensions,

Critical real-time functions are different in different environments. It makes more sense to craft the real-time functions as needed for the specific embedded systems task.

ANSI C (including floating point support)

Practically all modern C development environments provide ANSI.

and TCP/IP networking.

The last thing, that a real-time custom networking or packet switching oriented embedded system is likely to need, is a generic implementation of the networking layer.

These standards foster strong interoperability in multi-vendor environments, promote portability, and protect the user's investment in development and training.

If the user's engineering staff cannot learn, maintain, modify and extend highly crafted embedded system software system, the user should not be in the embedded system business.

Throughout its history, Wind River has been an energetic proponent of standards efforts in the industry.

In the hopes that a potential user will shut off brain on the invocation of the magical mantra of STANDARDs.

For example, the company is currently working toward ISO 9000 certification, and is also an active POSIX committee member.

ISO 9000 is to manufacturing product as a driver's license is to driving (if the would-be driver wrote the driving test). A real driver's license does not mean that a driver is a good driver. ISO 9000 means even less with regard to the quality of a vendor.

High Performance Microkernel Design

At the heart of the VxWorks run-time system is the highly efficient wind(R) microkernel. This microkernel supports a full range of real-time features including fast multitasking, interrupt support, and both preemptive and round-robin scheduling. The microkernel design allows VxWorks to minimize system overhead and respond quickly to external events. Kernel operations are fast and deterministic-for example, context switching requires only 3.8 microseconds on a 68K processor (MV167C board) Interrupt latency is less than three microseconds.

Neither time value is particularly impressive. Providing the "full range of features" just means that the engineers will spend weeks diddling with the software in an attempt to get close to the level of performance they would have obtained with a reasonably craftable embedded system OS (like SOS16/SOS32) that they should have used rather than a generic embedded system OS.

VxWorks also provides efficient intertask communication mechanisms, permitting independent tasks to coordinate their actions within a real-time system. The developer may design applications using shared memory (for simple sharing of data), message queues and pipes (for intertask messaging within a CPU), sockets and remote procedure calls (for network transparent communication), and signals (for exception handling). For controlling critical system resources, VxWorks provides several types of semaphores -- binary, counting and mutual exclusion with priority inheritance.

Embedded system intertask communications relates to the nature of the job a group of cooperating tasks are performing rather than to the OS as a whole. Generic intertask communications systems are often performance killers, or the engineers waste more time crafting them to the job than they would have needed to implement them in an appropriately craftable embedded system O.S.

Scalable Run-Time System

VxWorks is designed for scalability, enabling developers to allocate scarce memory resources to their application, rather than to the operating system. From deeply-embedded designs requiring a few kilobytes of memory, to complex high-end real-time systems where more operating system functions are needed, the developer may choose from 80 different options to create hundreds of configurations. Individual modules may be used in development and omitted in production systems.

Perfect! VxWorks provides engineers with the opportunity to spend weeks tweeking configuration options even though none of them would have a high probability of being appropriate for the unique target embedded system application.

 Furthermore, these individual subsystems are themselves scalable, allowing the developer to configure VxWorks run-time software optimally for the widest range of applications. For example, individual functions may be removed from the ANSI C run-time library,

Wow! VxWorks has the typical functionality that any development system has when it supports libraries.

or specific kernel synchronization objects may be omitted if they are not required by the application.

An embedded system OS should be small to start. If the engineers are to start with a generic operating system and then must determine which pieces need to be discarded, they could almost start with some variant of Unix.

Powerful Development Environment

To speed the development of real-time and embedded applications, VxWorks offers a rich and fully integrated environment tuned for developers' needs. Host-based tools included with VxWorks at time of purchase consist of a cross-compiler and the powerful remote source-level debugger VxGDB(TM). Target tools include an interactive C-interpretive shell and linking loader for rapid prototyping, as well as libraries of over 1100 utility routines. Optional VxWorks accessory products include VxVMI(TM) for virtual memory interface, VxMP(TM) for multi-processing and VX-Windows for graphics support. Optional WindPower(TM) host-based tools include the WindView(TM) real-time dynamic system visualizer, the StethoScope real-time data monitor, WindC++(TM) (including the popular fostreams class library), WindC++ Gateway for ObjectCenter, and the VxSim(TM) simulator.

Nothing described above is harmful, but a need for any of the above hardly means that the customer should purchase VxWorks.

Host Tools

Standard host development tools included with VxWorks consist of a cross compiler toolkit and the VxGDB source debugger.

The GNU Toolkit is a fully productized and supported version of the popular and widely available GNU cross-development tools. The GNU Toolkit includes gcc, an ANSI C cross-compiler, assembler and linker optimized to generate fast and compact code.

The VxGDB remote source-level debugger allows the target application to be debugged transparently from the host. The connection between host and target is either a network running TCP/IP (Ethernet or serial), a serial line with ROM target monitor debug agent, or an in-circuit emulator. VxGDB has an intuitive, easy-to-use graphical user interface that allows powerful debugging commands to be executed. VxGDB supports TCL (the Tool Command Language) which enables development of custom debug commands by users wishing to customize and extend the debug environment.

Nothing described above is harmful, but a need for any of the above hardly means that the customer should purchase VxWorks.

VxGDB supports two debug modes: task (application) level and system level. With task-level debug mode, multiple instances of VxGDB may run concurrently-each instance associated with a different task. This allows one task to be debugged without affecting any other task. Breakpoints only apply to tasks in which they are explicitly set. System-level debug mode, using the VxMon(TM) ROM monitor, provides global breakpoints, and even allows the debugging of device driver interrupt routines. In both debug modes users may stop, resume, and alter program execution, as well as examine program and system resources such as the stack, data objects, symbol table, and source code. Breakpoints may be set at source lines, at functions, or specific addresses. Specific commands may be executed automatically at breakpoints.

Rather standard debugger features -- not uncommon 10 years ago and pervasive today.

Target Tools

Target tools include extensive system diagnostics and performance monitoring, application prototyping facilities, and dynamic linking and loading for rapid edit-test-debug cycles or dynamic run-time flexibility. System information display routines report critical diagnostics and performance for:

System State: CPU activity, memory usage, partitioning, and virtual memory; file system information such as file descriptors, status of loaded modules, semaphores, symbol tables, shared memory and system objects; network interfaces (TCP, IP and UDP protocols, sockets, routing statistics).

Task and Application States: contents of task control blocks and registers, timers.

Devices and Remote Resources: status of peripheral devices, SCSI, mounted NFS devices, file system information such as exported file systems of a remote host.

Nothing special -- and a very little that is sine qua non for all embedded systems.

Shell

Unique to VxWorks is the interactive shell interface which allows users to interact with all VxWorks facilities. Unlike other "shells," the VxWorks shell provides one simple powerful capability: it can interpret and execute almost all C-language expressions, including calls to functions and references to variables whose names are found in the system symbol table. Interpreted C statements give an easy-to-use interface to the target environment, plus valuable debug capabilities. Invocation of any subroutine loaded into memory, including the VxWorks system and application modules, provides quick prototyping and incremental code development. Dynamic testing via dynamic function execution speeds development. Symbolic debugging at the shell level is easy using:

Nothing harmful but also nothing particularly special.

Performance analysis and debugging are also done at the shell level via spawning, deleting, holding and resuming tasks, as well as reporting system and task information.

A fairly wrong approach.

Dynamic Linking and Loading

Finally, dynamic linking and loading on the target processor enables the user to omit the common step of linking the application to the kernel on the host, and then downloading the entire executable as one static environment. This dramatically shortens each edit-test-debug cycle. In addition, all modules are shareable and no re-linking of application modules is required on the host. This enables object modules to be added to a live VxWorks target environment for debugging purposes, or for run-time flexibility where applications have access to a file system.

Of dubious value. On most modern embedded systems there is a mechanism for fast downloads. If the image is small, incremental linking is not needed. If the image is large, as the system comes up it should be checksumming itself. The checksumming procedures are likely to conflict with incremental link and load features.

Comprehensive Networking Facilities

VxWorks was the first real-time operating system to integrate industry-standard TCP/IP networking facilities optimized for real-time applications, and continues this tradition of innovation. VxWorks networking includes TCP/IP, sockets, NFS client and server, Zbuf (a.k.a. No-Copy TCP),

Not obviously very useful except for a very small class of embedded systems applications -- certainly no-copy TCP is of practically no importance for high performance embedded packet switching applications.

CSLIP, RPC, FTP, rlogin, telnet, BOOTP, and SNMP. VxWorks systems can communicate with each other-and with other systems-over a variety of connection strategies including Ethernet, serial line, and shared memory.

Augmenting these core technologies, Wind River offers its customers the industry's most extensive networking development environment through the WindNet(TM) Partner Program. Sophisticated networking solutions available to VxWorks users through this program include: STREAMS, ATM, ISDN, SS7, Frame Relay, X.25, and OSI communications protocols; CMIP/GDMO and SMARTS for distributed network management; and CASE and CORBA for distributed computing environments.

POSIX 1003.1b Compliance

VxWorks supports many POSIX 1003.1b basic system calls, including process primitives, files and directories, I/O primitives, language services, and directory handling. In addition, VxWorks adheres to the final approved standard for POSIX 1003.1b Real-Time Extensions, including POSIX-compliant asynchronous I/O, counting semaphores, message queues, signals, memory management (page locking), and scheduling control.

This aspect of VxWorks just emphasizes the confused nature of the product which supports the real time extensions for generic Unix. If the goal is to run a generic operating system, it makes more sense to run Unix for which these extensions were defined. Otherwise, a small set of application specific routines crafted for the specific embedded system application can provide SOS16/SOS32 with whatever POSIX campatibility the embedded system requires.

Your Choice of Platform

VxWorks 5.2 is the most consistently supported real-time operating system and development environment available today across the broadest range of target processors. Indeed, Wind River Systems took advantage of its own advanced porting technology to expedite development and was thus able to introduce VxWorks 5.2 on all key supported target architectures simultaneously.

 VxWorks offers off-the-shelf turnkey integration with an extensive set of commercial and evaluation boards. The open design is highly portable and complete across all supported processors, allowing application migration between architectures with minimal effort.

In cases where target hardware is not readily available, development may proceed on the host by using VxSim(TM), which simulates the VxWorks operating system running on the target system.

The approach is almost the opposite of careful hardware-software co-design, which is a primary tool of high performance embedded system design.

Easy Porting to Custom Hardware

The ability to port operating systems and existing applications in a timely manner is key to the success of embedded software development teams.

A small easily crafted OS like SOS16/SOS32 ports very easily between hardware platforms and is very amenable to careful hardware software co-design.

This process is easier if the application code and operating system are designed with portability in mind.

Which is the exact opposite of the careful hardware-software co-design that a successful high performance embedded system requires.

This requires a distinct separation of low level hardware-dependent code from higher level application or operating system code. Thus porting of only the underlying hardware dependent code is required to port an entire design; the operating system and application layers need not be modified. This hardware-dependent layer for VxWorks is the Board Support Package (BSP). A BSP is required for any target board which executes VxWorks. The BSP Porting Kit enables developers to use VxWorks easily with custom hardware; for developers using commercial hardware, over 200 BSPs are available.

 Operating System Accessories

VxWorks accessory products are available to give developers access to an unprecedented range of features and to extend the VxWorks platform. These include support for graphics applications with VX-Windows, virtual memory management with VxVMI, and multiprocessing with VxMP.

Not very strong reasons for using VxWorks. Virtual memory management is not a common feature of turnkey embedded systems.

Productivity-Enhancing WindPower Tools

The WindPower(TM) suite of tools has been designed to significantly reduce the amount of time spent in development. Available as optional products, WindPower Tools include the revolutionary system visualization/analysis tool, WindView; StethoScope for real-time data collection and graphical analysis; software simulation of the VxWorks target environment with VxSim; and support for the C++ language via the WindC++ product or the WindC++ Gateway product which interfaces to the Object Center environment from Centerline Software. Use of these tools can result in dramatically shorter time-to-market for embedded applications.

Not very useful for embedded systems. C++ based software tends to cripple the capabilities of embedded systems.

Features

wind Microkernel

 Efficient task management

Not obvious from the description.

Not obviously useful in typical embedded systems applications.

 Fast, flexible intertask communications* binary, counting and mutual exclusion semaphores with priority inheritance

Should probably be crafted to the application

 Fast, efficient interrupt handling

High performance package switches should make little use of interrupt handling.

 Optimized floating-point support

 Dynamic memory management

 System clock and timing facilities

Network Support

 Complete TCP/IP networking, including Zbuf (No-Copy TCP)

No-Copy TCP is of practically no value in high performance packet switching. If VxWorks had a high performance network layer, WindRiver would be making piles of money in vending high performances packet switches, bridges and routers and certainly would not be licensing the system to embedded system developers.

 Communications across various media

BSD 4.3 Tahoe UNIX TCP/IP

 Sockets

 Remote login (rlogin, telnet)

 Remote Procedure Calls (RPC)

 Network File System (NFS) client & server

 File Transfer Protocol (ftp/tftp client & server)

 Remote command execution (rsh)

 Multiprocessing support

 Network login security

 BOOTP booting protocol

 SNMP (MIB-II support)

 STREAMS

Nothing of which SOS16/SOS32 is not already capable or could not be easily modified to support.

Development Environment

 Full ANSI C compliance

 Interactive, C-interpreter target shell

 Symbolic debugging and disassembly

 Powerful performance monitoring

 Exception and signal handling

 Extensive kernel, task, and system information utilities

 Dynamic linking loader

 System symbol table

 Cross-compilation tools (GNU Toolkit)

 Libraries of over 1100 utility routines

 Remote source-level debugger (VxGDB)

Just like all the other environments.

I/O and Local File System

High performance embedded systems that require disk storage often require special purpose file systems not the relatively generic file system that VxWorks is providing.

 POSIX asynchronous I/O and directory handling

 Fast, flexible I/O system

 SCSI support

 Extended MS-DOS and RT-11 file systems

 Raw disk file system

Other Features

 Flexible booting from ROM, local disk or over the network

 Highly scalable design allows developer to configure system for wide range of applications

Products

The following products would have little likehood of usefulness for typical embedded systems. If the ability to use the following products is really important, using an embedded system Unix might be a more appropriate approach.

 VX-Windows

 VxVMI (virtual memory extension)

 VxMP (multiprocessor package)

 BSP Porting Kit (custom hardware porting)

 WindPower Tools* WindView

Documentation

 Programmer's Guide

 Reference Manual

 UNIX-style online man pages

 Hypertext online help

 Online example code

Support and Training

VxWorks 5.2 is backed by Wind River's renowned Customer Support organization, dedicated to helping customers everywhere get the most from their investment. Comprehensive classes on VxWorks 5.2 are available at Wind River training facilities in California, Florida and other locations worldwide.

If the engineers really have to go to a training class to use it, one really has to wonder about the appropriateness of VxWorks for typical embedded systems products applications. One could easily envisage the engineers spending months modifying VxWorks rather than getting the product out.