VxWorks
Dec 14, 2015
What is VxWorks? VxWorks, from Wind River Systems, is a networked real-time operating system designed to be used in a distributed environment. It runs on a wide variety of hardware. It requires a host workstation for program development; supported host platforms include Sun3, Sun4…. Is the run-time component of the Tornado 3 embedded development platform.
What is VxWorks?
The VxWorks RTOS comprises the core capabilities of the wind microkernel (not monolithic) along with advanced networking support, powerful file system and I/O management, and C++ and other standard run-time support.
What is VxWorks?The development environment is based on cross-development or remote-development method. You will need a UNIX machine of some sort (e.g. SUN's) to run the compilers and debuggers. The compiled application code can be downloaded to the target and runs as part of the VxWorks image. During the development phase or thereafter, individual object code (.o files) can be downloaded dynamically to running target system. Finished applications can be ROM'ed or whatever.
What is VxWorks?
VxWorks most definitely is not a "realtime UNIX", or a varient of UNIX as often misunderstood by some people. The confusion perhaps is due to the fact that UNIX hosts are used most widely to develop applications for VxWorks (and VxWorks itself).
Brief History of VxWorks
WRS was started by Jerry Fiddler and David Wilner in Jerry's garage as a contract/consultant shop for realtime, embedded systems and other fun things. They wrote a bunch of neat programs for their work and eventually adding some things unheard of in embedded/realtime market in those days such TCP/IP networking. And continued to pioneer in this area by adding NFS, etc.
Brief History of VxWorks
VxWorks was the name given the collection of software which ran on top of various realtime kernels including VRTX and pSOS as well an earlier slower version of WIND kernel. VxWorks now no longer runs on other kernels; it now runs exclusively on its own WIND kernel since the 5.0 release, for which the WIND was rewritten by John Fogelin.
Wind microkernel
Efficient task management multitasking, unlimited number of
tasks Preemptive and round-robin
scheduling Fast, deterministic context switching 256 priority levels
Wind microkernel
Fast, flexible intertask communications Binary, counting, and mutual exclusion semapho
res with priority inheritance Message queues – local and locale-transparent di
stributed messaging POSIX pipes, counting semaphores, message que
ues, signals and scheduling Control sockets Shared memory Standard COM VxFusion
Wind semaphores
binary The fastest, most general purpose semaphore.
Optimized for synchronization and can also be used for mutual exclusion.
mutual exclusion A special binary semaphore optimized for problems
inherent in mutual exclusion: priority inheritance, deletion safety and recursion.
Counting Like the binary semaphore, but keeps track of the
number of times the semaphore is given. Optimized for guarding multiple instances of a resource.
Wind microkernel
High scalabilityIncremental linking and loading of componentsFast, efficient interrupt and exception handlingOptimized floating-point supportDynamic memory managementSystem clock and timing facilities
Networking support
BSD 4.4 TCP/IP networkingIP, IGMP, CIDR, TCP, UDP, ARPPPP, SLIP/CSLIPStandard Berkeley socketsBerkeley packet filterRIPv1/v2 and routing socketsTFTP, rlogin, telnet, rshNFS dient and server, ONC RPCSNTP
SNMPv1/v2c/v3Network Protocol ToolkitBGP-4Ipsec/IKENATL2TPMPLSATMFrame relayISDNSS7
Fast, flexible I/O and local file system
POSIX asynchronous I/O and directory handlingSCSI supportMS-DOS-compatible file systemTrueFFS flash file system (optional)ISO 9660 CD-ROM file systemPCMCIA support
Other Features
Protection domain managementResource tracking and managementSystem overrun protectionPowerful loader facilities
Multasking ready – the task is waiting only for CPU time
pending – the task is blocked because some resource
is unavailable
delayed – the task is inactive for a pre-determined
time interval
suspended – the task is prevented from becoming active
differences between traditional UNIX and VxWorks
VxWorks runs in one mode. No protected vs. user mode switching is done. Running in supervisor mode on most processors, and not using traps for system calls, VxWorks can achieve minimal overhead on a given piece of hardware than UNIX. Programming on VxWorks can be more tricky than UNIX for the same reason. UNIX provides resource reclamation; by default, VxWorks does not. VxWorks does not have full "process"; it only has tasks, or "threads".
differences between traditional UNIX and VxWorks
VxWorks: minimal interrupt latency (e.g. spl's are quasi-implemented as semaphores). Traditional UNIX: high interrupt latency (e.g. spl's are implemented as interrupt lock and unlock calls). VxWorks: priority interrupt-driven preemption, optional round-robin time-slicing. Traditional UNIX: prioritized round-robin preemptive time-slicing. Since VxWorks is just a glorified "program" it can be changed and customized pretty easily. Task scheduling can be customized as desired. VxWorks networking code, however, is very UNIX compatible. It is essentially "ported" version of BSD UNIX TCP/IP code -- tahoe release .
Example:Porting VxWorks to Gmicro/200
Portable kernel modificationsEstablishing the VxWorks shell environmentAdding Gmicro-specific debug functionsAdding board-specific functionsAdding networking supportBuilding BootROMOptimizing and tuningtesting