Skip to main content

UEIPAC VxWorks: Kernel Setup and PowerDNA Programming Guide

·639 words·3 mins
VxWorks UEIPAC PowerDNA RTOS Embedded Systems Real-Time OS
Table of Contents

United Electronic Industries (UEI) provides the UEIPAC platform as a powerful solution for embedded and real-time applications. Powered by VxWorks, the industry-leading real-time operating system (RTOS), UEIPAC supports a flexible range of CPU and I/O modules designed for industrial, aerospace, and military applications.

This article walks you through:

  • Building and configuring a VxWorks kernel for UEIPAC
  • Booting and storing the kernel image on the device
  • Enabling networking, USB, and flash storage
  • Using the PowerDNA API for real-time I/O programming

Whether you are starting a new project or migrating an application, this guide will help you unlock the full potential of UEIPAC with VxWorks.

1. Setting Up the VxWorks Kernel for UEIPAC
#

The UEIPAC VxWorks BSP (Board Support Package) provides all the components required to run VxWorks on UEI hardware.

1.1 Install Software
#

  1. Copy the UEIPAC VxWorks archive into your %WIND_HOME%\vxworks-6.x\target directory.
  2. Extract the archive:
   tar xvfz ueipac-vxworks-x.y.tgz
  1. Adjust GCC configuration by removing the -ansi flag in defs.gnu to ensure compatibility with the PowerDNA libraries.

1.2 Build External Drivers
#

UEIPAC requires additional drivers, including:

  • PowerDNA driver for I/O layers
  • Bonding driver for dual-port Ethernet fault tolerance

Build and install these drivers into your VxWorks environment so they can be included in your kernel configuration.

2. Kernel Configuration Options
#

When creating a VxWorks Image Project in Workbench, configure the following:

  • Symbol Table Support
  #define INCLUDE_STANDALONE_SYM_TBL
  • Serial Console
  #define INCLUDE_SIO
  #define CONSOLE_BAUD_RATE 57600
  • Networking: Configure dual Ethernet ports or enable bonding for redundancy.
  #define DRV_UEI_BONDING
  #define INCLUDE_IPIFCONFIG_CMD
  • Flash Storage (TFFS/DOSFS):
  #define INCLUDE_IO_FILE_SYSTEM
  #define INCLUDE_TFFS
  #define TFFS_MOUNT_POINT "/tffs0"
  • USB Host Support:
  #define INCLUDE_USB
  #define INCLUDE_EHCI
  #define INCLUDE_USB_SHOW

These settings enable networking, file I/O, USB devices, and PowerDNA I/O layers.

3. Booting VxWorks on UEIPAC
#

UEIPAC uses U-Boot as the boot loader.

3.1 Manual Boot via TFTP
#

  1. Start a TFTP server on your host.

  2. Transfer the kernel image:

    => tftp 4000000 vxWorks
    => bootvx
    

3.2 Store Kernel in Flash
#

Convert and flash the kernel for persistent boot:

$ mkimage -O vxworks -C gzip -n 'UEIPAC VxWorks' -a 4000000 -d uVxWorks.gz uVxWorks
=> erase fe200000 fe3fffff
=> tftp 4000000 uVxWorks
=> cp.b 4000000 fe200000 ${filesize}
=> bootm fe200000

Configure auto-boot with:

=> setenv bootcmd bootm fe200000
=> saveenv

4. Programming with PowerDNA API
#

The PowerDNA API provides the software interface to control I/O layers on UEIPAC.

Supported Modes
#

  • Immediate: Simple point-by-point I/O access.
  • DMAP (Data Mapping): Efficient real-time refresh across multiple I/O layers.
  • VMAP (Variable Mapping): High-performance buffered data transfers.

Note: UEIPAC supports Immediate, DMAP, and VMAP modes locally. ACB and Messaging modes are supported only for remote devices.

Example: DMAP I/O Programming
#

DqRtDmapInit(handle, &dmapid, 1000.0);               // Init at 1 kHz
DqRtDmapAddChannel(handle, dmapid, 1, DQ_SS0IN, &chentry, 1); // Add input
DqRtDmapStart(handle, dmapid);                       // Start
DqRtDmapRefresh(handle, dmapid);                     // Sync data
DqRtDmapReadScaledData(handle, dmapid, 1, indata, 1); // Read input
DqRtDmapStop(handle, dmapid);                        // Stop

This allows real-time acquisition and output across multiple channels.

5. Building and Running Applications
#

Applications can be built as Downloadable Kernel Modules (DKMs) in WindRiver Workbench:

  1. Create a new DKM project.

  2. Link against the libPDNA.a library.

  3. Transfer the module via FTP:

    [vxWorks *] ftp 192.168.100.101
    ftp> get Sample204.out
    
  4. Load and run:

    [vxWorks *] ld Sample204.out
    [vxWorks *] C main
    

6. Key Takeaways
#

  • UEIPAC with VxWorks provides a reliable RTOS platform for industrial and aerospace embedded applications.
  • Kernel customization allows you to enable networking, storage, and USB support.
  • U-Boot boot loader simplifies deployment of kernel images.
  • The PowerDNA API delivers flexible programming interfaces for high-performance real-time I/O.

With this setup, you can develop deterministic, real-time embedded applications that leverage UEIPAC’s hardware capabilities.

Final Thoughts
#

By combining VxWorks RTOS and UEIPAC hardware, engineers can build mission-critical systems with robust networking, storage, and I/O support. Whether you’re deploying in industrial automation, aerospace, or defense, mastering this workflow will ensure stable and efficient system performance.

Related

Memory Management in VxWorks Explained
·803 words·4 mins
VxWorks RTOS Memory Management Embedded Systems Real-Time MMU RTP
How to Choose the Best RTOS for Your Embedded System
·753 words·4 mins
RTOS Embedded Systems VxWorks QNX FreeRTOS Zephyr
What is an RTOS? Comparing VxWorks, FreeRTOS, and QNX
·565 words·3 mins
RTOS VxWorks FreeRTOS QNX Embedded Systems IoT