VxWorks Software Development Kit (SDK)

Does the NCLA allow for the usage of the SDK as part of a github action to compile an open source proejct? The action would download the sdk, extract it, and build an open source project to make sure the code compiles and keeps compiling with VxWorks.

Yes, the VxWorks SDK NCLA allows this type of usage.

Thanks for the confirmation, would be interesting to try that out, use the SDK to compile open source code for VxWorks through github actions.

Cannot run Python on the latest release of VxWorks SDK.
Python can be run before this release and RUST support is added to this release.

The following are the SDK that confirmed habing problem running Python

Release 					Version VxWorks Version SHA256 		Release Date 	Getting Started
VxWorks SDK for Raspberry Pi 4 			1.4  	22.03 		CHECKSUMS  	2022-03-17 	README 
VxWorks SDK for IA - QEMU (x86-64) - Windows 	1.10  	22.03 		CHECKSUMS  	2022-06-10 	README

Users would like to run Python on VxWorks SDK

Please verify that the sysroot directory is copied correctly to the SD card. When doing the copy from the console, make sure to include the -L flag (always follow symbolic links in SOURCE).

E.g. cp -rL wrsdk-vxworks7-raspberrypi4b/vxsdk/sdcard/sysroot /media/dan/BA95-FF39/

This is a log section showing how to start Python on a Raspberry Pi 4 target running the VxWorks kernel from the 22.03 release of the RPi4 SDK. It’s important to include the rtpSpStackSize=0x1000000 step, as mentioned in the RPi4 SDK documentation.

-> rtpSpStackSize=0x1000000
rtpSpStackSize = 0xffffffff80c33230: value = 16777216 = 0x1000000
-> cmd
[vxWorks *]# cd /sd0a/
[vxWorks *]# python3
Launching process 'python3' ...
Process 'python3' (process Id = 0xffff8000004b6270) launched.

Python 3.9.5 (default, Mar 15 2022, 17:57:20) 
[Clang (http://bitbucket.wrs.com/scm/llvm/clang.git 6953a165f54ad1a885 on vxworks
Type "help", "copyright", "credits" or "license" for more information.
>>> >>> import os;os.name
>>> import sys;sys.platform
>>> ^D
[vxWorks *]# 
[vxWorks *]#

Hi Dan

To prepare a new SD card (8GB) for VxWorks rpi image, do I need to format the first partition to FAT32 and mark it as bootable and the second partition also in FAT32 for all those VxWorks image files (u-boot-64.bin, sysroot etc) or, I could simply format the whole 8GB block as FAT32 and mart it as bootable?


You can format the whole SD card as FAT32 and just copy the files. The bootable flag is not really necessary. Keep in mind to use the -L flag (always follow symbolic links in SOURCE) if using cp (or -L’s equivalent for other tools) when copying sysroot to the SD card.



Unfortunately after numerious attempts I am still not able to get VxWorks bootup on Rpi-4b (1GB RAM). The terminal screen is blank, not a single character was received, not to say a u-boot message.

I am using the VxWorks Rpi image 1.4 under Debian 12.

Below snippets list my procedures to do it:

$ sudo apt install python3-pip
$ sudo pip install python3-pyftpdlib
$ sudo apt install build-essential
$ sudo apt install gcc-aarch64-linux-gnu
$ sudo apt install libc6-dev-i386 flex bison bc libssl-dev
$ git clone https://gitlab.denx.de/u-boot/u-boot.git
$ cd u-boot
$ git checkout v2020.07
$ sudo apt install gcc-aarch64-linux-gnu
$ CROSS_COMPILE=aarch64-linux-gnu- make rpi_4_defconfig
$ CROSS_COMPILE=aarch64-linux-gnu- make

cp ~/u-boot/u-boot.bin /media/john/87C4-391B/u-boot-64.bin
cp -r ~/Downloads/firmware-1.20200212/boot/* /media/john/87C4-391B/ 
cp -rLu ~/Downloads/wrsdk-vxworks7-raspberrypi4b/vxsdk/sdcard/* /media/john/87C4-391B/ 
cp ~/Downloads/wrsdk-vxworks7-raspberrypi4b/vxsdk/bsps/rpi_4_0_1_3_0/uVxWorks /media/john/87C4-391B/

By running all these commands I could see files and folders in sd card (card_content.png).

As you can see bootcode.bin is there which I assumed the Rpi will load this with config.txt then pointing to u-boot-64.bin (with kernel=u-boot-64.bin).

Installing the card to Rpi, connect a FTDI-based RS232 converter, launch a serial terminal with 115200bps 8-N-1, the screen was blank. No message is received.

What can go wrong?


Remarks: I crossed check with another card to create a Rpi boot card with Raspberry Image Writer and I could confirm my hardware is working normal. Boot messages came out properly from my pi.

Hi John,

The first thing I’d try is reuse the filesystem on SD card which you said works, i.e. the one with output on the serial console. Copy config.txt and uboot.env from vxsdk/sdcard to the 1st partition of the SD card. You’ll also have to copy the u-boot binary and the uVxWorks kernel to the same location, and then try to boot this SD card on your RPi4.

If this still fails, there must be a problem with u-boot. I’d also try the latest version of u-boot too, just to see if things change for the better.

I hope this helps!


With only four files you hinted to the 1st partition of the SD card, at least it boots up. The screenshot is attached.

U-boot 2020.07 seems doing OK. Pi hardware is also OK.
The boot procedure is now entering an endless loop of find the ethernet PHY something. I think it is because the VxWorks image copying is not complete yet.



The log you shared shows an issue with the SD card, so the u-boot configuration file which includes the instructions to automatically boot VxWorks was not loaded from the SD card.

Assuming the SD card does not have any issues, copying config.txt, uboot.env, the u-boot binary and uVxWorks to the 1st FAT32 partition of the SD card (or to any SD card which only has a FAT32 partition) would result in an SD card able to boot VxWorks.

I’m just guessing now, but how are you powering the Raspberry Pi?



I am powering the Rpi by a USB typeC to POWER IN port, and the cable is the same cable I use to boot native Rpi image.

Do you mean config.txt was not loaded? I also realized the following messages on terminal:

Card did not respond to voltage select!
missing environment veriable: bootfile
Config file not found

Although I could open, read, and edit config.txt by a Windows PC and the other Debian workstation but it seems my Rpi does not like it.
May be I could try another 8GB card to see.


The “No partition table - mmc 0” and “Card did not respond to voltage select” point to an SD card issue rather than an incomplete copy of uVxWorks.

I’d run fsck on the SD card to rule out any file system issues, and if the mmc errors still show up in the u-boot log, I’d switch to another SD card.


After some exploration, I’ve found that VxWorks supports two modes of compilation: DKM (Downloadable Kernel Module) and RTP (Real-Time Process). This explains why certain libraries in the kernel directory are inaccessible depending on the mode. Given this, I’m trying to understand how to compile a Rust program in DKM mode. or in calling functions such as kernelTimeSlice. Could you provide guidance on how to achieve this? For reference, you can find my current progress in this GitHub repository

I am currently using the QEMU SDK.

On VxWorks Rust is only supported for user mode applications (RTPs). Most of the APIs are available both in user-space and in kernel-space though.

I use RPI4B and want to try 1.5.1(V2023.09) and I checkout my u-boot to V2023.10. And My firmware is 1.20230405.
But after I finish my image and power my RPI4 on, It block after those show

(I use hdmi to connect with my screen, serial can not display anything at the same time)

I have solve it. Change from HDMI to Serial port, display will be ok.

The download links don’t work anymore

Hi Dan
I want to use the wr-cc of "VxWorks SDK for NXP i.MX 8M Quad Evaluation Kit (EVK) " to build ilp32 for AARCH32 and lp64 for AARCH64 separately. Do you know how to configure the project?