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