Heinrich Schuchardt <heinrich.schucha...@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 <seashell11234...@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 >