xref: /openbmc/u-boot/doc/README.vxworks (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini# SPDX-License-Identifier: GPL-2.0+
23619e94aSBin Meng#
33619e94aSBin Meng# Copyright (C) 2013, Miao Yan <miao.yan@windriver.com>
43619e94aSBin Meng# Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
53619e94aSBin Meng
63619e94aSBin MengVxWorks Support
73619e94aSBin Meng===============
83619e94aSBin Meng
93619e94aSBin MengThis document describes the information about U-Boot loading VxWorks kernel.
103619e94aSBin Meng
113619e94aSBin MengStatus
123619e94aSBin Meng------
133619e94aSBin MengU-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands.
143619e94aSBin MengFor booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions
153619e94aSBin Mengon other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels
163619e94aSBin Mengon PowerPC and ARM, 'bootm' shall be used.
173619e94aSBin Meng
182ad3d088SBin MengVxWorks 7 on PowerPC and ARM
193619e94aSBin Meng---------------------------
203619e94aSBin MengFrom VxWorks 7, VxWorks starts adopting device tree as its hardware decription
213619e94aSBin Mengmechansim (for PowerPC and ARM), thus requiring boot interface changes.
2282450b9aSMiao YanThis section will describe the new interface.
2382450b9aSMiao Yan
243619e94aSBin MengFor PowerPC, the calling convention of the new VxWorks entry point conforms to
253619e94aSBin Mengthe ePAPR standard, which is shown below (see ePAPR for more details):
2682450b9aSMiao Yan
273619e94aSBin Meng    void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0)
2882450b9aSMiao Yan
292ad3d088SBin MengFor ARM, the calling convention is shown below:
3082450b9aSMiao Yan
3182450b9aSMiao Yan    void (*kernel_entry)(void *fdt_addr)
3282450b9aSMiao Yan
332ad3d088SBin MengWhen booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm
343619e94aSBin Mengis like below:
3582450b9aSMiao Yan
3682450b9aSMiao Yan    bootm <kernel image address> - <device tree address>
3782450b9aSMiao Yan
383619e94aSBin MengVxWorks bootline
393619e94aSBin Meng----------------
403619e94aSBin MengWhen using 'bootvx', the kernel bootline must be prepared by U-Boot at a
413619e94aSBin Mengboard-specific address before loading VxWorks. U-Boot supplies its address
423619e94aSBin Mengvia "bootaddr" environment variable. To check where the bootline should be
433619e94aSBin Mengfor a specific board, go to the VxWorks BSP for that board, and look for a
443619e94aSBin Mengparameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical
452ad3d088SBin Mengvalue for "bootaddr" on an x86 board is 0x101200.
463619e94aSBin Meng
473619e94aSBin MengIf a "bootargs" variable is defined, its content will be copied to the memory
483619e94aSBin Menglocation pointed by "bootaddr" as the kernel bootline. If "bootargs" is not
493619e94aSBin Mengthere, command 'bootvx' can construct a valid bootline using the following
503619e94aSBin Mengenvironments variables: bootdev, bootfile, ipaddr, netmask, serverip,
513619e94aSBin Menggatewayip, hostname, othbootargs.
523619e94aSBin Meng
533619e94aSBin MengWhen using 'bootm', just define "bootargs" in the environment and U-Boot will
543619e94aSBin Menghandle bootline fix up for the kernel dtb automatically.
553619e94aSBin Meng
563619e94aSBin MengSerial console
573619e94aSBin Meng--------------
583619e94aSBin MengIt's very common that VxWorks BSPs configure a different baud rate for the
593619e94aSBin Mengserial console from what is being used by U-Boot. For example, VxWorks tends
603619e94aSBin Mengto use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200.
613619e94aSBin MengPlease configure both U-Boot and VxWorks to use the same baud rate, or it may
623619e94aSBin Menglook like VxWorks hangs somewhere as nothing outputs on the serial console.
633619e94aSBin Meng
643619e94aSBin Mengx86-specific information
653619e94aSBin Meng------------------------
662902be86SBin MengBefore loading an x86 kernel, one additional environment variable need to be
672902be86SBin Mengprovided. This is "vx_phys_mem_base", which represent the physical memory
682902be86SBin Mengbase address of VxWorks.
693619e94aSBin Meng
702902be86SBin MengCheck VxWorks kernel configuration to look for LOCAL_MEM_LOCAL_ADRS. For
712902be86SBin MengVxWorks 7, this is normally a virtual address and you need find out its
722902be86SBin Mengcorresponding physical address and assign its value to "vx_phys_mem_base".
733619e94aSBin Meng
742ad3d088SBin MengFor boards on which ACPI is not supported by U-Boot yet, VxWorks kernel must
753619e94aSBin Mengbe configured to use MP table and virtual wire interrupt mode. This requires
763619e94aSBin MengINCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a
773619e94aSBin MengVxWorks kernel configuration.
787d9974a2SBin Meng
797d9974a2SBin MengBoth 32-bit x86 and 64-bit x64 kernels can be loaded.
807d9974a2SBin Meng
817d9974a2SBin MengThere are two types of graphics console drivers in VxWorks. One is the 80x25
827d9974a2SBin MengVGA text mode driver. The other one is the EFI console bitmapped graphics mode
837d9974a2SBin Mengdriver. To make these drivers function, U-Boot needs to load and run the VGA
847d9974a2SBin MengBIOS of the graphics card first.
857d9974a2SBin Meng
867d9974a2SBin Meng    - If the kernel is configured with 80x25 VGA text mode driver,
877d9974a2SBin Meng      CONFIG_FRAMEBUFFER_SET_VESA_MODE must be unset in U-Boot.
887d9974a2SBin Meng    - If the kernel is configured with bitmapped graphics mode driver,
897d9974a2SBin Meng      CONFIG_FRAMEBUFFER_SET_VESA_MODE need remain set but care must be taken
907d9974a2SBin Meng      at which VESA mode is to be set. The supported pixel format is 32-bit
917d9974a2SBin Meng      RGBA, hence the available VESA mode can only be one of the following:
927d9974a2SBin Meng        * FRAMEBUFFER_VESA_MODE_10F
937d9974a2SBin Meng        * FRAMEBUFFER_VESA_MODE_112
947d9974a2SBin Meng        * FRAMEBUFFER_VESA_MODE_115
957d9974a2SBin Meng        * FRAMEBUFFER_VESA_MODE_118
967d9974a2SBin Meng        * FRAMEBUFFER_VESA_MODE_11B
97