Boot VxWorks
This page provides instructions for creating a bootable VxWorks image in container format and setting up the boot option in SBL.
Note
See Container Tool for more details on container format.
Step 1: Download GenContainer.py and CommonUtility.py to the same working directory to use the container tool.
Step 2: Get a VxWorks kernel.
Obtain a VxWorks kernel binary. The binary should be in ELF format and multiboot compliant.
Step 3: Generate container.bin
file
Run:
GenContainer.py create -t NORMAL -cl VXWK:<VxWorks kernel> -k SblKeys\OS1_TestKey_Pub_RSA2048_priv.pem -o container.bin
Note
SblKeys\OS1_TestKey_Pub_RSA2048_priv.pem is given as an example key used for signing SBL OS container binaries.
Sample output messages:
Container 'BOOT' was created successfully at:
/home/user/container.bin
Step 4: Copy container.bin
onto the intended boot media’s boot partition.
Depending on the boot media being used, container.bin
should be copied to the root directory on the boot device.
Step 5: Configure the boot option entry to load container.bin
from the boot partition
Make sure the boot option is configured to the location of container.bin
on the boot device. E.g., if container.bin
is located on the first FAT32 partition on a USB, the boot option entry should look like the following:
- !expand { BOOT_OPTION_TMPL : [ 0 , 0 , 0 , 5 , 0 , 0 , 0 , 0 , 'container.bin' ] }
See Change Boot Options for more details.
Step 6: Build, stitch, flash and boot
Follow Supported Hardware to build a flashable image for the target platform.
Note
If the target boot option is not the first entry, enter SBL shell first to switch it to the first one.
Example boot messages:
Idx|ImgType|DevType|DevNum|Flags|HwPart|FsType|SwPart|File/Lbaoffset
0| 0| USB | 0 | 0 | 0 | FAT | 0 | container.bin
1| 0| NVME | 0 | 10 | 0 | EXT2 | 1 | /boot/sbl_os
5| 0| SATA | 0 | 10 | 0 | EXT2 | 1 | /boot/sbl_os
======== Try Booting with Boot Option 0 ========
BootMediumPciBase(0x1400)
Getting boot image from USB
Init USB XHCI - Success
Enumerate Bus - Success
Found 2 USB devices on bus
Use the 1st mass storage device
Found 1 mass storage devices
Try to find boot partition
Partition type: MBR (1 logical partitions)
Find partition success
Init File system
Detected FAT on HwDev 0 Part 0
BootSlot = 0x0
File 'container.bin' size 8686432
Get file 'container.bin' (size:0x848B60) success.
LoadBootImage ImageType-0 Image
ParseBootImage ImageType-0
Registering container BOOT
HASH verification for usage (0x00000800) with Hash Alg (0x1): Success
SignType (0x1) SignSize (0x100) SignHashAlg (0x1)
RSA verification for usage (0x00000800): Success
HASH verification for usage (0x00000000) with Hash Alg (0x1): Success
CONTAINER size = 0x848B60, image type = 0xF3, # of components = 2
COMP:VXWK Success
Unregister done - Success!
One multiboot file in boot image file ....
SetupBootImage ImageType-0
Boot image is Multiboot format...
Mb: LoadAddr=0x408000, LoadEnd=0xB55DA0 , BssEnd=0xBF4F20, Size=0x74DDA0
Dump normal boot image info:
Dump MB info @780D61C0:
- Flags: 1245
- MemLower: 280 (640K)
- MemUpper: 600C00 (6294528K)
- BootDevicePart3: 0
- BootDevicePart2: 0
- BootDevicePart1: 0
- BootDeviceDrive: 0
- Cmdline addr: 77851000
cmd = 'console=ttyS0,115200'
- ModsCount: 0
- ModsAddr: 0
- ElfshdrNum: 0
- ElfshdrSize: 0
- ElfshdrAddr: 0
- ElfshdrShndx: 0
- MmapLength: 168
- MmapAddr: 780D6810
0: 0000000000000000--00000000000A0000 1
18: 00000000000A0000--0000000000060000 2
30: 0000000000100000--00000000780E0000 1
48: 00000000781E0000--0000000000500000 2
60: 00000000786E0000--0000000000068000 3
78: 0000000078748000--0000000000008000 4
90: 0000000078750000--0000000000500000 2
A8: 0000000078C50000--00000000003B0000 2
C0: 0000000079000000--0000000002000000 2
D8: 000000007B000000--0000000000800000 2
F0: 000000007B800000--0000000000800000 2
108: 000000007C000000--0000000003C00000 2
120: 00000000FED20000--0000000000060000 2
138: 00000000FF66F000--0000000000991000 2
150: 0000000100000000--0000000180400000 1
- DrivesLength: 0
- DrivesAddr: 0
- ConfigTable: 00000000
- LoaderName: 789E3088
'Slim BootLoader'
- ApmTable: 00000000
- VbeControlInfo: 00000000
- VbeModeInfo: 00000000
- VbeInterfaceSeg: 0
- VbeInterfaceOff: 0
- VbeInterfaceLen: 0
Dump multiboot boot state:
- EntryPoint: 408000
- Eax: 2BADB002
- Ebx: 780D61C0
- Esi: 0
- Edi: 0
Payload normal heap: 0x4000000 (0x8AF000 used)
Payload reserved heap: 0x500000 (0x0 used)
Payload stack: 0x20000 (0xA08 used)
Jumping into ELF or Multiboot image entry point...
...
Starting MB Kernel ...
Target Name: vxTarget
Instantiating /ata1a as rawFs, device = 0x20001
Instantiating /ata1c as rawFs, device = 0x40001
Instantiating /ata1d as rawFs, device = 0x50001
_________ _________
\77777777\ /77777777/
\77777777\ /77777777/
\77777777\ /77777777/
\77777777\ /77777777/
\77777777\ \7777777/
\77777777\ \77777/ VxWorks 7 SMP 64-bit
\77777777\ \777/
\77777777\ \7/ Core Kernel version: 3.1.2.1
\77777777\ - Build date: Jul 7 2020 10:30:42
\77777777\
\7777777/ Copyright Wind River Systems, Inc.
\77777/ - 1984-2020
\777/ /7\
\7/ /777\
- -------
Board: x86 Processor (ACPI_BOOT_OP) SMP/SMT
CPU Count: 8
OS Memory Size: ~8004MB
ED&R Policy Mode: Deployed
Debug Agent: Not started
Stop Mode Agent: Not started
ERROR: ipcom_drv_eth_init: drvname:gei, drvunit: 0
Adding 13696 symbols for standalone.
->