acrn-hypervisor/doc/tutorials/using_vxworks_as_uos.rst

164 lines
5.4 KiB
ReStructuredText

.. _using_vxworks_as_uos:
Run VxWorks as the User VM
##########################
`VxWorks`_\* is a real-time proprietary OS designed for use in embedded systems requiring real-time, deterministic
performance. This tutorial describes how to run VxWorks as the User VM on the ACRN hypervisor
based on Ubuntu Service VM (ACRN tag v2.0).
.. note:: You'll need to be a Wind River* customer and have purchased VxWorks to follow this tutorial.
Steps for Using VxWorks as User VM
**********************************
#. Build VxWorks
Follow the `VxWorks Getting Started Guide <https://docs.windriver.com/bundle/vxworks_7_tutorial_kernel_application_workbench_sr0610/page/rbu1422461642318.html>`_
to set up the VxWorks development environment and build the VxWorks Image.
.. note::
The following kernel configuration should be **excluded**:
* INCLUDE_PC_CONSOLE
* DRV_SIO_PCI_NS16550
* SELECT_PC_CONSOLE_KBD
The following kernel configuration should be **included**:
* DRV_SIO_IA_NS16550
* DRV_SIO_FDT_NS16550
The following kernel configuration value should be **set**:
* CONSOLE_BAUD_RATE = 115200
* SYS_CLK_RATE_MAX = 1000
#. Build GRUB2 bootloader Image
We use grub-2.02 as the bootloader of VxWorks in this tutorial; other versions may also work.
.. code-block:: none
$ curl ftp://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz | tar xJv
$ cd grub-2.02
$ ./autogen.sh
$ ./configure --with-platform=efi --target=x86_64
$ make
$ ./grub-mkimage -p /EFI/BOOT -d ./grub-core/ -O x86_64-efi -o grub_x86_64.efi \
boot efifwsetup efi_gop efinet efi_uga lsefimmap lsefi lsefisystab \
exfat fat multiboot2 multiboot terminal part_msdos part_gpt normal \
all_video aout configfile echo file fixvideo fshelp gfxterm gfxmenu \
gfxterm_background gfxterm_menu legacycfg video_bochs video_cirrus \
video_colors video_fb videoinfo video net tftp
This will build a ``grub_x86_64.efi`` image in the current directory.
#. Preparing the Boot Device
.. code-block:: none
$ dd if=/dev/zero of=VxWorks.img bs=1M count=35
$ mkfs.vfat -F 32 VxWorks.img
$ sudo mount `sudo losetup -f -P --show VxWorks.img` /mnt
Create the following directories.
.. code-block:: none
$ sudo mkdir -p /mnt/efi/boot
$ sudo mkdir -p /mnt/kernel
Copy ``vxWorks`` and ``grub_x86_64.efi``.
.. code-block:: none
$ sudo cp vxWorks /mnt/kernel/
$ sudo cp grub-2.02/grub_x86_64.efi /mnt/efi/boot/bootx64.efi
Create ``/mnt/efi/boot/grub.cfg`` containing the following:
.. code-block:: none
set default=0
set timeout=5
menuentry "VxWorks Guest" {
multiboot /kernel/vxWorks
}
Unmount the loopback device:
.. code-block:: none
$ sudo umount /mnt
You now have a virtual disk image with bootable VxWorks in ``VxWorks.img``.
#. Follow :ref:`gsg` to boot the ACRN Service VM.
#. Boot VxWorks as User VM.
On the ACRN Service VM, prepare a directory and populate it with VxWorks files.
.. code-block:: none
$ mkdir vxworks && cd vxworks
$ cp /usr/share/acrn/samples/nuc/launch_vxworks.sh .
You will also need to copy the ``VxWorks.img`` created in the VxWorks build environment into directory
``vxworks`` (via, e.g. a USB drive or network).
Run the ``launch_vxworks.sh`` script to launch VxWorks as the User VM.
.. code-block:: none
$ sudo ./launch_vxworks.sh
Then VxWorks will boot automatically. You will see the prompt.
.. code-block:: console
VxWorks 7 SMP 64-bit
Copyright 1984-2019 Wind River Systems, Inc.
Core Kernel version: 1.2.7.0
Build date: May 5 2019 21:40:28
Board: x86 Processor (ACPI_BOOT_OP) SMP/SMT
CPU Count: 1
OS Memory Size: ~1982MB
ED&R Policy Mode: Permanently Deployed
Adding 9315 symbols for standalone.
->
Finally, you can type ``help`` to see available VxWorks commands.
.. code-block:: console
-> help
help Print this list
dbgHelp Print debugger help info
edrHelp Print ED&R help info
ioHelp Print I/O utilities help info
nfsHelp Print nfs help info
netHelp Print network help info
rtpHelp Print process help info
spyHelp Print task histogrammer help info
timexHelp Print execution timer help info
h [n] Print (or set) shell history
i [task] Summary of tasks' TCBs
ti task Complete info on TCB for task
sp adr,args... Spawn a task, pri=100, opt=0x19, stk=20000
taskSpawn name,pri,opt,stk,adr,args... Spawn a task
tip "dev=device1#tag=tagStr1", "dev=device2#tag=tagStr2", ...
Connect to one or multiple serial lines
td task Delete a task
ts task Suspend a task
tr task Resume a task
Type <CR> to continue, Q<CR> or q<CR> to stop:
.. _VxWorks: https://www.windriver.com/products/vxworks/