Raspberry Pi VxWorks Faults when booting

Hi,
Having recently bought a RaspberryPi I decided to mount VxWorks to it.
Having followed the steps in the SDK guide i was greeted with
“start4.elf is not compitable the board requires newer hardware”
I got the latest firmware from the raspberry pi boot and managed to get VxWorks to boot, but i am facing a few issues with getting it to communcate to WRStudio in vs code, to an FTP server etc, when it boots i am getting an error, and also when i try to communicate with say ping etc im getting value = 4294967295 = 0xffffffff.
Is ther anything im missing that could be causing these errors or could it be that the latest firmare on the Pi isn’t compatible with VxWorks?
Any help would be greatly appreciated
(hopefully the image uploads)

The recommended firmware mentioned in the README file is https://github.com/raspberrypi/firmware/archive/1.20200212.tar.gz. I haven’t checked recent RPi4 firmware updates, but I’ll try to do that soon.

Meanwhile, you should be able to set an IP address manually using ifconfig. For example this is the set of commands I used to set a static IP address.

cmd
ifconfig genet0 128.224.125.72

Here is a more detailed log which includes the aforementioned commands:

-> cmd
[vxWorks *]# ifconfig -a
lo0     Link type:Local loopback
        inet 127.0.0.1  mask 255.255.255.255
        inet6 unicast fe80::1%lo0  prefixlen 64  automatic
        inet6 unicast ::1  prefixlen 128
        UP RUNNING LOOPBACK MULTICAST NOARP ALLMULTI 
        MTU:1500  metric:1  VR:0  ifindex:1
        RX packets:17 mcast:0 errors:0 dropped:0
        TX packets:17 mcast:0 errors:0
        collisions:0 unsupported proto:0
        RX bytes:1275  TX bytes:1275

genet0  Link type:Ethernet  HWaddr dc:a6:32:08:cf:f5
        inet6 unicast fe80::dea6:32ff:fe08:cff5%genet0  prefixlen 64  automatic
        UP RUNNING SIMPLEX BROADCAST MULTICAST DHCP 
        MTU:1500  metric:1  VR:0  ifindex:2
        RX packets:0 mcast:0 errors:0 dropped:0
        TX packets:0 mcast:5 errors:0
        collisions:0 unsupported proto:0
        RX bytes:0  TX bytes:0

[vxWorks *]# ifconfig genet0 -dhcp
[vxWorks *]# ifconfig genet0 128.224.125.72 
[vxWorks *]# ifconfig -a
lo0     Link type:Local loopback
        inet 127.0.0.1  mask 255.255.255.255
        inet6 unicast fe80::1%lo0  prefixlen 64  automatic
        inet6 unicast ::1  prefixlen 128
        UP RUNNING LOOPBACK MULTICAST NOARP ALLMULTI 
        MTU:1500  metric:1  VR:0  ifindex:1
        RX packets:21 mcast:0 errors:0 dropped:0
        TX packets:21 mcast:0 errors:0
        collisions:0 unsupported proto:0
        RX bytes:1585  TX bytes:1585

genet0  Link type:Ethernet  HWaddr dc:a6:32:08:cf:f5
        inet 128.224.125.72  mask 255.255.0.0  broadcast 128.224.255.255
        inet6 unicast fe80::dea6:32ff:fe08:cff5%genet0  prefixlen 64  automatic
        UP RUNNING SIMPLEX BROADCAST MULTICAST 
        MTU:1500  metric:1  VR:0  ifindex:2
        RX packets:14 mcast:0 errors:0 dropped:4
        TX packets:6 mcast:10 errors:0
        collisions:0 unsupported proto:0
        RX bytes:898  TX bytes:480

[vxWorks *]# ping -c 2 128.224.124.1

Pinging 128.224.124.1 (128.224.124.1) with 64 bytes of data:
Reply from 128.224.124.1 bytes=64 ttl=255 seq=0 time=16ms
Reply from 128.224.124.1 bytes=64 ttl=255 seq=1 time=16ms

--- 128.224.124.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1017 ms
rtt min/avg/max = 16/16/16 ms
[vxWorks *]# 

Regards,
Dan

That’s the firmware version I used but when booting it said
“start4.elf is not compatible this board requires newer software” << not hardware sorry I made a mistake in the original post.
After moving to the latest firmware for the RPi it booted.
The Ethernet connection actually did turn itself on after waiting about 5 minutes. Maybe i was just being impatient with that one.
Thanks for your help,
Oliver

Hello, I am having the same issue trying to access the FTP server.

I followed the readme and I am using firware version 1.20200212.

I have set the IP address using the ifconfig command. I can successfully ping the host as well.

However the command → netDevCreate(“wrs”,“10.71.250.20”,1) results in value = 4294967295 = 0xffffffff

Hi Dan,

instead how to make manual IP setting persistent at boot?
I cannot see a /etc dir…

And second question… How to launch a custom DKM application at startup (for example the start function of my myapp.o)?

Thanks in advance
Alessandro

Hi,

I had the same problem and RESOLVED adding a slash in front of the dev name. Like this:

netDevCreate("/wrs", "<your host IP>", 1)

@dan.milea the README contains this error.

Best regards
Alessandro

The VxWorks kernel from the Raspberry Pi 4 SDK is configured to always start with DHCP. Manual IP addresses must be set using the shell, after the DHCP client has terminated.

Start-up scripts defined in the boot line are used to perform actions on startup, but this is not available in the prebuilt kernel where the boot line is not user configurable.

Regards,
Dan

Thank you @amannini for pointing out the issue in the documentation. This behavior has been introduced in a more recent version of VxWorks, but there are still earlier versions of the SDK where the command without / in the device name will be the recommended usage.

Dan

I just purchased a Raspberry Pi 4 Model B 4GB board: c03115 1b448bab
I updated bootloader in EEPROM to 8ba17717 1/11/23

I’ve tried booting form USB stick and sdcard with the same results.
start4.elf: is not compatible.
This board requires newer software

I’m using wrsdk 1.4 and firmware-1.20200212
The hdmi console shows reading config.txt, start4.elf and fixup4.dat, Firmware: c3c8… Feb 12 2020

any ideas why it’s getting stuck here?
Laci

Try using a newer firmware package from https://github.com/raspberrypi/firmware/archive/refs/heads/master.zip instead of firmware-1.20200212.

Dan

Hi Dan,

I’ve been trying to setup my Pi to access the ethernet However I had no luck…
22:49:23.951 → ifconfig genet0 -dhcp
22:49:23.951 → [vxWorks *]# ifconfig genet0 192.168.0.2
22:49:40.810 → [vxWorks *]# ifconfig -a
22:49:49.410 → lo0 Link type:Local loopback
22:49:49.410 → inet 127.0.0.1 mask 255.255.255.255
22:49:49.410 → inet6 unicast fe80::1%lo0 prefixlen 64 automatic
22:49:49.442 → inet6 unicast ::1 prefixlen 128
22:49:49.442 → UP RUNNING LOOPBACK MULTICAST NOARP ALLMULTI
22:49:49.442 → MTU:1500 metric:1 VR:0 ifindex:1
22:49:49.442 → RX packets:83 mcast:0 errors:0 dropped:0
22:49:49.442 → TX packets:83 mcast:0 errors:0
22:49:49.442 → collisions:0 unsupported proto:0
22:49:49.442 → RX bytes:12838 (12 k) TX bytes:12838 (12 k)
22:49:49.442 →
22:49:49.442 → genet0 Link type:Ethernet HWaddr d8:3a:dd:39:ae:26
22:49:49.442 → inet 192.168.0.2 mask 255.255.255.0 broadcast 192.168.0.255
22:49:49.475 → inet6 unicast fe80::da3a:ddff:fe39:ae26%genet0 prefixlen 64 automatic
22:49:49.475 → UP RUNNING SIMPLEX BROADCAST MULTICAST
22:49:49.475 → MTU:1500 metric:1 VR:0 ifindex:2
22:49:49.475 → RX packets:53 mcast:0 errors:0 dropped:12
22:49:49.475 → TX packets:65 mcast:15 errors:0
22:49:49.475 → collisions:0 unsupported proto:0
22:49:49.475 → RX bytes:4422 TX bytes:12658 (12 k)

22:49:49.475 → [vxWorks *]# ping -c 4 192.168.0.3

22:52:15.593 →

22:52:15.593 → Pinging vxTarget (192.168.0.3) with 64 bytes of data:

22:52:19.700 →

22:52:19.700 → — vxTarget ping statistics —

22:52:19.700 → 4 packets transmitted, 0 received, 100% packet loss, time 4100 ms

windows machine :
However on my windows machine i am able to setup the network and able to ping the host.
C:\Users\yelas>ipconfig

Windows IP Configuration

Ethernet adapter Ethernet 3:

Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 192.168.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :

C:\Users\yelas>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:
Reply from 192.168.0.2: bytes=32 time=2ms TTL=64
Reply from 192.168.0.2: bytes=32 time<1ms TTL=64
Reply from 192.168.0.2: bytes=32 time<1ms TTL=64
Reply from 192.168.0.2: bytes=32 time<1ms TTL=64

when I try to ping from pi to my windows pc the packets never return back. Can you help with this ?

Hi Yeltsin,

I’ve seen some combinations of firmware and u-boot where the network is very slow to come up.

Does the link LED on the RPi Ethernet port stay lit or does it blink?

Let’s do a test: boot the Raspberry Pi 4 board with an Ethernet cable connected and simply leave it alone for 5 minutes, and then check the status of the network connection.

Dan

Hi Dan,

I allowed the PI to stay on for about 15 mins, both the LED’s on the ethernet port stay turned on.

However, I am still not able to ping the Pi.

Some additional Info:

09:57:36.267 → U-Boot 2023.01 (Aug 19 2023 - 21:29:25 +0100)
09:57:36.267 →
09:57:49.640 → _________ _________
09:57:49.640 → .…\ /…/
09:57:49.640 → .…\ /…/
09:57:49.640 → .…\ /…/
09:57:49.640 → .…\ /…/
09:57:49.640 → .…\ .…/
09:57:49.640 → .…\ .…/ VxWorks SMP 64-bit
09:57:49.673 → .…\ .…/
09:57:49.673 → .…\ ./ Release version: 22.03
09:57:49.673 → .…\ - Build date: Mar 15 2022 18:06:48
09:57:49.673 → .…
09:57:49.673 → .…/ Copyright Wind River Systems, Inc.
09:57:49.673 → .…/ - 1984-2022
09:57:49.673 → .…/ /.
09:57:49.673 → ./ /…
09:57:49.673 → - -------
09:57:49.705 →
09:57:49.705 → Board: Raspberry Pi 4 Model B - ARMv8
09:57:49.705 → CPU Count: 4
09:57:49.705 → OS Memory Size: ~883MB
09:57:49.705 → ED&R Policy Mode: Deployed
09:57:49.705 → Debug Agent: Started (always)
09:57:49.705 → Stop Mode Agent: Not started
09:57:49.705 → BSP Status: *** UNSUPPORTED ***
09:57:49.705 →
09:57:49.705 → Thu Jan 1 00:00:00 1970: ipnet[408680]: Error: ipcom_getsockaddrbyaddr failed gw: dhcp
09:57:49.746 →
09:57:49.746 → Adding 21025 symbols for standalone.
09:57:49.826 →

Hi Dan,
I left it for more than 2 hrs and now I am able to ping my windows machine and vice versa. Do you know if there is any work around for this to get it connected quickly?

also, when I try to run python, it does not work.
11:55:53.883 → [vxWorks *]# cd /usr/
11:56:04.284 → [vxWorks *]# pwd
11:56:06.317 → /sd0a/sysroot/usr
11:56:06.317 → [vxWorks *]# python3
11:56:11.113 → Launching process ‘python3’ …
11:56:11.158 → Process ‘python3’ (process Id = 0xffff80000046ffe0) launched.
11:56:12.819 → 0xffff80000046c030 (iPython3): RTP 0xffff80000046ffe0 has been deleted due to signal 11.

Thanks in advance!

Yeltsin, I’m not sure what your previous log was supposed to demonstrate, since it didn’t include any commands to set a static IP address. I expect the wait period to be minutes, not hours.

The python interpreter needs a larger stack size which you can set by running
rtpSpStackSize=0x1000000
in the C shell before running python3.

The previous one was just to let you know the Uboot version and VxWorks version that I am using so that it would help to know if there were any issues with the particular versions of the software that I am using.

I tried increasing the stack however ran in to another issue

If you don’t mind, do we have any docs on using the GPIO, I2C drivers?

Thanks,
Yeltsin

This latest issue seems to be related to an incomplete copy of the file system. You should use the -L flag with cp to make sure the symbolic links are dereferenced when copying the files.
E.g.
cp -rLu /home/dan/tmp/wrsdk-vxworks7-raspberrypi4b/vxsdk/sdcard/sysroot /media/dan/6E5B-7625/

Please check https://docs.windriver.com/ and see if the documentation you’re interested in is available there.

Dan

Hi Dan,

I did tried copying the files over to the sdcard with cp -Lu. However, I get the same error.

Please find the Uboot and VxWorks versions below:
U-Boot 2023.01 (Aug 30 2023 - 20:47:04 +0100)
VxWorks Release version: 22.03 Build date: Mar 15 2022 18:06:48

This is how I create an SD card from the RPi4 SDK.

cp ~/projects/rpi/src/u-boot_2023.01/u-boot.bin /run/media/dan/F0AB-1D53/u-boot-64.bin
cp -r ~/Downloads/firmware-1.20200212/boot/* /run/media/dan/F0AB-1D53/
cp -rLu ~/Downloads/wrsdk-vxworks7-raspberrypi4b-1.4/vxsdk/sdcard/* /run/media/dan/F0AB-1D53/
cp ~/Downloads/wrsdk-vxworks7-raspberrypi4b-1.4/vxsdk/bsps/rpi_4_0_1_3_0/uVxWorks /run/media/dan/F0AB-1D53/

The SD card is usable with my Raspberry Pi 4 board with 4GB of RAM.

The python interpreter can be started as follows:

-> rtpSpStackSize=0x1000000
rtpSpStackSize = 0xffffffff80c33230: value = 16777216 = 0x1000000
-> devs
drv refs name
 13 [ 5] /dev/random
 13 [ 5] /dev/urandom
 12 [ 5] /dev/zero
 11 [ 5] /fifos
 16 [ 5] /host.host
 14 [ 5] /input/event
  0 [ 5] /null
 10 [ 5] /ram0
  5 [ 5] /sd0a
  3 [ 5] /shm
 10 [ 5] /tmp
  2 [ 7] /ttyS0
value = 2 = 0x2
-> cd "/sd0a/"
value = 0 = 0x0
-> cmd python3
Launching process 'python3' ...
Process 'python3' (process Id = 0xffff8000004b41b0) launched.

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

The SD card should be formatted as FAT32. If you follow the instructions in the SDK README file you should have a bootable SD card with the Python libraries included. Depending on your hardware revision, you may need to use a newer version of the RPi4 firmware from https://github.com/raspberrypi/firmware/.

Dan

1 Like

Hi Dan,

Thanks for your inputs, I seem to still have an issue with running. I believe its a problem with formatting the sd-card. I don’t have a linux machine so i am using wsl ubuntu 20.04 to build and copy files. I’ve formated it as a fat32 in my windows machine as you can see from image below.

mounted the sdcard on wsl as per Get started mounting a Linux disk in WSL 2 | Microsoft Learn

$sudo mount -t drvfs D: /mnt/d

Copied the files as per your instructions:


However, I still see the issue.

In: serial
Out: serial
Err: serial
Net:
Warning: ethernet@7d580000 MAC addresses don’t match:
Address in DT is d8:3a:dd:39:ae:26
Address in environment is dc:a6:32:07:b3:a4
eth0: ethernet@7d580000
Hit any key to stop autoboot: 2  1  0
12667552 bytes read in 549 ms (22 MiB/s)

Booting kernel from Legacy Image at 00100000 …

Image Name: vxworks
Image Type: AArch64 VxWorks Kernel Image (uncompressed)
Data Size: 12667488 Bytes = 12.1 MiB
Load Address: 00100000
Entry Point: 00100000
Verifying Checksum … OK
Working FDT set to 0

Loading Kernel Image

!!! WARNING !!! Using legacy DTB

Starting vxWorks at 0x00100000, device tree at 0x00000000 …

Instantiating /ram0 as rawFs, device = 0x1

Formatting /ram0 for HRFS v1.2

Instantiating /ram0 as rawFs, device = 0x1

Formatting…OK.

Target Name: vxTarget

Instantiating /tmp as rawFs, device = 0x10001

Formatting /tmp for HRFS v1.2

Instantiating /tmp as rawFs, device = 0x10001

Formatting…OK.


.…\ /…/
.…\ /…/
.…\ /…/
.…\ /…/
.…\ .…/
.…\ .…/ VxWorks SMP 64-bit
.…\ .…/
.…\ ./ Release version: 22.03
.…\ - Build date: Mar 15 2022 18:06:48
.…
.…/ Copyright Wind River Systems, Inc.
.…/ - 1984-2022
.…/ /.
./ /…
- -------

               Board: Raspberry Pi 4 Model B - ARMv8
           CPU Count: 4
      OS Memory Size: ~883MB
    ED&R Policy Mode: Deployed
 Debug Agent: Started (always)
     Stop Mode Agent: Not started
          BSP Status: *** UNSUPPORTED ***

Thu Jan 1 00:00:00 1970: ipnet[408680]: Error: ipcom_getsockaddrbyaddr failed gw: dhcp

Adding 21025 symbols for standalone.

→ rtpSpStackSize=0x1000000
rtpSpStackSize = 0xffffffff80c33230: value = 16777216 = 0x1000000
→ devs
drv refs name
13 [ 5] /dev/random
13 [ 5] /dev/urandom
12 [ 5] /dev/zero
11 [ 5] /fifos
16 [ 5] /host.host
14 [ 5] /input/event
0 [ 5] /null
10 [ 5] /ram0
5 [ 5] /sd0a
3 [ 5] /shm
10 [ 5] /tmp
2 [ 7] /ttyS0
value = 2 = 0x2
→ cd “/sd0a/”
value = 0 = 0x0
→ cmd python3
Launching process ‘python3’ …
Process ‘python3’ (process Id = 0xffff80000046c620) launched.
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = ‘/usr/bin/python3’
isolated = 0
environment = 1
user site = 1
import site = 1
sys._base_executable = ‘/usr/bin/python3’
sys.base_prefix = ‘/usr’
sys.base_exec_prefix = ‘/usr’
sys.platlibdir = ‘lib’
sys.executable = ‘/usr/bin/python3’
sys.prefix = ‘/usr’
sys.exec_prefix = ‘/usr’
sys.path = [
‘/usr/lib/python39.zip’,
‘/usr/lib/python3.9’,
‘/usr/lib/python3.9/lib-dynload’,
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding

Python runtime state: core initialized

Traceback (most recent call last):

File “/usr/lib/python3.9/encodings/init.py”, line 31, in

ModuleNotFoundError: No module named ‘codecs’