blob: 3f9b8c182e3d782da78b2687da787d970325e85b [file] [log] [blame]
Bin Meng6ab240d2015-10-07 20:19:20 -07001#
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
2064-bit x86 kernel cannot be loaded as of today.
21
Bin Menge1544542018-04-11 22:02:06 -070022VxWorks 7 on PowerPC and ARM
Bin Meng6ab240d2015-10-07 20:19:20 -070023---------------------------
24From VxWorks 7, VxWorks starts adopting device tree as its hardware decription
25mechansim (for PowerPC and ARM), thus requiring boot interface changes.
Miao Yanaed14582013-11-28 17:51:40 +080026This section will describe the new interface.
27
Bin Meng6ab240d2015-10-07 20:19:20 -070028For PowerPC, the calling convention of the new VxWorks entry point conforms to
29the ePAPR standard, which is shown below (see ePAPR for more details):
Miao Yanaed14582013-11-28 17:51:40 +080030
Bin Meng6ab240d2015-10-07 20:19:20 -070031 void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0)
Miao Yanaed14582013-11-28 17:51:40 +080032
Bin Menge1544542018-04-11 22:02:06 -070033For ARM, the calling convention is shown below:
Miao Yanaed14582013-11-28 17:51:40 +080034
35 void (*kernel_entry)(void *fdt_addr)
36
Bin Menge1544542018-04-11 22:02:06 -070037When booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm
Bin Meng6ab240d2015-10-07 20:19:20 -070038is like below:
Miao Yanaed14582013-11-28 17:51:40 +080039
40 bootm <kernel image address> - <device tree address>
41
Bin Meng6ab240d2015-10-07 20:19:20 -070042VxWorks bootline
43----------------
44When using 'bootvx', the kernel bootline must be prepared by U-Boot at a
45board-specific address before loading VxWorks. U-Boot supplies its address
46via "bootaddr" environment variable. To check where the bootline should be
47for a specific board, go to the VxWorks BSP for that board, and look for a
48parameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical
Bin Menge1544542018-04-11 22:02:06 -070049value for "bootaddr" on an x86 board is 0x101200.
Bin Meng6ab240d2015-10-07 20:19:20 -070050
51If a "bootargs" variable is defined, its content will be copied to the memory
52location pointed by "bootaddr" as the kernel bootline. If "bootargs" is not
53there, command 'bootvx' can construct a valid bootline using the following
54environments variables: bootdev, bootfile, ipaddr, netmask, serverip,
55gatewayip, hostname, othbootargs.
56
57When using 'bootm', just define "bootargs" in the environment and U-Boot will
58handle bootline fix up for the kernel dtb automatically.
59
60Serial console
61--------------
62It's very common that VxWorks BSPs configure a different baud rate for the
63serial console from what is being used by U-Boot. For example, VxWorks tends
64to use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200.
65Please configure both U-Boot and VxWorks to use the same baud rate, or it may
66look like VxWorks hangs somewhere as nothing outputs on the serial console.
67
68x86-specific information
69------------------------
Bin Menge3be8902018-04-11 22:02:07 -070070Before loading an x86 kernel, one additional environment variable need to be
71provided. This is "vx_phys_mem_base", which represent the physical memory
72base address of VxWorks.
Bin Meng6ab240d2015-10-07 20:19:20 -070073
Bin Menge3be8902018-04-11 22:02:07 -070074Check VxWorks kernel configuration to look for LOCAL_MEM_LOCAL_ADRS. For
75VxWorks 7, this is normally a virtual address and you need find out its
76corresponding physical address and assign its value to "vx_phys_mem_base".
Bin Meng6ab240d2015-10-07 20:19:20 -070077
Bin Menge1544542018-04-11 22:02:06 -070078For boards on which ACPI is not supported by U-Boot yet, VxWorks kernel must
Bin Meng6ab240d2015-10-07 20:19:20 -070079be configured to use MP table and virtual wire interrupt mode. This requires
80INCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a
81VxWorks kernel configuration.