blob: f382d0131eb341a40d6af341ce78cb470eb25c43 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001SPDX-License-Identifier: GPL-2.0+
Darwin Rambod32d4112014-06-09 11:12:59 -07002/*
3 * Copyright 2014 Broadcom Corporation.
Darwin Rambod32d4112014-06-09 11:12:59 -07004 */
5
6Semihosting is ARM's way of having a real or virtual target communicate
7with a host or host debugger for basic operations such as file I/O,
8console I/O, etc. Please see
9http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Bgbjjgij.html for more information.
10
11For developing on armv8 virtual fastmodel platforms, semihosting is a
12valuable tool since it allows access to image/configuration files before
13eMMC or other NV media are available.
14
15There are two main ARM virtual Fixed Virtual Platform (FVP) models,
16Versatile Express (VE) FVP and BASE FVP (See
17http://www.arm.com/products/tools/models/fast-models/foundation-model.php)
18The initial vexpress64 u-boot board created here runs on the VE virtual
19platform using the license-free Foundation_v8 simulator. Fortunately,
20the Foundation_v8 simulator also supports the BASE_FVP model which
21companies can purchase licenses for and contain much more functionality.
22So we can, in u-boot, run either model by either using the VE FVP (default),
23or turning on CONFIG_BASE_FVP for the more full featured model.
24
25Rather than create a new armv8 board similar to armltd/vexpress64, add
26semihosting calls to the existing one, enabled with CONFIG_SEMIHOSTING
27and CONFIG_BASE_FVP both set. Also reuse the existing board config file
Peter Hoyes32860372021-11-11 09:26:00 +000028vexpress_aemv8.h but differentiate the two models by the presence or
Darwin Rambod32d4112014-06-09 11:12:59 -070029absence of CONFIG_BASE_FVP. This change is tested and works on both the
30Foundation and Base fastmodel simulators.
31
Linus Walleij6cf16712015-03-23 11:06:11 +010032The semihosting code adds a command:
Darwin Rambod32d4112014-06-09 11:12:59 -070033
Linus Walleij6cf16712015-03-23 11:06:11 +010034 smhload <image> <address> [env var]
Darwin Rambod32d4112014-06-09 11:12:59 -070035
Linus Walleij6cf16712015-03-23 11:06:11 +010036That will load an image from the host filesystem into RAM at the specified
37address and optionally store the load end address in the specified
38environment variable.