Add VxWorks target

Adds VxWorks VSB, VIP and libs. Exports VSB and work dir for
VxWorks qemu. Places VxWorks qemu launcher in home.

Use 8 cores on VxWorks target as qemu is run on 4 cores and
those 4 cores will be run at 100% all time due to RTOS nature
of VxWorks.

Task-number: COIN-297
Change-Id: If1ae42109a5a1ab7164f09a9eabf9fd9064fd0d9
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Jarno Lämsä <jarno.lamsa@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
This commit is contained in:
Toni Saario
2023-09-21 15:16:55 +03:00
parent 9b067849bf
commit 92bdb686cc
7 changed files with 126 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ Version: 2
Include: [
cmake_platforms_qemu.yaml,
cmake_platforms_qemu_qnx710.yaml,
cmake_platforms_qemu_vxworks.yaml,
cmake_platforms_target_android.yaml,
cmake_platforms_wasm.yaml,
macos.yaml

View File

@@ -0,0 +1,15 @@
Version: 2
Configurations:
-
Id: 'vxworks-imx6'
Template: 'qtci-linux-Ubuntu-22.04-x86_64-51'
Target os: 'VxWorks'
Target arch: 'ARMv7'
Compiler: 'Clang'
Target compiler: 'Clang'
Platform dependency: 'ubuntu-22.04'
Features: ['Packaging', 'VMSize8', 'UseConfigure', 'Insignificant', 'DisableTests']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-release -developer-build -force-debug-info -qpa eglfs -nomake examples',
'TARGET_CMAKE_ARGS=-DBUILD_SHARED_LIBS=OFF -DWARNINGS_ARE_ERRORS=OFF -DCMAKE_TOOLCHAIN_FILE="{{.Env.WIND_CC_SYSROOT}}/mk/rtp.toolchain.cmake" -DFEATURE_vulkan=OFF -DQT_QMAKE_TARGET_MKSPEC=vxworks-clang -DQT_HOST_PATH=/home/qt/work/install -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_STAGING_PREFIX:PATH=/home/qt/work/install/target'
]

View File

@@ -0,0 +1,11 @@
Version: 2
Module only: True
Include: [
cmake_platforms.yaml: [
"ubuntu-22.04"
],
cmake_platforms_qemu_vxworks.yaml: [
"vxworks-imx6"
]
]
Configurations: []

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script installs vxworks libs and toolchain.
set -ex
# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh
source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh"
# shellcheck source=../unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
VXWORKS_VER="23_09"
######### VXworks libs #########
# Installs to /opt/vxworks
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_no_source_patched_$VXWORKS_VER.tar.gz"
AltUrl=""
sha1="35a457999b310a6128e3bd7de3103c2235063071"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$targetFolder" "$appPrefix"
SetEnvVar "VXWORKS_HOME" "/opt/vxworks"
######### VXworks toolchain #########
# Installs to /opt/fsl_imx6_2_0_6_2_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_vsb_$VXWORKS_VER.tar.gz"
AltUrl=""
sha1="cd32d35e67fd6128fbfbb23207bb4d1d2d09b7d2"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$targetFolder" "$appPrefix"
SetEnvVar "WIND_CC_SYSROOT" "/opt/fsl_imx6_2_0_6_2_VSB"
######### VXworks VIP kernel #########
# Installs to /opt/fsl_imx6_2_0_6_2_VIP_QEMU
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_vip_kernel_$VXWORKS_VER.tar.gz"
AltUrl=""
sha1="d72bb635a00a5b1b82185e3c200078cbe5c39561"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$targetFolder" "$appPrefix"
SetEnvVar "VXWORKS_SSH" "WindRiver@10.0.2.4"
# Setup NFS exports that are needed by VxWorks qemu
sudo bash -c "echo '/home/qt/work 10.0.2.4/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports"
sudo bash -c "echo '/opt/fsl_imx6_2_0_6_2_VSB 10.0.2.4/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports"
sudo exportfs -a
# Copy start script in place
cp "${BASH_SOURCE%/*}/../linux/vxworks_qemu_launcher.sh" "${HOME}"
SetEnvVar "VXWORKS_EMULATOR" "${HOME}/vxworks_qemu_launcher.sh"

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# Setup bridge if not exist for VxWorks QEMU
if ! ip link show br0 >/dev/null 2>&1; then
sudo brctl addbr br0
sudo brctl stp br0 off
sudo ifconfig br0 10.0.2.1 netmask 255.255.255.0 promisc up
sudo tunctl -u qt -t tap0
sudo ifconfig tap0 promisc up
sudo brctl addif br0 tap0
fi
QEMU_LOG_PATH="/home/qt/work/vxworks_qemu_log.txt"
qemu-system-arm \
-machine sabrelite \
-smp 4 \
-m 1G \
-nographic \
-monitor none \
-serial null \
-serial stdio \
-kernel /opt/fsl_imx6_2_0_6_2_VIP_QEMU/default/uVxWorks \
-dtb /opt/fsl_imx6_2_0_6_2_VIP_QEMU/default/imx6q-sabrelite.dtb \
-append "enet(0,0)host:vxWorks h=10.0.2.1 g=10.0.2.1 e=10.0.2.4 u=target pw=vxTarget s=/romfs/startup_script_arm.txt" \
-nic "tap,ifname=tap0,script=no" >"${QEMU_LOG_PATH}" 2>&1 &
for counter in $(seq 30)
do
status=$(ssh -o BatchMode=yes -o HostKeyAlgorithms=+ssh-rsa -o ConnectTimeout=1 ${VXWORKS_SSH} echo emulator up)
if [[ $status == *"emulator up"* ]] ; then
echo "VXWORKS QEMU SSH server up"
break
else
echo "Waiting VXWORKS QEMU SSH server"
sleep 1
fi
done

View File

@@ -221,6 +221,8 @@ installPackages+=(ubuntu-dev-tools)
# cifs-utils, for mounting smb drive
installPackages+=(keyutils)
installPackages+=(cifs-utils)
# VxWorks QEMU network setup (tunctl)
installPackages+=(uml-utilities)
echo "Running update for apt"
waitLoop

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/vx_works.sh
source "${BASH_SOURCE%/*}/../common/linux/vx_works.sh"