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