From: Bin Meng <bin.meng@windriver.com>
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>
---
docs/system/riscv/microchip-icicle-kit.rst | 54 +++++++++++++++++++---
1 file changed, 47 insertions(+), 7 deletions(-)
diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv/microchip-icicle-kit.rst
index 54ced661e3..817d2aec9c 100644
--- a/docs/system/riscv/microchip-icicle-kit.rst
+++ b/docs/system/riscv/microchip-icicle-kit.rst
@@ -47,13 +47,13 @@ The user provided DTB should have the following requirements:
QEMU follows below truth table to select which payload to execute:
-===== ========== =======
--bios -kernel payload
-===== ========== =======
- N N HSS
- Y don't care HSS
- N Y kernel
-===== ========== =======
+===== ========== ========== =======
+-bios -kernel -dtb payload
+===== ========== ========== =======
+ N N don't care HSS
+ Y don't care don't care HSS
+ N Y Y kernel
+===== ========== ========== =======
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
@@ -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
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
--
2.25.1
On Tue, Jul 6, 2021 at 7:50 PM Bin Meng <bmeng.cn@gmail.com> wrote: > > From: Bin Meng <bin.meng@windriver.com> > > 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> Alistair > --- > > docs/system/riscv/microchip-icicle-kit.rst | 54 +++++++++++++++++++--- > 1 file changed, 47 insertions(+), 7 deletions(-) > > diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv/microchip-icicle-kit.rst > index 54ced661e3..817d2aec9c 100644 > --- a/docs/system/riscv/microchip-icicle-kit.rst > +++ b/docs/system/riscv/microchip-icicle-kit.rst > @@ -47,13 +47,13 @@ The user provided DTB should have the following requirements: > > QEMU follows below truth table to select which payload to execute: > > -===== ========== ======= > --bios -kernel payload > -===== ========== ======= > - N N HSS > - Y don't care HSS > - N Y kernel > -===== ========== ======= > +===== ========== ========== ======= > +-bios -kernel -dtb payload > +===== ========== ========== ======= > + N N don't care HSS > + Y don't care don't care HSS > + N Y Y kernel > +===== ========== ========== ======= > > 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 > @@ -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 > 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 > -- > 2.25.1 > >
On Tue, Jul 6, 2021 at 7:50 PM Bin Meng <bmeng.cn@gmail.com> wrote: > > From: Bin Meng <bin.meng@windriver.com> > > 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> Thanks! Applied to riscv-to-apply.next Alistair > --- > > docs/system/riscv/microchip-icicle-kit.rst | 54 +++++++++++++++++++--- > 1 file changed, 47 insertions(+), 7 deletions(-) > > diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv/microchip-icicle-kit.rst > index 54ced661e3..817d2aec9c 100644 > --- a/docs/system/riscv/microchip-icicle-kit.rst > +++ b/docs/system/riscv/microchip-icicle-kit.rst > @@ -47,13 +47,13 @@ The user provided DTB should have the following requirements: > > QEMU follows below truth table to select which payload to execute: > > -===== ========== ======= > --bios -kernel payload > -===== ========== ======= > - N N HSS > - Y don't care HSS > - N Y kernel > -===== ========== ======= > +===== ========== ========== ======= > +-bios -kernel -dtb payload > +===== ========== ========== ======= > + N N don't care HSS > + Y don't care don't care HSS > + N Y Y kernel > +===== ========== ========== ======= > > 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 > @@ -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 > 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 > -- > 2.25.1 > >
© 2016 - 2024 Red Hat, Inc.