1# 2# Copyright (C) 2013, Miao Yan <miao.yan@windriver.com> 3# Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com> 4# 5# SPDX-License-Identifier: GPL-2.0+ 6# 7 8VxWorks Support 9=============== 10 11This document describes the information about U-Boot loading VxWorks kernel. 12 13Status 14------ 15U-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands. 16For booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions 17on other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels 18on PowerPC and ARM, 'bootm' shall be used. 19 20VxWorks 7 on PowerPC and ARM 21--------------------------- 22From VxWorks 7, VxWorks starts adopting device tree as its hardware decription 23mechansim (for PowerPC and ARM), thus requiring boot interface changes. 24This section will describe the new interface. 25 26For PowerPC, the calling convention of the new VxWorks entry point conforms to 27the ePAPR standard, which is shown below (see ePAPR for more details): 28 29 void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0) 30 31For ARM, the calling convention is shown below: 32 33 void (*kernel_entry)(void *fdt_addr) 34 35When booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm 36is like below: 37 38 bootm <kernel image address> - <device tree address> 39 40VxWorks bootline 41---------------- 42When using 'bootvx', the kernel bootline must be prepared by U-Boot at a 43board-specific address before loading VxWorks. U-Boot supplies its address 44via "bootaddr" environment variable. To check where the bootline should be 45for a specific board, go to the VxWorks BSP for that board, and look for a 46parameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical 47value for "bootaddr" on an x86 board is 0x101200. 48 49If a "bootargs" variable is defined, its content will be copied to the memory 50location pointed by "bootaddr" as the kernel bootline. If "bootargs" is not 51there, command 'bootvx' can construct a valid bootline using the following 52environments variables: bootdev, bootfile, ipaddr, netmask, serverip, 53gatewayip, hostname, othbootargs. 54 55When using 'bootm', just define "bootargs" in the environment and U-Boot will 56handle bootline fix up for the kernel dtb automatically. 57 58Serial console 59-------------- 60It's very common that VxWorks BSPs configure a different baud rate for the 61serial console from what is being used by U-Boot. For example, VxWorks tends 62to use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200. 63Please configure both U-Boot and VxWorks to use the same baud rate, or it may 64look like VxWorks hangs somewhere as nothing outputs on the serial console. 65 66x86-specific information 67------------------------ 68Before loading an x86 kernel, one additional environment variable need to be 69provided. This is "vx_phys_mem_base", which represent the physical memory 70base address of VxWorks. 71 72Check VxWorks kernel configuration to look for LOCAL_MEM_LOCAL_ADRS. For 73VxWorks 7, this is normally a virtual address and you need find out its 74corresponding physical address and assign its value to "vx_phys_mem_base". 75 76For boards on which ACPI is not supported by U-Boot yet, VxWorks kernel must 77be configured to use MP table and virtual wire interrupt mode. This requires 78INCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a 79VxWorks kernel configuration. 80 81Both 32-bit x86 and 64-bit x64 kernels can be loaded. 82 83There are two types of graphics console drivers in VxWorks. One is the 80x25 84VGA text mode driver. The other one is the EFI console bitmapped graphics mode 85driver. To make these drivers function, U-Boot needs to load and run the VGA 86BIOS of the graphics card first. 87 88 - If the kernel is configured with 80x25 VGA text mode driver, 89 CONFIG_FRAMEBUFFER_SET_VESA_MODE must be unset in U-Boot. 90 - If the kernel is configured with bitmapped graphics mode driver, 91 CONFIG_FRAMEBUFFER_SET_VESA_MODE need remain set but care must be taken 92 at which VESA mode is to be set. The supported pixel format is 32-bit 93 RGBA, hence the available VESA mode can only be one of the following: 94 * FRAMEBUFFER_VESA_MODE_10F 95 * FRAMEBUFFER_VESA_MODE_112 96 * FRAMEBUFFER_VESA_MODE_115 97 * FRAMEBUFFER_VESA_MODE_118 98 * FRAMEBUFFER_VESA_MODE_11B 99