Skip to main content

VxWorks 6.x on the ML403 Embedded Development Platform

·627 words·3 mins
VxWorks 6.x Xilinx ML403
Table of Contents

Overview
#

Xilinx’s Application Note XAPP947 provides a comprehensive walkthrough for running Wind River VxWorks 6.x on the ML403 Embedded Development Platform. This blog summarizes the key steps in setting up the VxWorks environment, configuring a board support package (BSP), building a kernel image, and programming a bootloader into flash memory. While based on VxWorks 6.x and Xilinx’s legacy tools, the insights remain useful for modern BSP developers working with PowerPC targets and FPGA-based systems.

Hardware and Software Requirements
#

To follow the original setup, the following tools and components are used:

  • Xilinx ML403 Evaluation Board (Virtex-4 FX with PPC405)
  • Xilinx Platform Studio (XPS) 10.1i and ISE 10.1i
  • Wind River Workbench 2.5
  • Wind River ICE/Probe (with JTAG adapter)
  • RS232 cable, Ethernet cable, and terminal software (e.g., HyperTerminal)
  • Flash memory programming utilities
  • A license for Wind River multi-core debugging

Step 1: Build the Base System in XPS
#

The ML403 system is built using Xilinx’s Base System Builder. Key peripherals included:

  • PowerPC 405 processor
  • DDR SDRAM (via MPMC)
  • GPIO (LEDs, push buttons)
  • UART 16550
  • TriMode Ethernet MAC (TEMAC)
  • Flash interface (XPS MCH EMC)
  • On-chip BRAM for boot

An address map is defined for all peripherals, and the bitstream is generated using XPS.

Step 2: Create and Modify the VxWorks BSP
#

Using XPS:

  1. Set OS to vxworks6_3 in the Software Platform Settings.

  2. Configure STDIN/STDOUT to use RS232 UART.

  3. Include UART and Ethernet MAC in the “connected peripherals” list.

  4. Generate the BSP and copy it to a new directory (modified_vxworks_bsp).

  5. Edit config.h and Makefile to match the platform’s memory map:

    • ROM_BASE_ADRS = 0xFF000000
    • ROM_TEXT_ADRS = ROM_BASE_ADRS + 0x100
    • RAM_LOW_ADRS = 0x00010000
    • RAM_HIGH_ADRS = 0x00C00000
  6. Update the MAC address in sysNet.c and optionally customize the model string in sysLib.c.

Step 3: Build the VxWorks Kernel Image
#

In Wind River Workbench:

  1. Create a new “VxWorks Image Project” using the modified BSP.
  2. Set toolchain to sfgnu or sfdiab.
  3. Configure kernel components (e.g., WDB agent, kernel shell).
  4. Build the project to produce the vxWorks kernel image.
  5. Download the bitstream to the ML403 using XPS.
  6. Use the Wind River Probe to connect via JTAG and download the image.

Step 4: Create and Program the Bootloader
#

  1. In Workbench, create a new “VxWorks Boot Loader Project” using the same BSP.
  2. Use uncompressed image format and output as BIN file.
  3. Build the bootloader (bootrom_uncmp.bin).
  4. Use the On-Chip Debug (OCD) Flash Programmer in Workbench:
    • Flash base address: 0xFF000000
    • File address offset: 0xFF000100
    • Flash device: Intel 28F320Jx (2 devices)

Program the bootloader into flash and verify success.

Step 5: Configure and Test Standalone Boot
#

A small application (VxWorks_Start) runs from BRAM and branches to the bootloader in flash:

  • Set the flash address in code to 0xFF000100.
  • Update the bitstream to include this BRAM-based application.
  • Program the FPGA with this bitstream using iMPACT.
  • Switch board to boot from flash.
  • Power up and watch for the VxWorks boot prompt.

Step 6: Boot and Load the VxWorks Kernel
#

  • Set up an FTP server on the host PC (e.g., IP: 192.168.0.1).
  • Target board uses IP 192.168.0.2.
  • Place the vxWorks image in the FTP directory.
  • From the bootloader prompt:
    • Press p to print settings.
    • Press c to configure (user/pass: my_ftp_user / pass).
    • Press @ to boot and load kernel via FTP.

You can verify kernel status using i (task list) and version commands in the shell.

Conclusion
#

XAPP947 provides a hands-on foundation for VxWorks developers working on FPGA platforms, particularly those targeting PowerPC processors and flash-bootable systems. While VxWorks 6.x and the ML403 board are dated, the workflow for customizing BSPs, building kernel images, and deploying bootloaders remains highly relevant — especially for developers working with Wind River tools on embedded targets today.

References
#

Related

Comparison of CPU Scheduling in VxWorks and LynxOS
·1986 words·10 mins
VxWorks CPU Scheduling LynxOS
VxWorks 7 vxbus Device Specific Parameters
·578 words·3 mins
VxWorks 7 Vxbus
Integrate Python With VxWorks 7
·486 words·3 mins
Python VxWorks 7