Getting Started with ACE, TAO, and OpenDDS on VxWorks 7
Building distributed real-time applications on VxWorks often requires a reliable middleware stack that provides portability, deterministic behavior, and standards-based communication. Object Computing, Inc. (OCI), a Wind River partner, provides pre-built packages for ACE, TAO, and OpenDDS, making it significantly easier to integrate these technologies into VxWorks 7 development environments.
This guide covers installation methods, VxWorks Source Build (VSB) configuration, optional DDS Security dependencies, Xerces-C++ integration, and application build workflows using MPC.
🚀 Overview #
OCI distributes free Marketplace packages for the following components:
- ACE (ADAPTIVE Communication Environment) — A mature C++ framework that provides cross-platform networking, concurrency, and operating system abstractions.
- TAO (The ACE ORB) — A CORBA implementation built on top of ACE for high-performance distributed applications.
- OpenDDS — An open-source implementation of the OMG Data Distribution Service (DDS) standard for real-time publish-subscribe communication.
OpenDDS leverages ACE for portability while delivering enterprise-grade DDS functionality, including:
- Strongly typed publish-subscribe communication
- Comprehensive DDS Quality of Service (QoS)
- RTPS (Real-Time Publish-Subscribe) interoperability
- DDS Security support
- High-performance middleware for embedded and distributed systems
OCI also offers professional consulting, training, and commercial support for these technologies.
📦 Additional Dependencies #
Depending on your host operating system and required features, additional software may be necessary.
Windows Hosts #
Install ActiveState Perl, which is required by several build scripts.
DDS Security Support #
DDS Security requires the following components:
- Wind River Cryptography Libraries
- Apache Xerces-C++ 3.2.1 (this exact version)
- CMake
Later versions of Xerces are not officially supported for this workflow.
🛒 Installing Through the VxWorks Marketplace #
ACE, TAO, and OpenDDS are distributed as independent Marketplace packages. Always ensure the installed package versions match the versions documented for your project.
Package Dependencies #
Understanding the package hierarchy helps avoid unnecessary installations:
- TAO already includes ACE.
- OpenDDS includes both ACE and TAO.
For most projects, installing only the OpenDDS package is sufficient.
RPM Package Overview #
| RPM Package | Version | Included with ACE | Included with TAO | Included with OpenDDS |
|---|---|---|---|---|
| oci_ace | 6.2.15.0 | ✓ | ✓ | ✓ |
| oci_tao_host_linux | 2.2.15.0 | ✓ | ✓ | |
| oci_tao_host_windows | 2.2.15.0 | ✓ | ✓ | |
| oci_tao | 2.2.15.0 | ✓ | ✓ | |
| oci_opendds_host_linux | 3.13.0.0 | ✓ | ||
| oci_opendds_host_windows | 3.13.0.0 | ✓ | ||
| oci_opendds | 3.13.0.0 | ✓ |
When using the Marketplace installer, all required package dependencies are resolved automatically.
⚙️ Manual RPM Installation #
If Marketplace is unavailable, packages can be installed manually using the command-line package manager described in the Wind River Product Installation and Licensing Developer’s Guide.
To prevent dependency issues, install all related RPM packages together rather than individually.
🏗️ Configuring the VxWorks Source Build (VSB) #
After installing the required packages, configure your VSB to include the OCI middleware layers.
Required Configuration Steps #
- Create a new VSB or modify an existing one.
- Disable:
LANG_LIB_CPLUSPLUS_USER_2011
This layer should be disabled because GCC 4.8.x shipped with VxWorks 7 does not fully implement the required C++11 features.
- Enable the following networking layers:
OCI_ACEOCI_TAOOCI_OPENDDS
Using Add with Dependencies is recommended because enabling OpenDDS automatically selects the required ACE and TAO layers.
ACE Configuration Options #
The ACE layer exposes several build options that also affect TAO and OpenDDS:
- Kernel configuration
- POSIX thread support
- Static or shared libraries
- Debug builds
- Optimization levels
- Xerces integration
Configure these options according to your project’s deployment requirements.
🔐 Enabling DDS Security #
DDS Security requires additional middleware and runtime components.
Required Components #
Enable the following before building OpenDDS Security:
- UNIX compatibility layer
- OpenSSL layer
- Xerces-C++ 3.2.1
The recommended workflow is:
- Build a minimal VSB without ACE, TAO, or OpenDDS.
- Build and install Xerces.
- Enable:
OCI_ACE_RTP_XERCES
- Specify the Xerces installation directory.
- Enable DDS Security inside the OpenDDS configuration menu.
Build Recommendation #
Disable parallel builds during VSB generation because layer dependencies can produce inconsistent build results.
🛠️ Building Xerces-C++ 3.2.1 #
DDS Security depends on Apache Xerces-C++ 3.2.1.
Build Procedure #
- Download and extract Xerces-C++ 3.2.1.
- Install CMake and ensure it is available on your system PATH.
- Create a CMake Shared User Library project in Wind River Workbench.
- Associate the project with your VSB.
- Remove the Diab compiler build specification and retain only the GNU build specification.
- Configure the installation directory:
-DCMAKE_INSTALL_PREFIX=/path/to/installed/xerces
- (Optional) Build a static library by duplicating the build specification and adding:
-DBUILD_SHARED_LIBS=OFF
- Run the OCI preparation script.
Windows
cd xerces_rtp
perl %WIND_BASE%\pkgs\net\oci_ace-6.2.15.0\misc\xerces_vxworks.pl
Linux
cd xerces_rtp
perl $WIND_BASE/pkgs/net/oci_ace-6.2.15.0/misc/xerces_vxworks.pl
- Build the project using the install target.
🧩 Building Applications #
After the middleware has been integrated into the VSB, applications can be compiled using the generated libraries.
Include Directories #
Kernel applications:
{VSB_DIR}/krnl/h/public
RTP applications:
{VSB_DIR}/usr/h/public
Library Directories #
Kernel:
{VSB_DIR}/krnl/{CPU}/gnu
RTP:
{VSB_DIR}/usr/lib/gnu
Host Tools #
IDL compilers and other code-generation tools are located in:
{WIND_HOME}/partners/oci_tao-{VERSION}/{HOST_OS}/bin
and the equivalent OpenDDS host tools directory.
⚡ Generating Build Files with MPC #
MPC (Makefile, Project, and Workspace Creator) is included with the ACE distribution and generates project files for supported build systems.
Required Environment Variables #
Typical Linux configuration:
VSB_DIRMPC_ROOTACE_ROOTTAO_ROOTDDS_ROOTTAO_HOST_TOOLSOPENDDS_HOST_TOOLSXERCESCROOT(DDS Security only)
Sample MPC Project #
project: dcps_exe, dcps_rtps_udp {
TypeSupport_Files {
Messenger.idl
}
// RTP:
// libpaths += $(VSB_DIR)/usr/lib/gnu
// Kernel:
// libpaths += $(VSB_DIR)/krnl/$(CPU)/gnu
}
Generate GNU makefiles with:
$ACE_ROOT/bin/mwc.pl -type gnuace
Building with DDS Security #
Generate projects with DDS Security enabled:
$ACE_ROOT/bin/mwc.pl \
-type gnuace \
-features no_opendds_security=0 \
-features openssl=0,no_vxworks_openssl=0
⚙️ Build Variables #
The following variables should match your VSB configuration.
| Configuration | Variable | Value | Notes |
|---|---|---|---|
| Kernel build | rtp |
0 | Kernel application |
| Kernel pthread support | pthread |
1 | Enable POSIX threads |
| Static libraries | staticlibs_only |
1 | Required for static builds |
| Debug disabled | debug |
0 | Default is 1 |
| Optimization disabled | optimize |
0 | Default is 1 |
| Compiler | TOOL |
gnu | GNU toolchain |
For DDS Security builds, also specify:
OPENDDS_SECURITY_MACRO=OPENDDS_SECURITY
no_opendds_security=0
📚 Resources #
The following documentation provides additional implementation details and reference material:
- OCI ACE documentation
- OCI TAO documentation and Developer’s Guide
- OpenDDS project website
- OpenDDS Developer’s Guide
- DDS Security for OpenDDS documentation
- MPC project repository
- OCI professional support and training resources
These references cover advanced configuration topics, middleware architecture, deployment strategies, and API documentation for production VxWorks environments.