diff mbox series

doc: board: sophgo: milkv_duo: Update Milk-V Duo documentation

Message ID 20240523064025.17602-1-seashell11234455@gmail.com
State Changes Requested, archived
Delegated to: Heinrich Schuchardt
Headers show
Series doc: board: sophgo: milkv_duo: Update Milk-V Duo documentation | expand

Commit Message

Kongyang Liu May 23, 2024, 6:40 a.m. UTC
Add detailed steps for compiling U-Boot and OpenSBI, generating the
firmware package with fiptool, and booting the board.

Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>
---

 doc/board/sophgo/milkv_duo.rst | 41 +++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 11 deletions(-)

Comments

Heinrich Schuchardt June 7, 2024, 4:31 p.m. UTC | #1
On 23.05.24 08:40, Kongyang Liu wrote:
> Add detailed steps for compiling U-Boot and OpenSBI, generating the
> firmware package with fiptool, and booting the board.
> 
> Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>
> ---
> 
>   doc/board/sophgo/milkv_duo.rst | 41 +++++++++++++++++++++++++---------
>   1 file changed, 30 insertions(+), 11 deletions(-)
> 
> diff --git a/doc/board/sophgo/milkv_duo.rst b/doc/board/sophgo/milkv_duo.rst
> index cb2ed1ad98..a88db5b903 100644
> --- a/doc/board/sophgo/milkv_duo.rst
> +++ b/doc/board/sophgo/milkv_duo.rst
> @@ -20,31 +20,50 @@ Building
>   .. code-block:: console

There are is a 64 MiB version of the Milk-V Duo with the CF1800B, a 256 
MiB version with the SG2002 and a Milk-V Duo S with the SG2000.

This may confuse U-Boot users. Should we mention explicitly that only 
the CF1800B based board is supported?

>   
>      export CROSS_COMPILE=<riscv64 toolchain prefix>
> +
> +3. Compile U-Boot
> +
> +.. code-block:: console
> +
>      cd <U-Boot-dir>
>      make milkv_duo_defconfig
>      make
>   
> -This will generate u-boot-dtb.bin
> +This will generate u-boot.bin and u-boot.dtb
>   
> -Booting
> -~~~~~~~
> -Currently, we rely on vendor FSBL(First Stage Boot Loader) to initialize the
> -clock and load the u-boot image, then bootup from it.
> +4. Compile OpenSBI
> +
> +.. code-block:: console
>   
> -Alternatively, to run u-boot-dtb.bin on top of FSBL, follow these steps:
> +   cd <OpenSBI-dir>
> +   make PLATFORM=generic FW_FDT_PATH=<Your U-Boot Path>/u-boot.dtb
>   
> -1. Use the vendor-provided tool to create a unified fip.bin file containing
> -   FSBL, OpenSBI, and U-Boot.
> +This will generate fw_dynamic.bin
>   
> -2. Place the generated fip.bin file into the FAT partition of the SD card.
> +4. Generate firmware image package
>   
> -3. Insert the SD card into the board and power it on.
> +Fiptool(https://github.com/sophgo/fiptool) is used to generate fip file.
> +
> +.. code-block:: console
> +
> +   git clone https://github.com/sophgo/fiptool
> +   cd fiptool
> +   ./fiptool \
> +      --fsbl data/fsbl/cv180x.bin \

Where do we get this file from?

> +      --opensbi <OpenSBI-dir>/fw_dynamic.bin \
> +      --uboot <U-Boot-dir>/u-boot.bin \
> +
> +This will generate fip.bin

Should we let binman do this in future?

> +
> +Booting
> +~~~~~~~
> +1. Place the generated fip.bin file into the FAT partition of the SD card.

This information is insufficient to set up a new SD-card.

Should the SD card be MBR or GPT partitioned?

On an SD card there are typically are multiple partitions. All of these 
may be FAT partioned. Does the boot ROM use a fixed partition number, a 
partition type, or a start sector to identify the relevant partition?

It is left unclear if fip.bin is to be copied by dd to the partition or 
into a FAT file system on the partition.



I just downloaded the vendor milkv-duo-v1.1.1-2024-0528.img.zip file.

Here I found an MBR partition table with the following partitions:

Device                          Boot   Start     End Sectors  Size Id Type
milkv-duo-v1.1.1-2024-0528.img1 *          1  262144  262144  128M  c 
W95 FAT32 (LBA)
milkv-duo-v1.1.1-2024-0528.img2       262145 1835008 1572864  768M 83 Linux
milkv-duo-v1.1.1-2024-0528.img3      1835009 2359296  524288  256M  0 Empty

Partition 1 was FAT16 partitioned and contained file fip.bin in the root 
directory. But I still don't know how the relevant partition is identified.

Best regards

Heinrich

> +2. Insert the SD card into the board and power it on.
>   
>   The board will automatically execute the FSBL from the fip.bin file.
>   Subsequently, it will transition to OpenSBI, and finally, OpenSBI will invoke
>   U-Boot.
>   
> -
>   Sample boot log from Milk-V Duo board
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   .. code-block:: none
Kongyang Liu June 11, 2024, 7:12 a.m. UTC | #2
Heinrich Schuchardt <heinrich.schuchardt@canonical.com> 于2024年6月8日周六 00:31写道:
>
> On 23.05.24 08:40, Kongyang Liu wrote:
> > Add detailed steps for compiling U-Boot and OpenSBI, generating the
> > firmware package with fiptool, and booting the board.
> >
> > Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>
> > ---
> >
> >   doc/board/sophgo/milkv_duo.rst | 41 +++++++++++++++++++++++++---------
> >   1 file changed, 30 insertions(+), 11 deletions(-)
> >
> > diff --git a/doc/board/sophgo/milkv_duo.rst b/doc/board/sophgo/milkv_duo.rst
> > index cb2ed1ad98..a88db5b903 100644
> > --- a/doc/board/sophgo/milkv_duo.rst
> > +++ b/doc/board/sophgo/milkv_duo.rst
> > @@ -20,31 +20,50 @@ Building
> >   .. code-block:: console
>
> There are is a 64 MiB version of the Milk-V Duo with the CF1800B, a 256
> MiB version with the SG2002 and a Milk-V Duo S with the SG2000.
>
> This may confuse U-Boot users. Should we mention explicitly that only
> the CF1800B based board is supported?
>

I have tested the Milk-V Duo based on CV1800B and the Milk-V Duo256M based
on SG2002. The tool works properly on both of these boards. However, I have
not tested the Duo S because I currently don't have the board.

At present, U-Boot mainly supports the Milk-V Duo with 64M memory. For
users with 256M, we have provided a README in the GitHub repository for
building fip.bin.

> >
> >      export CROSS_COMPILE=<riscv64 toolchain prefix>
> > +
> > +3. Compile U-Boot
> > +
> > +.. code-block:: console
> > +
> >      cd <U-Boot-dir>
> >      make milkv_duo_defconfig
> >      make
> >
> > -This will generate u-boot-dtb.bin
> > +This will generate u-boot.bin and u-boot.dtb
> >
> > -Booting
> > -~~~~~~~
> > -Currently, we rely on vendor FSBL(First Stage Boot Loader) to initialize the
> > -clock and load the u-boot image, then bootup from it.
> > +4. Compile OpenSBI
> > +
> > +.. code-block:: console
> >
> > -Alternatively, to run u-boot-dtb.bin on top of FSBL, follow these steps:
> > +   cd <OpenSBI-dir>
> > +   make PLATFORM=generic FW_FDT_PATH=<Your U-Boot Path>/u-boot.dtb
> >
> > -1. Use the vendor-provided tool to create a unified fip.bin file containing
> > -   FSBL, OpenSBI, and U-Boot.
> > +This will generate fw_dynamic.bin
> >
> > -2. Place the generated fip.bin file into the FAT partition of the SD card.
> > +4. Generate firmware image package
> >
> > -3. Insert the SD card into the board and power it on.
> > +Fiptool(https://github.com/sophgo/fiptool) is used to generate fip file.
> > +
> > +.. code-block:: console
> > +
> > +   git clone https://github.com/sophgo/fiptool
> > +   cd fiptool
> > +   ./fiptool \
> > +      --fsbl data/fsbl/cv180x.bin \
>
> Where do we get this file from?
>

This is the precompiled FSBL provided by the vendor. Currently, the FSBL
needs to be placed into the vendor-provided SDK to be compiled. For
convenience, we provide the FSBL for different SoCs and uploaded them to
the GitHub repository.

> > +      --opensbi <OpenSBI-dir>/fw_dynamic.bin \
> > +      --uboot <U-Boot-dir>/u-boot.bin \
> > +
> > +This will generate fip.bin
>
> Should we let binman do this in future?
>

The format of the FIP file is defined by the FSBL. This format may change
as the vendor updates the FSBL. At present, I don't think it's necessary
to adapt binman to this format. If there is a need in the future, we will
address this task.

> > +
> > +Booting
> > +~~~~~~~
> > +1. Place the generated fip.bin file into the FAT partition of the SD card.
>
> This information is insufficient to set up a new SD-card.
>
> Should the SD card be MBR or GPT partitioned?
>
> On an SD card there are typically are multiple partitions. All of these
> may be FAT partioned. Does the boot ROM use a fixed partition number, a
> partition type, or a start sector to identify the relevant partition?
>
> It is left unclear if fip.bin is to be copied by dd to the partition or
> into a FAT file system on the partition.
>
>
>
> I just downloaded the vendor milkv-duo-v1.1.1-2024-0528.img.zip file.
>
> Here I found an MBR partition table with the following partitions:
>
> Device                          Boot   Start     End Sectors  Size Id Type
> milkv-duo-v1.1.1-2024-0528.img1 *          1  262144  262144  128M  c
> W95 FAT32 (LBA)
> milkv-duo-v1.1.1-2024-0528.img2       262145 1835008 1572864  768M 83 Linux
> milkv-duo-v1.1.1-2024-0528.img3      1835009 2359296  524288  256M  0 Empty
>
> Partition 1 was FAT16 partitioned and contained file fip.bin in the root
> directory. But I still don't know how the relevant partition is identified.
>

Since I used a SD card that has been already formatted during my testing,
I forgot to mention this step in the documentation. I will add instructions
for this step in the next patch.

Best regards
Kongyang Liu

> Best regards
>
> Heinrich
>
> > +2. Insert the SD card into the board and power it on.
> >
> >   The board will automatically execute the FSBL from the fip.bin file.
> >   Subsequently, it will transition to OpenSBI, and finally, OpenSBI will invoke
> >   U-Boot.
> >
> > -
> >   Sample boot log from Milk-V Duo board
> >   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >   .. code-block:: none
>
diff mbox series

Patch

diff --git a/doc/board/sophgo/milkv_duo.rst b/doc/board/sophgo/milkv_duo.rst
index cb2ed1ad98..a88db5b903 100644
--- a/doc/board/sophgo/milkv_duo.rst
+++ b/doc/board/sophgo/milkv_duo.rst
@@ -20,31 +20,50 @@  Building
 .. code-block:: console
 
    export CROSS_COMPILE=<riscv64 toolchain prefix>
+
+3. Compile U-Boot
+
+.. code-block:: console
+
    cd <U-Boot-dir>
    make milkv_duo_defconfig
    make
 
-This will generate u-boot-dtb.bin
+This will generate u-boot.bin and u-boot.dtb
 
-Booting
-~~~~~~~
-Currently, we rely on vendor FSBL(First Stage Boot Loader) to initialize the
-clock and load the u-boot image, then bootup from it.
+4. Compile OpenSBI
+
+.. code-block:: console
 
-Alternatively, to run u-boot-dtb.bin on top of FSBL, follow these steps:
+   cd <OpenSBI-dir>
+   make PLATFORM=generic FW_FDT_PATH=<Your U-Boot Path>/u-boot.dtb
 
-1. Use the vendor-provided tool to create a unified fip.bin file containing
-   FSBL, OpenSBI, and U-Boot.
+This will generate fw_dynamic.bin
 
-2. Place the generated fip.bin file into the FAT partition of the SD card.
+4. Generate firmware image package
 
-3. Insert the SD card into the board and power it on.
+Fiptool(https://github.com/sophgo/fiptool) is used to generate fip file.
+
+.. code-block:: console
+
+   git clone https://github.com/sophgo/fiptool
+   cd fiptool
+   ./fiptool \
+      --fsbl data/fsbl/cv180x.bin \
+      --opensbi <OpenSBI-dir>/fw_dynamic.bin \
+      --uboot <U-Boot-dir>/u-boot.bin \
+
+This will generate fip.bin
+
+Booting
+~~~~~~~
+1. Place the generated fip.bin file into the FAT partition of the SD card.
+2. Insert the SD card into the board and power it on.
 
 The board will automatically execute the FSBL from the fip.bin file.
 Subsequently, it will transition to OpenSBI, and finally, OpenSBI will invoke
 U-Boot.
 
-
 Sample boot log from Milk-V Duo board
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 .. code-block:: none