mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 12:56:00 +01:00
doc: smh: Update semihosting documentation
This documents how to use semihosting, the new semihosting features, and how to migrate from smhload. Signed-off-by: Sean Anderson <sean.anderson@seco.com>
This commit is contained in:
parent
74d11d37e2
commit
eeb54e81ca
@ -10,6 +10,12 @@ console I/O, etc. Please see `Arm's semihosting documentation
|
|||||||
<https://developer.arm.com/documentation/100863/latest/>`_ for more
|
<https://developer.arm.com/documentation/100863/latest/>`_ for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
|
Platform Support
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Versatile Express
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
For developing on armv8 virtual fastmodel platforms, semihosting is a
|
For developing on armv8 virtual fastmodel platforms, semihosting is a
|
||||||
valuable tool since it allows access to image/configuration files before
|
valuable tool since it allows access to image/configuration files before
|
||||||
eMMC or other NV media are available.
|
eMMC or other NV media are available.
|
||||||
@ -31,13 +37,70 @@ vexpress_aemv8.h but differentiate the two models by the presence or
|
|||||||
absence of ``CONFIG_BASE_FVP``. This change is tested and works on both the
|
absence of ``CONFIG_BASE_FVP``. This change is tested and works on both the
|
||||||
Foundation and Base fastmodel simulators.
|
Foundation and Base fastmodel simulators.
|
||||||
|
|
||||||
|
QEMU
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
Another ARM emulator which supports semihosting is `QEMU
|
||||||
|
<https://www.qemu.org/>`_. To enable semihosting, enable
|
||||||
|
``CONFIG_SERIAL_PROBE_ALL`` when configuring U-Boot, and use
|
||||||
|
``-semihosting`` when invoking QEMU. Adding ``-nographic`` can also be
|
||||||
|
helpful. When using a semihosted serial console, QEMU will block waiting
|
||||||
|
for input. This will cause the GUI to become unresponsive. To mitigate
|
||||||
|
this, try adding ``-nographic``. For more information about building and
|
||||||
|
running QEMU, refer to the :doc:`board documentation
|
||||||
|
<../board/emulation/qemu-arm>`.
|
||||||
|
|
||||||
|
OpenOCD
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
|
Any ARM platform can use semihosting with an attached debugger. One such
|
||||||
|
debugger with good support for a variety of boards and JTAG adapters is
|
||||||
|
`OpenOCD <https://openocd.org/>`_. Semihosting is not enabled by default,
|
||||||
|
so you will need to enable it::
|
||||||
|
|
||||||
|
$ openocd -f <your board config> -c init -c halt -c \
|
||||||
|
'arm semihosting enable' -c resume
|
||||||
|
|
||||||
|
Note that enabling semihosting can only be done after attaching to the
|
||||||
|
board with ``init``, and must be done while the CPU is halted.
|
||||||
|
|
||||||
Loading files
|
Loading files
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The semihosting code adds a "hostfs"::
|
The semihosting code adds a "semihosting filesystem"::
|
||||||
|
|
||||||
smhload <image> <address> [env var]
|
load hostfs - <address> <image>
|
||||||
|
|
||||||
That will load an image from the host filesystem into RAM at the specified
|
That will load an image from the host filesystem into RAM at the specified
|
||||||
address and optionally store the load end address in the specified
|
address. If you are using U-Boot SPL, you can also use ``BOOT_DEVICE_SMH``
|
||||||
environment variable.
|
which will load ``CONFIG_SPL_FS_LOAD_PAYLOAD_NAME``.
|
||||||
|
|
||||||
|
Host console
|
||||||
|
------------
|
||||||
|
|
||||||
|
U-Boot can use the host's console instead of a physical serial device by
|
||||||
|
enabling ``CONFIG_SERIAL_SEMIHOSTING``. If you don't have
|
||||||
|
``CONFIG_DM_SERIAL`` enabled, make sure you disable any other serial
|
||||||
|
drivers.
|
||||||
|
|
||||||
|
Migrating from ``smhload``
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
If you were using the ``smhload`` command, you can migrate commands like::
|
||||||
|
|
||||||
|
smhload <file> <address> [<end var>]
|
||||||
|
|
||||||
|
to a generic load command like::
|
||||||
|
|
||||||
|
load hostfs - <address> <file>
|
||||||
|
|
||||||
|
The ``load`` command will set the ``filesize`` variable with the size of
|
||||||
|
the file. The ``fdt chosen`` command has been updated to take a size
|
||||||
|
instead of an end address. If you were adding the initramfs to your device
|
||||||
|
tree like::
|
||||||
|
|
||||||
|
fdt chosen <address> <end var>
|
||||||
|
|
||||||
|
you can now run::
|
||||||
|
|
||||||
|
fdt chosen <address> $filesize
|
||||||
|
Loading…
x
Reference in New Issue
Block a user