Skip to main content

VxWorks OS and Firmware Security: A Deep Technical Analysis

·3346 words·16 mins
VxWorks Embedded Security Firmware Security RTOS IoT Security Reverse Engineering VxWorks Firmware Cybersecurity
Table of Contents

VxWorks OS and Firmware Security: A Deep Technical Analysis

VxWorks is one of the most widely deployed real-time operating systems in embedded computing. Its use across networking equipment, industrial systems, aerospace platforms, telecommunications hardware, and other embedded applications makes its security model particularly important.

A weakness in an embedded operating system can have consequences far beyond a single application. If an attacker gains sufficient privileges at the operating-system or firmware level, they may be able to access sensitive information, modify system behavior, install persistent code, or take control of the underlying device.

This article examines the architecture and security model of VxWorks, with particular attention to protection domains, fault management, virtualization, networking, debugging interfaces, firmware structure, configuration security, and common weaknesses found in older embedded deployments.

๐Ÿ” Understanding the VxWorks Architecture
#

VxWorks is a portable real-time operating system developed by Wind River. It can be configured for different classes of embedded applications, ranging from conventional embedded systems to networking platforms and safety-critical real-time environments.

Historically, VxWorks has been deployed in aerospace systems, radar platforms, networking equipment, wireless routers, telecommunications devices, and other performance-sensitive products.

VxWorks development has traditionally been supported by Wind River development environments such as Tornado and later Wind River Workbench. These tools provide capabilities for compiling, editing, analyzing, and debugging applications.

The operating system can be configured in several ways:

  • Closed embedded systems with separation between kernel and application components.
  • Networking platforms with routing, security, and networking functionality.
  • Safety-critical and hard real-time systems requiring deterministic behavior and stringent reliability requirements.

Because the operating system provides the foundation for applications and device services, vulnerabilities at the OS or firmware layer can have a disproportionate security impact.

๐Ÿ—๏ธ Real-Time Kernel and System Architecture
#

VxWorks is built around a real-time kernel designed for deterministic and responsive execution.

Its architecture supports multitasking and, in applicable configurations, symmetric multiprocessing across multiple CPU cores. Scheduling mechanisms include preemptive and round-robin scheduling, while synchronization primitives such as mutexes and semaphores coordinate access to shared resources.

Important architectural characteristics include:

  • Multitasking and priority-based scheduling
  • Fast interrupt handling
  • Symmetric multiprocessing support
  • POSIX real-time APIs
  • Interprocess communication mechanisms
  • Priority inheritance
  • Memory protection mechanisms
  • File-system support
  • C and C++ development support
  • System error detection and recovery facilities

Protection mechanisms allow applications to operate within isolated address spaces in configurations that provide stronger process separation.

VxWorks also supports interprocess communication and distributed-system functionality, including mechanisms associated with VxFusion and related networking architectures.

The application boot process forms an important part of the overall security model because weaknesses during initialization can potentially undermine protections established later in the operating system.

๐Ÿ›ก๏ธ Fault Management and Isolation
#

VxWorks provides mechanisms for centralized fault handling. Rather than allowing individual failures to propagate unpredictably throughout the system, dedicated components can monitor system state and initiate predefined recovery procedures.

This approach is particularly important in real-time and high-availability environments where uncontrolled failures can affect critical applications.

Protection Domains
#

One of the important concepts in VxWorks security architecture is the protection domain.

Protection domains establish hardware-enforced boundaries around software resources. Depending on system configuration, applications, shared libraries, shared data, and system software can be separated into different protection regions.

Memory Management Unit (MMU) support can enforce these boundaries by validating memory accesses.

The general objective is to prevent one software component from freely accessing resources belonging to another component.

However, the effectiveness of this model depends heavily on how system developers configure execution boundaries and privileged interfaces. Excessive privileges or poorly designed kernel entry points can weaken otherwise strong isolation mechanisms.

OMS and AMS
#

Older VxWorks environments also included high-availability frameworks incorporating components such as the Object Management System (OMS) and Alarm Management System (AMS).

OMS represents hardware and software objects through an abstract hierarchical model. Relationships between objects can be used to describe dependencies throughout the system.

AMS manages alarms and fault conditions.

A simplified fault-management flow can be represented as:

  1. A component detects an abnormal condition.
  2. The component generates an alarm.
  3. AMS receives the alarm through the appropriate interface.
  4. The alarm propagates through the configured object relationship hierarchy.
  5. An associated handler performs the predefined recovery action.

Objects capable of detecting failures and generating alarms can be designed with standardized timeout, exit, and error-handling behavior. Device drivers are one example of components that may be treated as hardened objects.

The overall objective is to prevent localized failures from locking up the entire system.

๐Ÿ–ฅ๏ธ Virtualization and Embedded Hypervisors
#

Virtualization allows VxWorks to operate as a guest operating system under a hypervisor.

This architecture can consolidate workloads that would traditionally require multiple physical CPU boards onto a single hardware platform.

A simplified architecture consists of:

Physical Hardware
       โ”‚
       โ–ผ
   Hypervisor
   โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”
   โ”‚         โ”‚
   โ–ผ         โ–ผ
VxWorks   Other Guest
  Guest      OS
   โ”‚
   โ–ผ
Applications

While virtualization can improve resource utilization and system consolidation, it also introduces another security boundary.

Virtual Board Security
#

Older VxWorks virtualization environments included utilities such as wrload for loading executable images onto virtual boards.

Because such utilities can perform privileged operations, access controls become critical.

If debug privileges are unnecessarily enabled or virtualization parameters are incorrectly configured, an attacker who gains access to the debugging environment may be able to manipulate virtual machines or virtual boards.

This demonstrates an important security principle for embedded hypervisors: debugging and management interfaces must be treated as privileged attack surfaces rather than ordinary development conveniences.

โš ๏ธ VxWorks Security Model and Potential Weaknesses
#

VxWorks protection domains can provide strong isolation when correctly configured, but flexibility can also introduce security risks.

The operating system allows developers to define execution boundaries and privileged object entry points according to application requirements.

This flexibility is useful for embedded development, but excessive privileges can undermine the protection model.

A secure design therefore depends on:

  • Carefully defined privilege boundaries
  • Strict MMU configuration
  • Minimal kernel exposure
  • Controlled object entry points
  • Restricted debugging access
  • Proper authentication
  • Secure firmware configuration

Security mechanisms provided by the RTOS cannot compensate for insecure application or firmware configuration.

๐Ÿงฑ Stack Overflow Detection and Protection
#

VxWorks historically used stack-filling techniques to help identify excessive task stack consumption.

When tasks are created, their stack regions can be initialized with a recognizable pattern. Runtime functions can then inspect the remaining unused stack space.

For example, a stack-monitoring function can identify tasks that are approaching their allocated limits.

In configurations supporting guard pages, the MMU can provide an additional layer of protection. If a task attempts to access a protected guard region beyond its valid stack, a memory exception can be generated.

However, the effectiveness of this mechanism depends on configuration.

Guard-page size and placement matter, and additional configuration options can be used to increase the protected region where appropriate.

Stack protection should therefore be considered one component of a broader memory-safety strategy rather than a complete defense against memory corruption.

๐ŸŒ VxWorks Networking and Packet Hooks
#

VxWorks has historically included a BSD-derived TCP/IP networking stack and routing capabilities.

The networking architecture separates protocol processing from device-driver functionality through interfaces such as the MUX layer.

Applications can access network services through socket APIs, while specialized buffer mechanisms can support efficient movement of network data between software components.

VxWorks also provides packet-processing hooks that can be used for traffic inspection or filtering.

Examples of relevant interfaces include:

STATUS etherInputHookAdd();
STATUS ipFilterHookAdd();
STATUS etherOutputHookAdd();

These interfaces can be used to build packet-monitoring or filtering functionality around the network stack.

From a security perspective, such hooks are valuable because they provide opportunities to inspect traffic before or after normal protocol processing.

They can also introduce additional attack surface if custom packet-processing code is poorly implemented.

๐Ÿ” SSL and Cryptographic Support
#

Embedded systems often operate under strict memory and storage constraints. This can make integrating large cryptographic libraries more complicated than on conventional desktop or server platforms.

Older VxWorks deployments sometimes required customized builds of OpenSSL or alternative cryptographic libraries to accommodate platform limitations.

A typical integration process could involve:

  • Selecting the required cryptographic algorithms
  • Removing unnecessary components
  • Adapting build configurations
  • Modifying platform-specific makefiles
  • Linking the resulting libraries with the VxWorks application

Libraries such as Cryptlib were also used in some embedded environments to provide cryptographic functionality.

The key security requirement is not simply whether SSL/TLS exists, but whether the implementation uses current cryptographic protocols, secure certificates, appropriate key management, and properly maintained libraries.

๐Ÿงฑ Firewalling VxWorks Systems
#

Historically, VxWorks did not necessarily provide a complete firewall solution as part of the core operating system.

Third-party packet-filtering solutions could be integrated to provide stateful traffic inspection.

Network hooks could also be used to implement custom filtering and even functionality such as network address translation.

Security certification and network robustness testing have historically been important aspects of VxWorks networking deployments, particularly where malformed packets or hostile traffic could affect real-time operation.

Nevertheless, secure networking requires more than a robust protocol stack. Services must also be minimized, authenticated, patched, and isolated appropriately.

๐Ÿž The VxWorks Debugging Interface
#

One of the most significant security concerns in older VxWorks deployments was exposure of the WDB debugging interface.

The WDB agent historically operated over UDP port 17185 and provided system-level debugging capabilities.

Because debugging interfaces are designed to interact closely with the operating system, they can expose highly privileged functionality, including access to memory and system information.

A system exposing an unauthenticated or insufficiently protected debugging service to an untrusted network can therefore create a serious security risk.

Older research demonstrated that exposed WDB services could reveal information such as:

  • VxWorks version information
  • Bootline configuration
  • System architecture
  • Memory contents
  • Runtime system information

A representative legacy scan might identify:

17185/udp open filtered wdbrpc

The critical lesson is not the port number itself, but the security principle behind it:

Development and debugging interfaces should never be exposed to untrusted networks in production systems.

Debugging functionality should be disabled, filtered, authenticated, or isolated whenever it is not explicitly required.

๐Ÿ”‘ Weak Password Protection in Legacy VxWorks
#

Some older VxWorks environments used a proprietary password-obfuscation mechanism associated with the vxencrypt utility.

Legacy implementations relied on relatively simple transformations rather than modern password hashing mechanisms.

Such designs are problematic because password protection should rely on modern password-derived key or hash functions designed to resist offline guessing.

Additional weaknesses become especially serious when combined with:

  • No account lockout
  • Weak credentials
  • Exposed Telnet or FTP services
  • Network-accessible authentication
  • Factory-default passwords

Modern embedded security architectures should use strong password hashing, rate limiting, secure authentication protocols, and unique credentials.

๐ŸŒ IPv6 Neighbor Discovery Risks
#

Neighbor Discovery Protocol (NDP) is an important component of IPv6 networking.

Older VxWorks implementations were reported to have weaknesses in the handling of certain NDP information, potentially allowing spoofed information to influence neighbor or forwarding state.

In vulnerable configurations, manipulated neighbor information could potentially cause traffic to be redirected toward an attacker on the same network.

The broader security lesson is that network-control protocols require strong validation because attackers who can influence routing or neighbor information may gain opportunities for:

  • Traffic interception
  • Traffic redirection
  • Denial-of-service conditions
  • Network reconnaissance

Legacy embedded systems are particularly challenging because vulnerabilities can remain in deployed devices long after their original software versions have become obsolete.

๐Ÿ“ฆ Understanding VxWorks 5.x Firmware Structure
#

Firmware is the core software image that controls an embedded device.

Analyzing its structure can reveal:

  • Boot components
  • Operating-system images
  • Configuration data
  • Web interfaces
  • Firmware metadata
  • Checksums
  • Persistent settings

Older VxWorks 5.x-based router firmware could contain multiple primary and trailing data sections.

A representative Linksys firmware image analysis might reveal metadata such as:

Firmware file size: 1769384 bytes
Code pattern: 5SGW
Vendor name: Linksys
Device name: WRT54GS
Checksum: CORRECT

The primary files could include components such as:

vxworks.bin
igwhtm.dat
langpak_en.dat

Additional trailer records could contain supporting metadata required by the firmware image format.

Understanding these structures is useful during legitimate firmware auditing because it allows researchers to identify where executable code, configuration information, and integrity mechanisms reside.

๐Ÿ”ฌ Firmware Security Analysis
#

A security assessment of a VxWorks-based embedded device should examine both the operating system and the firmware surrounding it.

Legacy VxWorks deployments can contain several important security considerations:

  • Bootloader security
  • Firmware integrity
  • Configuration protection
  • Debug interfaces
  • Management services
  • Default credentials
  • Cryptographic key storage
  • Web interfaces
  • Firmware update mechanisms

These areas often determine whether an attacker can move from a remotely accessible application-layer weakness to deeper system compromise.

โš™๏ธ Boot Sequence and BSP Security
#

The Board Support Package (BSP) is a critical component of VxWorks firmware because it connects the operating system to the underlying hardware.

From a security perspective, the boot process deserves careful analysis because it determines:

  • Which image is loaded
  • Where the image is loaded
  • How hardware is initialized
  • Which configuration parameters are applied
  • How firmware integrity is checked

Legacy router research demonstrated that modifying boot components could enable alternative firmware to be installed on devices designed around proprietary VxWorks images.

For authorized security research, examining the BSP can reveal the firmware’s structural format and identify weaknesses in its integrity-validation process.

A secure modern design should instead incorporate mechanisms such as:

  • Cryptographic firmware signatures
  • Secure boot
  • Protected bootloader configuration
  • Rollback protection
  • Hardware-backed keys
  • Verified firmware updates

๐Ÿงฐ Firmware Replacement and Recovery Mechanisms
#

Older Linksys devices based on VxWorks could be converted to alternative firmware through specialized recovery and flashing procedures.

Firmware images could contain boot components such as a Common Firmware Environment (CFE) image.

Configuration variables stored in nonvolatile memory could influence boot behavior, networking parameters, hardware configuration, and recovery settings.

For example, a legacy configuration dump might contain values describing:

boardflags
boardnum
boardrev
sdram configuration
MAC addresses
LAN configuration
boot_wait
watchdog
GPIO settings

These parameters illustrate why nonvolatile configuration storage is security-sensitive.

If an attacker can modify boot parameters or firmware configuration without authorization, they may be able to alter the device’s startup behavior or weaken recovery protections.

๐ŸŒ Services and Network Exposure
#

Legacy embedded firmware frequently exposes fewer services than a general-purpose operating system, but every exposed service remains part of the attack surface.

A representative VxWorks-based router configuration could expose HTTP management and PPTP while leaving FTP and Telnet unavailable.

A legacy network scan might report:

PORT     STATE   SERVICE
21/tcp   closed  ftp
23/tcp   closed  telnet
80/tcp   open    http
1723/tcp open    pptp

Restricting unnecessary services is beneficial, but insecure protocols or outdated management interfaces can still create significant risk.

Modern embedded systems should prefer:

  • HTTPS instead of HTTP
  • SSH instead of Telnet
  • Strong authentication
  • Network-level access controls
  • Management-plane isolation
  • Disabled legacy protocols

๐Ÿ”‘ Factory-Default Credentials
#

Factory-default credentials remain a recurring embedded-device security problem.

Older VxWorks-based devices could ship with predictable username and password combinations.

The problem is particularly dangerous when:

  1. The device is connected directly to an untrusted network.
  2. Administrative services are remotely accessible.
  3. Users are not forced to change default credentials.
  4. There is no effective login rate limiting.

Secure device deployment should require unique credentials during initial configuration and should prevent predictable default authentication from remaining active in production.

๐Ÿ“„ Configuration Files and Sensitive Information
#

Firmware backup files such as config.bin can contain important device configuration data.

A file that appears binary or obfuscated is not necessarily cryptographically protected.

Legacy embedded configuration formats may contain readable strings or recoverable sensitive values, including:

  • Administrative credentials
  • Wireless network names
  • Wireless security keys
  • Network configuration
  • Device-specific settings

This illustrates an important distinction between encoding, obfuscation, compression, and encryption.

Security-sensitive configuration should be protected with real cryptographic mechanisms rather than relying on a format that merely makes the contents difficult to read casually.

๐Ÿ” Embedded Private Keys and HTTPS
#

Embedded devices commonly provide web-based administration interfaces.

One historical security problem is embedding the same private cryptographic key directly into firmware images.

If a private key is included in a publicly obtainable firmware image, an attacker who extracts it may be able to undermine the confidentiality or authenticity expected from HTTPS.

A more secure architecture should provide device-specific credentials and private keys that are:

  • Unique per device
  • Protected from unauthorized extraction
  • Generated securely
  • Stored in protected hardware or secure storage when possible
  • Replaceable through a secure lifecycle mechanism

Hard-coded shared private keys should be avoided.

๐Ÿงฎ Firmware Checksums Are Not Cryptographic Signatures
#

Firmware images often contain checksums to detect accidental corruption.

However, a checksum is not equivalent to a cryptographic signature.

A checksum can establish that data has not changed accidentally, but a properly designed digital-signature system provides authentication and integrity against deliberate modification.

A secure firmware-update architecture should therefore use cryptographic verification rather than relying solely on simple checksums or reversible obfuscation.

Important mechanisms include:

  • SHA-2 or SHA-3-based integrity measurements
  • Digital signatures
  • Trusted public-key storage
  • Secure boot
  • Version validation
  • Anti-rollback mechanisms

๐ŸŒ Insecure Embedded Web Interfaces
#

Web interfaces are one of the most important attack surfaces in embedded devices.

Older firmware often stores HTML and related resources inside compressed firmware packages. After boot, these resources are exposed through the device’s web server.

Security weaknesses in these interfaces can include:

  • Authentication bypass
  • Command injection
  • Cross-site scripting
  • Cross-site request forgery
  • Buffer overflows
  • Unsafe input handling
  • Insecure session management
  • Privilege-escalation flaws

The OWASP application-security guidance provides a useful framework for evaluating web interfaces, although embedded systems often require additional testing because they interact directly with hardware and privileged system services.

A vulnerability in an embedded web interface can therefore become a gateway to the underlying operating system.

๐Ÿ•ฐ๏ธ Unpatched and Obsolete Firmware
#

One of the biggest long-term problems in embedded security is firmware aging.

Unlike desktop and server operating systems, embedded devices may remain deployed for many years with little or no software maintenance.

Common problems include:

  • Outdated operating-system versions
  • Unsupported third-party libraries
  • Unpatched network services
  • Legacy cryptographic algorithms
  • Known vulnerabilities
  • Weak firmware-update mechanisms
  • Inability to upgrade deployed devices

Security must therefore be considered throughout the entire device lifecycle, from initial development through deployment and eventual retirement.

๐Ÿง  Key Security Lessons from VxWorks
#

The VxWorks security model demonstrates that embedded security is not determined by the operating system alone.

A secure device requires multiple layers working together:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚        Applications          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚       Web / Network APIs     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚       Security Services      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚         VxWorks RTOS         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚     Protection / MMU         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚       Bootloader / BSP       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚     Firmware Integrity       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚          Hardware            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

A weakness at any layer can undermine protections elsewhere.

The most important security principles include:

  • Minimize privileged interfaces.
  • Disable debugging services in production.
  • Use strong authentication.
  • Remove factory-default credentials.
  • Encrypt sensitive configuration data.
  • Protect private keys.
  • Use cryptographic firmware signatures.
  • Secure the boot process.
  • Keep firmware and libraries patched.
  • Segment management interfaces from untrusted networks.
  • Apply least-privilege principles to applications and services.

๐Ÿ”ฎ Future Directions for Embedded VxWorks Security
#

Modern embedded security increasingly depends on hardware-assisted trust rather than software isolation alone.

Future-proof embedded architectures should combine RTOS-level protection with:

  • Secure boot
  • Trusted execution environments
  • Hardware security modules
  • Device-unique cryptographic identities
  • Signed firmware updates
  • Runtime integrity monitoring
  • Memory protection
  • Strong network authentication
  • Automated vulnerability management

These mechanisms can significantly reduce the impact of vulnerabilities in individual applications or services.

At the same time, security research remains important because legacy embedded devices often remain operational long after their original security assumptions have become obsolete.

๐Ÿงพ Conclusion
#

VxWorks provides a powerful real-time operating-system foundation for embedded applications, with mechanisms for multitasking, memory protection, fault management, networking, virtualization, and high-availability operation.

However, the security of a VxWorks-based device ultimately depends on how those capabilities are configured and combined with the surrounding firmware.

Historical research into VxWorks systems has highlighted several recurring weaknesses, including exposed debugging interfaces, weak legacy password protection, insecure configuration storage, predictable credentials, insufficient firmware integrity controls, hard-coded cryptographic keys, vulnerable web interfaces, and outdated firmware.

The central lesson is straightforward: a robust RTOS does not automatically produce a secure embedded device.

Effective embedded security requires protection across the entire stackโ€”from hardware and secure boot through the RTOS, firmware, network services, authentication mechanisms, configuration storage, and update infrastructure.

For security engineers and firmware researchers, VxWorks provides a valuable case study in how operating-system architecture, firmware design, debugging facilities, and deployment practices interact to determine the real security posture of an embedded platform.

Related

VxWorks for Automotive: RTOS for Safety-Critical Vehicle Systems
·684 words·4 mins
VxWorks Automotive RTOS ADAS Autonomous-Driving ISO 26262 Embedded Systems Cybersecurity
VxWorks for Automotive: RTOS for ADAS and Safety-Critical Systems
·601 words·3 mins
VxWorks Automotive RTOS ADAS Autonomous-Driving ISO 26262 Embedded Systems Cybersecurity
VxWorks RTOS Tutorial: Architecture, Task Management, and Embedded Application Development
·1469 words·7 mins
VxWorks RTOS Embedded Systems Wind River Real-Time Operating Systems Embedded Linux Device Drivers Software Development