docs/system: riscv: Update Microchip Icicle Kit for direct kernel boot

This adds a new section in the documentation to demonstrate how to
use the new direct kernel boot feature for Microchip Icicle Kit,
other than the HSS bootflow, using an upstream U-Boot v2021.07 image
as an example.

It also updates the truth table to have a new '-dtb' column which is
required by direct kernel boot.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-id: 20210706095045.1917913-1-bmeng.cn@gmail.com
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
Bin Meng 2021-07-06 17:50:45 +08:00 committed by Alistair Francis
parent bc083a51ca
commit 6165dcb55f

View File

@ -47,13 +47,13 @@ The user provided DTB should have the following requirements:
QEMU follows below truth table to select which payload to execute: QEMU follows below truth table to select which payload to execute:
===== ========== ======= ===== ========== ========== =======
-bios -kernel payload -bios -kernel -dtb payload
===== ========== ======= ===== ========== ========== =======
N N HSS N N don't care HSS
Y don't care HSS Y don't care don't care HSS
N Y kernel N Y Y kernel
===== ========== ======= ===== ========== ========== =======
The memory is set to 1537 MiB by default which is the minimum required high The memory is set to 1537 MiB by default which is the minimum required high
memory size by HSS. A sanity check on ram size is performed in the machine memory size by HSS. A sanity check on ram size is performed in the machine
@ -106,4 +106,44 @@ HSS output is on the first serial port (stdio) and U-Boot outputs on the
second serial port. U-Boot will automatically load the Linux kernel from second serial port. U-Boot will automatically load the Linux kernel from
the SD card image. the SD card image.
Direct Kernel Boot
------------------
Sometimes we just want to test booting a new kernel, and transforming the
kernel image to the format required by the HSS bootflow is tedious. We can
use '-kernel' for direct kernel booting just like other RISC-V machines do.
In this mode, the OpenSBI fw_dynamic BIOS image for 'generic' platform is
used to boot an S-mode payload like U-Boot or OS kernel directly.
For example, the following commands show building a U-Boot image from U-Boot
mainline v2021.07 for the Microchip Icicle Kit board:
.. code-block:: bash
$ export CROSS_COMPILE=riscv64-linux-
$ make microchip_mpfs_icicle_defconfig
Then we can boot the machine by:
.. code-block:: bash
$ qemu-system-riscv64 -M microchip-icicle-kit -smp 5 -m 2G \
-sd path/to/sdcard.img \
-nic user,model=cadence_gem \
-nic tap,ifname=tap,model=cadence_gem,script=no \
-display none -serial stdio \
-kernel path/to/u-boot/build/dir/u-boot.bin \
-dtb path/to/u-boot/build/dir/u-boot.dtb
CAVEATS:
* Check the "stdout-path" property in the /chosen node in the DTB to determine
which serial port is used for the serial console, e.g.: if the console is set
to the second serial port, change to use "-serial null -serial stdio".
* The default U-Boot configuration uses CONFIG_OF_SEPARATE hence the ELF image
``u-boot`` cannot be passed to "-kernel" as it does not contain the DTB hence
``u-boot.bin`` has to be used which does contain one. To use the ELF image,
we need to change to CONFIG_OF_EMBED or CONFIG_OF_PRIOR_STAGE.
.. _HSS: https://github.com/polarfire-soc/hart-software-services .. _HSS: https://github.com/polarfire-soc/hart-software-services