Transcript Vxworks

VxWorks
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 crossdevelopment 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
semaphores with priority inheritance
Message queues – local and locale-transparent
distributed messaging
POSIX pipes, counting semaphores, message
queues, 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 scalability
Incremental linking and loading of
components
Fast, efficient interrupt and exception
handling
Optimized floating-point support
Dynamic memory management
System clock and timing facilities
Networking support
BSD 4.4 TCP/IP networking
IP, IGMP, CIDR, TCP, UDP,
ARP
PPP, SLIP/CSLIP
Standard Berkeley sockets
Berkeley packet filter
RIPv1/v2 and routing sockets
TFTP, rlogin, telnet, rsh
NFS dient and server, ONC
RPC
SNTP
SNMPv1/v2c/v3
Network Protocol Toolkit
BGP-4
Ipsec/IKE
NAT
L2TP
MPLS
ATM
Frame relay
ISDN
SS7
Fast, flexible I/O and local file system
POSIX asynchronous I/O and directory
handling
SCSI support
MS-DOS-compatible file system
TrueFFS flash file system (optional)
ISO 9660 CD-ROM file system
PCMCIA support
Other Features
Protection domain management
Resource tracking and management
System overrun protection
Powerful loader facilities
Protection domain
management
Overlapped memory model
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
Multasking
The highest-priority ready task is executing.
pending
ready
suspended
taskInit()
delayed
Priority Preemption
Round-Robin Scheduling
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 modifications
Establishing the VxWorks shell environment
Adding Gmicro-specific debug functions
Adding board-specific functions
Adding networking support
Building BootROM
Optimizing and tuning
testing
Impl. Architecture
development
Tornado in Mobile Internet
Wind River rolls out safety-critical
software