diff options
Diffstat (limited to 'doc/board')
52 files changed, 1040 insertions, 87 deletions
diff --git a/doc/board/alliedtelesis/x220.rst b/doc/board/alliedtelesis/x220.rst index 6ca5f61ec4e..18bcac7f206 100644 --- a/doc/board/alliedtelesis/x220.rst +++ b/doc/board/alliedtelesis/x220.rst @@ -18,8 +18,8 @@ markets. - GS980M/52 - x230-52 -DDR Traning (binhdr) --------------------- +DDR Training (binhdr) +--------------------- The AlleyCat3 uses a binary blob for it's DDR training. This is launched by the built-in bootloader prior to U-Boot starting. @@ -37,3 +37,5 @@ image .. prompt:: bash $ ./tools/dumpimage -T kwbimage -p 1 -o board/alliedtelesis/x220/binary.0 u-boot.kwb + arm-softfloat-linux-gnueabi-objcopy -I binary -O binary --pad-to=0x12fcc \ + board/alliedtelesis/x220/binary.0 board/alliedtelesis/x220/binary.0 diff --git a/doc/board/allwinner/sunxi.rst b/doc/board/allwinner/sunxi.rst index d0c89b956b1..5c2406d3959 100644 --- a/doc/board/allwinner/sunxi.rst +++ b/doc/board/allwinner/sunxi.rst @@ -312,7 +312,7 @@ also be uploaded via FEL, check the Wiki's `FEL page`_ for more details. .. _`configs/`: https://github.com/crust-firmware/crust/tree/master/configs .. _`crust README`: https://github.com/crust-firmware/crust/blob/master/README.md#building-the-firmware .. _`linux-sunxi`: https://linux-sunxi.org -.. _`MTD utils`: http://www.linux-mtd.infradead.org/ +.. _`MTD utils`: http://linux-mtd.infradead.org/ .. _`magic binary`: https://github.com/linux-sunxi/sunxi-tools/raw/master/bin/fel-sdboot.sunxi .. _`sunxi_fel`: https://github.com/linux-sunxi/sunxi-tools .. _`FEL page`: https://linux-sunxi.org/FEL/USBBoot diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst index 23380ac33f2..e8bb421ed8c 100644 --- a/doc/board/amlogic/index.rst +++ b/doc/board/amlogic/index.rst @@ -6,7 +6,7 @@ Amlogic Hardware Support Matrix ----------------------- -An up-do-date matrix is also available on: http://linux-meson.com +An up-do-date matrix is also available on: https://linux-meson.com This matrix concerns the actual source code version. diff --git a/doc/board/amlogic/jethub-j100.rst b/doc/board/amlogic/jethub-j100.rst index cbf1ea76107..053d5aa57ec 100644 --- a/doc/board/amlogic/jethub-j100.rst +++ b/doc/board/amlogic/jethub-j100.rst @@ -3,7 +3,7 @@ U-Boot for JetHub J100/J110 (A113X) =================================== -JetHome Jethub D1/D1+ (http://jethome.ru/jethub-d1p) is a home automation controller device +JetHome Jethub D1/D1+ (https://jethome.com/d1p/) is a home automation controller device manufactured by JetHome with the following specifications: - Amlogic A113X (ARM Cortex-A53) quad-core up to 1.5GHz diff --git a/doc/board/amlogic/jethub-j80.rst b/doc/board/amlogic/jethub-j80.rst index 9195df69050..c3800f9588a 100644 --- a/doc/board/amlogic/jethub-j80.rst +++ b/doc/board/amlogic/jethub-j80.rst @@ -3,7 +3,7 @@ U-Boot for JetHub J80 (S905W) ============================= -JetHome Jethub H1 (http://jethome.ru/jethub-h1) is a home automation controller device +JetHome Jethub H1 (https://jethome.ru/h1/?variation_id=56) is a home automation controller device manufactured by JetHome with the following specifications: - Amlogic S905W (ARM Cortex-A53) quad-core up to 1.5GHz diff --git a/doc/board/andestech/ae350.rst b/doc/board/andestech/ae350.rst index 99622fd3258..28f05c9d9cd 100644 --- a/doc/board/andestech/ae350.rst +++ b/doc/board/andestech/ae350.rst @@ -108,8 +108,8 @@ Messages of U-Boot boot on AE350 board riscv32-unknown-linux-gnu-gcc (GCC) 7.2.0 GNU ld (GNU Binutils) 2.29 - RISC-V # setenv ipaddr 10.0.4.200 ; - RISC-V # setenv serverip 10.0.4.97 ; + RISC-V # env set ipaddr 10.0.4.200 ; + RISC-V # env set serverip 10.0.4.97 ; RISC-V # ping 10.0.4.97 ; Using mac@e0100000 device host 10.0.4.97 is alive @@ -224,8 +224,8 @@ Boot bbl and riscv-linux via U-Boot on QEMU 17901268 bytes read in 4642 ms (3.7 MiB/s) RISC-V # fatload mmc 0:0 0x2000000 ae350.dtb 1954 bytes read in 1 ms (1.9 MiB/s) - RISC-V # setenv bootm_size 0x2000000 - RISC-V # setenv fdt_high 0x1f00000 + RISC-V # env set bootm_size 0x2000000 + RISC-V # env set fdt_high 0x1f00000 RISC-V # bootm 0x00600000 - 0x2000000 ## Booting kernel from Legacy Image at 00600000 ... Image Name: diff --git a/doc/board/bsh/imx6ulz_bsh_smm_m2.rst b/doc/board/bsh/imx6ulz_bsh_smm_m2.rst index 0af41c09d20..6210d6144a2 100644 --- a/doc/board/bsh/imx6ulz_bsh_smm_m2.rst +++ b/doc/board/bsh/imx6ulz_bsh_smm_m2.rst @@ -76,9 +76,9 @@ where nand_script.lst contains the following: SDPV: jump # } - FB: ucmd setenv fastboot_buffer ${loadaddr} + FB: ucmd env set fastboot_buffer ${loadaddr} FB: download -f _image - FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi + FB: ucmd if test ! -n "$fastboot_bytes"; then env set fastboot_bytes $filesize; else true; fi # Burn image to nandfit partition if needed FB: ucmd if env exists nandfit_part; then nand erase.part nandfit; nand write ${fastboot_buffer} nandfit ${fastboot_bytes}; else true; fi; FB: ucmd nandbcb init ${fastboot_buffer} nandboot ${fastboot_bytes} diff --git a/doc/board/emulation/qemu-x86.rst b/doc/board/emulation/qemu-x86.rst index c604e42990e..cca6a239807 100644 --- a/doc/board/emulation/qemu-x86.rst +++ b/doc/board/emulation/qemu-x86.rst @@ -62,7 +62,7 @@ script. For example, Debian (stretch) can be booted by creating a script file named 'boot.txt' with the contents:: - setenv bootargs root=/dev/sda1 ro + env set bootargs root=/dev/sda1 ro load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /vmlinuz load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /initrd.img zboot ${kernel_addr_r} - ${ramdisk_addr_r} ${filesize} diff --git a/doc/board/google/chromebook_link.rst b/doc/board/google/chromebook_link.rst index 16080304d6e..f59fc467332 100644 --- a/doc/board/google/chromebook_link.rst +++ b/doc/board/google/chromebook_link.rst @@ -13,7 +13,7 @@ First, you need the following binary blobs: You can get these binary blobs by:: - $ git clone http://review.coreboot.org/p/blobs.git + $ git clone https://review.coreboot.org/blobs $ cd blobs Find the following files: diff --git a/doc/board/highbank/highbank.rst b/doc/board/highbank/highbank.rst index 654ef8a0269..21d76436b36 100644 --- a/doc/board/highbank/highbank.rst +++ b/doc/board/highbank/highbank.rst @@ -73,6 +73,6 @@ existing U-Boot, and execute it with bootm:: => tftpboot 0x8000 u-boot-highbank.img => bootm -.. _`ipmitool`: https://github.com/Cynerva/ipmitool +.. _`ipmitool`: https://codeberg.org/IPMITool/ipmitool .. _`pyipmi`: https://pypi.org/project/pyipmi/ -.. _`management script`: https://github.com/Cynerva/cxmanage +.. _`management script`: https://pypi.org/project/cxmanage/ diff --git a/doc/board/intel/slimbootloader.rst b/doc/board/intel/slimbootloader.rst index 87d71a55bdc..5fea134b5f2 100644 --- a/doc/board/intel/slimbootloader.rst +++ b/doc/board/intel/slimbootloader.rst @@ -104,8 +104,8 @@ Download it from http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/mach 3. Update boot environment values on shell:: - => setenv bootfile vmlinuz - => setenv bootdev scsi + => env set bootfile vmlinuz + => env set bootdev scsi => boot Build Instruction for Slim Bootloader for LeafHill (APL) target @@ -170,7 +170,7 @@ Build Instruction to use ELF U-Boot $ python BuildLoader.py build <qemu or apl> -p "OsLoader.efi:LLDR:Lz4;u-boot:U-BT:Lzma" -.. _U-Boot: https://source.denx.de/ +.. _U-Boot: https://git.u-boot-project.org/ .. _`Slim Bootloader`: https://github.com/slimbootloader/ .. _`Intel FSP`: https://github.com/IntelFsp/ .. _`Getting Started`: https://slimbootloader.github.io/getting-started/ diff --git a/doc/board/microchip/mpfs_common.rst b/doc/board/microchip/mpfs_common.rst index edbaf043966..5d7263d4b8d 100644 --- a/doc/board/microchip/mpfs_common.rst +++ b/doc/board/microchip/mpfs_common.rst @@ -78,13 +78,13 @@ load uImage (with initramfs). .. code-block:: none - RISC-V # setenv kernel_addr_r 0x80200000 - RISC-V # setenv fdt_addr_r 0x82200000 + RISC-V # env set kernel_addr_r 0x80200000 + RISC-V # env set fdt_addr_r 0x82200000 - RISC-V # setenv ipaddr 192.168.1.5 - RISC-V # setenv netmask 255.255.255.0 - RISC-V # setenv serverip 192.168.1.3 - RISC-V # setenv gateway 192.168.1.1 + RISC-V # env set ipaddr 192.168.1.5 + RISC-V # env set netmask 255.255.255.0 + RISC-V # env set serverip 192.168.1.3 + RISC-V # env set gateway 192.168.1.1 RISC-V # tftpboot ${kernel_addr_r} uImage ethernet@20112000: PHY present at 9 diff --git a/doc/board/nxp/imx95_frdm.rst b/doc/board/nxp/imx95_frdm.rst new file mode 100644 index 00000000000..85ef9022e76 --- /dev/null +++ b/doc/board/nxp/imx95_frdm.rst @@ -0,0 +1,131 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +imx95_frdm +======================= + +U-Boot for the NXP i.MX95 15x15 FRDM board + +Quick Start +----------- + +- Get ahab-container.img +- Get DDR PHY Firmware Images +- Get and Build OEI Images +- Get and Build System Manager Image +- Get and Build the ARM Trusted Firmware +- Build the Bootloader Image +- Boot + +Get ahab-container.img +-------------------------------------- + +Note: srctree is U-Boot source directory + +.. code-block:: bash + + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-ele-imx-2.0.2-89161a8.bin + $ sh firmware-ele-imx-2.0.2-89161a8.bin --auto-accept + +i.MX95 A0 silicon version + +.. code-block:: bash + + $ cp firmware-ele-imx-2.0.2-89161a8/mx95a0-ahab-container.img $(srctree) + +i.MX95 B0 silicon version + +.. code-block:: bash + + $ cp firmware-ele-imx-2.0.2-89161a8/mx95b0-ahab-container.img $(srctree) + +Get DDR PHY Firmware Images +-------------------------------------- + +Note: srctree is U-Boot source directory + +.. code-block:: bash + + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.28-994fa14.bin + $ sh firmware-imx-8.28-994fa14.bin --auto-accept + $ cp firmware-imx-8.28-994fa14/firmware/ddr/synopsys/lpddr5*v202409.bin $(srctree) + $ cp firmware-imx-8.28-994fa14/firmware/ddr/synopsys/lpddr4x*v202409.bin $(srctree) + +Get and Build OEI Images +-------------------------------------- + +Note: srctree is U-Boot source directory +Get OEI from: https://github.com/nxp-imx/imx-oei +branch: master + +.. code-block:: bash + + $ sudo apt -y install make gcc g++-multilib srecord + $ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz + $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz + $ export TOOLS=$PWD + $ git clone -b master https://github.com/nxp-imx/imx-oei.git + $ cd imx-oei + +i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board + +.. code-block:: bash + + $ make board=mx95lp4x-15 oei=ddr DEBUG=1 r=B0 all + $ cp build/mx95lp4x-15/ddr/oei-m33-ddr.bin $(srctree) + +Get and Build System Manager Image +-------------------------------------- + +Note: srctree is U-Boot source directory +Get System Manager from: https://github.com/nxp-imx/imx-sm +branch: master + +.. code-block:: bash + + $ sudo apt -y install make gcc g++-multilib srecord + $ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz + $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz + $ export TOOLS=$PWD + $ git clone -b master https://github.com/nxp-imx/imx-sm.git + $ cd imx-sm + $ make config=mx95evk all + $ cp build/mx95evk/m33_image.bin $(srctree) + +Get and Build the ARM Trusted Firmware +-------------------------------------- + +Note: srctree is U-Boot source directory +Get ATF from: https://github.com/nxp-imx/imx-atf/ +branch: lf_v2.12 + +.. code-block:: bash + + $ export CROSS_COMPILE=aarch64-poky-linux- + $ unset LDFLAGS + $ unset AS + $ git clone -b lf_v2.12 https://github.com/nxp-imx/imx-atf.git + $ cd imx-atf + $ make PLAT=imx95 bl31 + $ cp build/imx95/release/bl31.bin $(srctree) + +Build the Bootloader Image +-------------------------- + +i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board + +.. code-block:: bash + + $ export CROSS_COMPILE=aarch64-poky-linux- + $ make imx95_15x15_frdm_defconfig + $ make + +Copy imx-boot-imx95.bin to the MicroSD card: + +.. code-block:: bash + + $ sudo dd if=flash.bin of=/dev/sd[x] bs=1k seek=32 conv=fsync + +Boot +---- + +Set i.MX95 boot device to MicroSD card diff --git a/doc/board/nxp/index.rst b/doc/board/nxp/index.rst index 52c8e85fa5b..b28e5b6ceb9 100644 --- a/doc/board/nxp/index.rst +++ b/doc/board/nxp/index.rst @@ -17,6 +17,7 @@ NXP Semiconductors imx93_9x9_qsb imx93_11x11_evk imx93_frdm + imx95_frdm imx943_evk imx95_evk imx952_evk diff --git a/doc/board/nxp/mx6sabreauto.rst b/doc/board/nxp/mx6sabreauto.rst index fe4cd9d2141..f7477b4040e 100644 --- a/doc/board/nxp/mx6sabreauto.rst +++ b/doc/board/nxp/mx6sabreauto.rst @@ -87,7 +87,7 @@ To configure Falcon mode for the first time, on U-Boot do the following commands - Setup kernel bootargs:: - # setenv bootargs "console=ttymxc3,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait quiet rw" + # env set bootargs "console=ttymxc3,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait quiet rw" - Prepare args:: diff --git a/doc/board/nxp/mx6sabresd.rst b/doc/board/nxp/mx6sabresd.rst index c9869f4a73a..27ddf9073e5 100644 --- a/doc/board/nxp/mx6sabresd.rst +++ b/doc/board/nxp/mx6sabresd.rst @@ -103,7 +103,7 @@ To configure Falcon mode for the first time, on U-Boot do the following commands - Setup the IP server:: - # setenv serverip <server_ip_address> + # env set serverip <server_ip_address> - Download dtb file:: @@ -119,7 +119,7 @@ To configure Falcon mode for the first time, on U-Boot do the following commands - Setup kernel bootargs:: - # setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p1 rootfstype=ext4 rootwait quiet rw" + # env set bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p1 rootfstype=ext4 rootwait quiet rw" - Prepare args:: diff --git a/doc/board/nxp/mx6ullevk.rst b/doc/board/nxp/mx6ullevk.rst index a26248a1e3b..0a7d2616f58 100644 --- a/doc/board/nxp/mx6ullevk.rst +++ b/doc/board/nxp/mx6ullevk.rst @@ -42,6 +42,4 @@ Connect the USB cable between the EVK and the PC for the console. Insert the micro SD card in the board, power it up and U-Boot messages should come up. -The link for the board: http://www.nxp.com/products/microcontrollers-and- \ -processors/arm-processors/i.mx-applications-processors/i.mx-6-processors/ \ -i.mx6qp/evaluation-kit-for-the-i.mx-6ull-applications-processor:MCIMX6ULL-EVK +The link for the board: https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-6ull-and-6ulz-applications-processor:MCIMX6ULL-EVK diff --git a/doc/board/purism/index.rst b/doc/board/purism/index.rst index a9cdc312d46..0225aa7f3aa 100644 --- a/doc/board/purism/index.rst +++ b/doc/board/purism/index.rst @@ -7,3 +7,4 @@ Purism SPC :maxdepth: 2 librem5 + librem5-devkit diff --git a/doc/board/purism/librem5-devkit.rst b/doc/board/purism/librem5-devkit.rst new file mode 100644 index 00000000000..4a6dba45a9c --- /dev/null +++ b/doc/board/purism/librem5-devkit.rst @@ -0,0 +1,56 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Librem5 +======= + +U-Boot for the Purism Librem 5 development kit + +Quick Start +----------- + +- Build the ARM Trusted firmware binary +- Get DDR and HDMI firmware +- Build U-Boot + +Get and Build the ARM Trusted firmware +-------------------------------------- + +Note: srctree is U-Boot source directory +Get ATF from: https://source.puri.sm/Librem5/arm-trusted-firmware +branch: librem5 + +.. code-block:: bash + + $ make PLAT=imx8mq CROSS_COMPILE=aarch64-linux-gnu- bl31 + $ cp build/imx8mq/release/bl31.bin $(builddir) + +Get the ddr and display port firmware +------------------------------------- + +.. code-block:: bash + + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.15.bin + $ chmod +x firmware-imx-8.15.bin + $ ./firmware-imx-8.15.bin + $ cp firmware-imx-8.15/firmware/hdmi/cadence/signed_hdmi_imx8m.bin $(builddir) + $ cp firmware-imx-8.15/firmware/ddr/synopsys/lpddr4*.bin $(builddir) + +Build U-Boot +------------ + +.. code-block:: bash + + $ export CROSS_COMPILE=aarch64-linux-gnu- + $ make librem5_devkit_defconfig + $ make ARCH=arm + +Burn the flash.bin +------------------ + +Write the flash.bin to the eMMC at offset 32KB: + +.. code-block:: bash + + $ sudo dd if=flash.bin of=/dev/mmc0 bs=1024 seek=32 conv=notrunc + +Reboot the devkit. diff --git a/doc/board/renesas/rcar-gen3-draak.rst b/doc/board/renesas/rcar-gen3-draak.rst index 7b94eaa4b23..061ecd05291 100644 --- a/doc/board/renesas/rcar-gen3-draak.rst +++ b/doc/board/renesas/rcar-gen3-draak.rst @@ -16,7 +16,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: diff --git a/doc/board/renesas/rcar-gen3-ebisu.rst b/doc/board/renesas/rcar-gen3-ebisu.rst index f9632705abc..a41f736a767 100644 --- a/doc/board/renesas/rcar-gen3-ebisu.rst +++ b/doc/board/renesas/rcar-gen3-ebisu.rst @@ -16,7 +16,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: diff --git a/doc/board/renesas/rcar-gen3-geist.rst b/doc/board/renesas/rcar-gen3-geist.rst index 7bedb3a79cb..63abb3e22b4 100644 --- a/doc/board/renesas/rcar-gen3-geist.rst +++ b/doc/board/renesas/rcar-gen3-geist.rst @@ -14,7 +14,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: diff --git a/doc/board/renesas/rcar-gen3-salvator-x.rst b/doc/board/renesas/rcar-gen3-salvator-x.rst index 37f009452e5..a6ef15a6da4 100644 --- a/doc/board/renesas/rcar-gen3-salvator-x.rst +++ b/doc/board/renesas/rcar-gen3-salvator-x.rst @@ -17,7 +17,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: diff --git a/doc/board/renesas/rcar-gen3-ulcb.rst b/doc/board/renesas/rcar-gen3-ulcb.rst index 88ec2276a36..01e15fa29b6 100644 --- a/doc/board/renesas/rcar-gen3-ulcb.rst +++ b/doc/board/renesas/rcar-gen3-ulcb.rst @@ -18,7 +18,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: diff --git a/doc/board/renesas/rcar-gen4-sparrow-hawk.rst b/doc/board/renesas/rcar-gen4-sparrow-hawk.rst index a1b92ecab57..6b9e21bdf1b 100644 --- a/doc/board/renesas/rcar-gen4-sparrow-hawk.rst +++ b/doc/board/renesas/rcar-gen4-sparrow-hawk.rst @@ -17,7 +17,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: @@ -59,6 +59,27 @@ Finally, write U-Boot into SPI NOR: => sf probe && sf update 0x50000000 0 ${filesize} +SPI NOR layout +-------------- + +The Retronix R-Car V4H Sparrow Hawk board 64 MiB SPI NOR layout is listed below. + +.. table:: Retronix R-Car Gen4 V4H Sparrow Hawk SPI NOR layout + + +----------------+----------------+-----------+---------------------------------------------------------------+ + | Start | End | Size | Content | + +================+================+===========+===============================================================+ + | ``0x000_0000`` | ``0x02f_ffff`` | 3072 kiB | U-Boot bootloader ``flash.bin`` | + +----------------+----------------+-----------+---------------------------------------------------------------+ + | ``0x030_0000`` | ``0x033_ffff`` | 256 kiB | PCIe controller firmware ``rcar_gen4_pcie.bin`` (32 kiB used) | + +----------------+----------------+-----------+---------------------------------------------------------------+ + | ``0x034_0000`` | ``0x3f7_ffff`` | 61696 kiB | UNUSED | + +----------------+----------------+-----------+---------------------------------------------------------------+ + | ``0x3f8_0000`` | ``0x3fb_ffff`` | 256 kiB | U-Boot bootloader environment copy 1 | + +----------------+----------------+-----------+---------------------------------------------------------------+ + | ``0x3fc_0000`` | ``0x3ff_ffff`` | 256 kiB | U-Boot bootloader environment copy 2 | + +----------------+----------------+-----------+---------------------------------------------------------------+ + Bundle TFA BL31 into Linux kernel fitImage ------------------------------------------ diff --git a/doc/board/renesas/rcar-gen5-ironhide.rst b/doc/board/renesas/rcar-gen5-ironhide.rst index 39fbfdbfe00..31a5bb14ae6 100644 --- a/doc/board/renesas/rcar-gen5-ironhide.rst +++ b/doc/board/renesas/rcar-gen5-ironhide.rst @@ -22,7 +22,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: @@ -71,7 +71,7 @@ newly cloned source directory: .. code-block:: console - $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ git clone https://git.u-boot-project.org/u-boot/u-boot.git $ cd u-boot Configure U-Boot: @@ -164,9 +164,9 @@ via TFTP in the same manner as the other components are downloaded: base 0 rsip_ipl_boot_ca0= /* Start TFA BL31, OPTEE-OS, U-Boot, Linux on Cortex-A720AE core 0 */ \ - setenv ipaddr 192.168.1.10 && \ - setenv serverip 192.168.1.1 && \ - setenv netmask 255.255.255.0 && \ + env set ipaddr 192.168.1.10 && \ + env set serverip 192.168.1.1 && \ + env set netmask 255.255.255.0 && \ \ tftp ${rsip_ipl_scp_ep} scp.bin && \ tftp ${rsip_ipl_tfa_ep} bl31.bin && \ @@ -183,7 +183,6 @@ via TFTP in the same manner as the other components are downloaded: rproc load 13 ${rsip_ipl_tfa_ep} 4 && /* Set up Cortex-A720AE Core 0 */ \ rproc start 13 /* Start Cortex-A720AE Core 0 */ - .. note:: U-Boot on RSIP environment is not persistent across reboots, @@ -202,3 +201,219 @@ via TFTP in the same manner as the other components are downloaded: U-Boot on RSIP can start non-SCP cores via ``rproc`` command only after the SCP got started, because those cores are started via SCMI calls to the SCP. + +Cortex-R52 core start +--------------------- + +The U-Boot for RSIP remoteproc implementation is capable of starting +the SCP core, and using the SCP it is capable of starting additional +CPU cores in the SoC, Cortex-R52 and Cortex-A720AE. This subchapter +demonstrates how to start example code on Cortex-R52 cores using the +U-Boot on RSIP remoteproc and SCP. + +The piece of position independent assembler code below can be compiled +for the Cortex-R52 core, can be started from any 4-Byte aligned address +and prints CPU core program counter (PC) address and MPIDR onto HSCIF1. +The MPIDR register encodes CPU cluster and core position and is useful +when identifying on which specific CPU core does the code execute. The +program counter (PC) can be used to determine from which address did +the code running on the Cortex-R52 core start executing. + +.. code-block:: console + + #define HSTDR 0xc + #define HSFSR 0x10 + #define TEND 0x40 + + .macro mprintchr, chr, rt + mov \rt, \chr + bl printchr + .endm + + .macro mprintnl, rt + mprintchr #'\r', \rt + mprintchr #'\n', \rt + .endm + + start: + + # Set up HSCIF1 output + mov r0, #0xc0000000 + orr r0, r0, #0x00710000 + orr r0, r0, #0x00004000 + + # Print newline + mprintnl r1 + + # Print PC: + mprintchr #'P', r1 + mprintchr #'C', r1 + mprintchr #':', r1 + mprintchr #' ', r1 + bl printchr + bl printchr + bl printchr + mprintchr #'0', r1 + mprintchr #'x', r1 + + # Figure out start address and print it + adr r2, start + bl printhex + + # Print newline + mprintnl r1 + + # Print MPIDR: + mprintchr #'M', r1 + mprintchr #'P', r1 + mprintchr #'I', r1 + mprintchr #'D', r1 + mprintchr #'R', r1 + mprintchr #':', r1 + mprintchr #' ', r1 + mprintchr #'0', r1 + mprintchr #'x', r1 + + # Read MPIDR + mrc p15, 0, r2, c0, c0, 5 + bl printhex + + # Print newline + mprintnl r1 + + # Halt and do nothing + 3: wfi + b 3b + + # Print char byte of register r1 (clobber: r9) + printchr: + 2: ldrh r9, [r0, #HSFSR] + tst r9, #TEND + beq 2b + strb r1, [r0, #HSTDR] + ldrh r9, [r0, #HSFSR] + bic r9, #TEND + strh r9, [r0, #HSFSR] + + bx lr + + # Print hex content of register r2 (clobber: r6, r7, r8, r9) + printhex: + mov r8, #8 + + 1: and r1, r2, #0xf0000000 + lsl r2, r2, #4 + lsr r1, r1, #28 + add r1, r1, #'0' + cmp r1, #'9' + # >= '9' => add 'a' - ':' + addgt r1, r1, #('a' - ':') + + mov r6, lr + bl printchr + mov lr, r6 + + sub r8, r8, #1 + cmp r8, #0 + bne 1b + + bx lr + +Compile the piece of position independent assembler code above for +the Cortex-R52 core as follows: + +.. code-block:: console + + $ cpp code.s > temp.S + $ arm-linux-gnueabi-as -march=armv8-r -o temp.o temp.S + $ arm-linux-gnueabi-objcopy -O binary temp.o output.bin + +Load the piece of compiled assembler code into memory, and start the +code on the Cortex-R52 cluster 0 core 0 as follows: + +.. important:: + + It is mandatory for the SCP core to be started before the following + procedure can be performed, because the Cortex-R52 core is started + by the SCP. The SCP is usually started by the default boot command + of the U-Boot on RSIP, which contains ``rproc start 0`` invocation to + start the SCP core. + +.. note:: + + The example below does use ethernet loading of the Cortex-R52 + firmware, however, it is perfectly fine to load the firmware from + either HyperFlash, UFS, or other storage media. + +.. note:: + + The example below does use load address 0x86000000 for the Cortex-R52 + firmware. This address is located in DRAM and is only ever used as a + temporary load buffer. The firmware is copied into the RT-VRAM which + is accessible from the RSIP at remapped address 0xb0200000 and from + the Cortex-R52 at address 0x10200000, which is also the address from + which the firmware executes on Cortex-R52. + +.. code-block:: console + + # Configure ethernet address, adjust as needed: + => env set ipaddr 192.168.1.10 + => env set serverip 192.168.1.1 + => env set netmask 255.255.255.0 + + # Load Cortex-R52 firmware into DRAM at address 0x86000000 + => tftp 0x86000000 output.bin + # Copy Cortex-R52 firmware into RT-VRAM + => cp.b 0x86000000 0xb0200000 ${filesize} + # Configure Cortex-R52 cluster 0 core 0 entry point + => rproc load 1 0x10200000 ${filesize} + # Start Cortex-R52 cluster 0 core 0 + => rproc start 1 + +The expected output of ``rproc start 1`` a print of both MPIDR and PC register +values on HSCIF1. + +.. code-block:: console + + Load Remote Processor 1 with data@addr=0x10200000 304 bytes: Success! + + PC: 0x10200000 + MPIDR: 0x80000000 + +.. note:: + + The MPIDR register value above is 0x80000000 . Cortex-R52 MPIDR register + bit 31 is always set to 1, bitfields AFF2[23:16], AFF1[15:8], AFF0[7:0] + describe core affinity, in this case this is cluster 0, core 0. + +Other Cortex-R52 cores in other clusters can be started by passing a +matching core number to both ``rproc load`` and ``rproc start``. Example: + +.. code-block:: console + + => rproc list + ... + 1 - Name:'rcar-rsip-cr.0-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 2 - Name:'rcar-rsip-cr.1-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 3 - Name:'rcar-rsip-cr.2-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 4 - Name:'rcar-rsip-cr.3-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 5 - Name:'rcar-rsip-cr.4-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 6 - Name:'rcar-rsip-cr.5-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 7 - Name:'rcar-rsip-cr.6-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 8 - Name:'rcar-rsip-cr.7-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 9 - Name:'rcar-rsip-cr.8-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 10 - Name:'rcar-rsip-cr.9-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 11 - Name:'rcar-rsip-cr.10-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + 12 - Name:'rcar-rsip-cr.11-scp@c1340000' type:'internal memory mapped' supports: load start stop reset is_running + ... + => rproc load 10 0x10200000 ${filesize} && rproc start 10 + Load Remote Processor 10 with data@addr=0x10200000 304 bytes: Success! + + PC: 0x10200000 + MPIDR: 0x80000201 + +.. note:: + + The MPIDR register value above is 0x80000201 . Cortex-R52 MPIDR register + bit 31 is always set to 1, bitfields AFF2[23:16], AFF1[15:8], AFF0[7:0] + describe core affinity, in this case this is cluster 2, core 1. diff --git a/doc/board/renesas/rzn1.rst b/doc/board/renesas/rzn1.rst index 5f054e8c674..24ce7709dd7 100644 --- a/doc/board/renesas/rzn1.rst +++ b/doc/board/renesas/rzn1.rst @@ -17,7 +17,7 @@ Clone the U-Boot repository and build it as follows: .. code-block:: bash - git clone --depth 1 https://source.denx.de/u-boot/u-boot.git + git clone --depth 1 https://git.u-boot-project.org/u-boot/u-boot.git cd u-boot make rzn1_snarc_defconfig make CROSS_COMPILE=arm-linux-gnu- diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst index f77f1e78f38..de2df3046e2 100644 --- a/doc/board/rockchip/rockchip.rst +++ b/doc/board/rockchip/rockchip.rst @@ -127,6 +127,7 @@ List of mainline supported Rockchip boards: * rk3568 - 9Tripod X3568 v4 (9tripod-x3568-v4-rk3568) + - Anbernic RG-DS (anbernic-rg-ds-rk3568) - Rockchip Evb-RK3568 (evb-rk3568) - Banana Pi BPI-R2 Pro (bpi-r2-pro-rk3568) - EmbedFire LubanCat 2 (lubancat-2-rk3568) @@ -155,6 +156,7 @@ List of mainline supported Rockchip boards: - Rockchip EVB (evb-rk3588) - Edgeble Neural Compute Module 6A SoM - Neu6a (neu6a-io-rk3588) - Edgeble Neural Compute Module 6B SoM - Neu6b (neu6b-io-rk3588) + - Firefly ROC-RK3588S-PC (roc-pc-rk3588s) - FriendlyElec CM3588 NAS (cm3588-nas-rk3588) - FriendlyElec NanoPC-T6 (nanopc-t6-rk3588) - FriendlyElec NanoPi R6C (nanopi-r6c-rk3588s) @@ -228,7 +230,7 @@ U-Boot .. code-block:: bash - git clone --depth 1 https://source.denx.de/u-boot/u-boot.git + git clone --depth 1 https://git.u-boot-project.org/u-boot/u-boot.git cd u-boot To build px30 boards: diff --git a/doc/board/samsung/e850-96.rst b/doc/board/samsung/e850-96.rst index 3174a7daff9..d980f2faf02 100644 --- a/doc/board/samsung/e850-96.rst +++ b/doc/board/samsung/e850-96.rst @@ -205,8 +205,8 @@ Use ``$partitions_android`` as current partition definitions: .. prompt:: bash => - setenv partitions_linux $partitions - setenv partitions $partitions_android + env set partitions_linux $partitions + env set partitions $partitions_android env save Format eMMC to have Android partition table: @@ -586,17 +586,17 @@ First, prepare the ``boot.txt`` file with OS boot instructions, for example: .. code-block:: bash - setenv mmcroot 2 - setenv console ttySAC0,115200n8 - setenv kernel_file Image - setenv fdtfile exynos/exynos850-e850-96.dtb - setenv loadaddr 0x80000000 - setenv fdt_addr_r 0x8c000000 + env set mmcroot 2 + env set console ttySAC0,115200n8 + env set kernel_file Image + env set fdtfile exynos/exynos850-e850-96.dtb + env set loadaddr 0x80000000 + env set fdt_addr_r 0x8c000000 echo Booting Linux from eMMC... mmc dev $mmcdev mmc rescan - setenv bootargs console=$console root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw + env set bootargs console=$console root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw load mmc $mmcdev:$mmcroot $fdt_addr_r /boot/$fdtfile load mmc $mmcdev:$mmcroot $loadaddr /boot/$kernel_file booti $loadaddr - $fdt_addr_r @@ -735,7 +735,7 @@ defined in ``$partitions``, it's enough to only set ``$bootdev`` like this: .. prompt:: bash => - setenv bootdev usb + env set bootdev usb env save Another thing to be aware of: in order to perform USB boot the USB PHY kernel @@ -808,7 +808,7 @@ Follow the instructions below to boot from a USB storage device: .. prompt:: bash => - setenv bootdev usb + env set bootdev usb env save 6. Erase eMMC partition table to make U-Boot use ESP from USB drive: diff --git a/doc/board/siemens/iot2050.rst b/doc/board/siemens/iot2050.rst index 37b23f6146b..2c0a324485c 100644 --- a/doc/board/siemens/iot2050.rst +++ b/doc/board/siemens/iot2050.rst @@ -25,7 +25,7 @@ ATF: Upstream release 2.4 or newer OP-TEE: Upstream release 3.10.0 or newer Binary dependencies can be found in -https://github.com/siemens/meta-iot2050/tree/master/recipes-bsp/u-boot/files/prebuild. +https://github.com/siemens/meta-iot2050/tree/master/meta/recipes-bsp/u-boot/files/prebuild. The following binaries from that source need to be present in the build folder: - seboot_pg1.bin @@ -44,7 +44,7 @@ needs to be present in the build folder: - otpcmd.bin Regarding how to generating this otpcmd.bin, please refer to: -https://github.com/siemens/meta-iot2050/tree/master/recipes-bsp/secure-boot-otp-provisioning/files/make-otpcmd.sh +https://github.com/siemens/meta-iot2050/blob/master/meta/recipes-bsp/secure-boot-otp-provisioning/files/make-otpcmd.sh Building -------- diff --git a/doc/board/sifive/unleashed.rst b/doc/board/sifive/unleashed.rst index ce38b701d78..94554f5c3ae 100644 --- a/doc/board/sifive/unleashed.rst +++ b/doc/board/sifive/unleashed.rst @@ -124,10 +124,10 @@ load uImage. .. code-block:: none - => setenv ipaddr 10.206.7.133 - => setenv netmask 255.255.252.0 - => setenv serverip 10.206.4.143 - => setenv gateway 10.206.4.1 + => env set ipaddr 10.206.7.133 + => env set netmask 255.255.252.0 + => env set serverip 10.206.4.143 + => env set gateway 10.206.4.1 If you want to use a flat kernel image such as Image file @@ -256,7 +256,7 @@ as well. 1000 Bytes/s done Bytes transferred = 5614 (15ee hex) - => setenv bootargs "root=/dev/ram rw console=ttySIF0 ip=dhcp earlycon=sbi" + => env set bootargs "root=/dev/ram rw console=ttySIF0 ip=dhcp earlycon=sbi" => booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} ## Loading init Ramdisk from Legacy Image at 88300000 ... Image Name: Linux RootFS diff --git a/doc/board/sipeed/maix.rst b/doc/board/sipeed/maix.rst index 4568bb3e4b7..9bbc2a93c5b 100644 --- a/doc/board/sipeed/maix.rst +++ b/doc/board/sipeed/maix.rst @@ -19,7 +19,7 @@ Currently, only the Sipeed MAIX BiT V2.0 (bitm) and Sipeed MAIXDUINO are supported, but the boards are fairly similar. Documentation for Maix boards is available from -`Sipeed's website <http://dl.sipeed.com/MAIX/HDK/>`_. +`Sipeed's website <https://dl.sipeed.com/MAIX/HDK/>`_. Documentation for the Kendryte K210 is available from `Kendryte's website <https://kendryte.com/downloads/>`_. However, hardware details are rather lacking, so most technical reference has been taken from the diff --git a/doc/board/sophgo/index.rst b/doc/board/sophgo/index.rst index 26dba4a4851..19c9a19b1d4 100644 --- a/doc/board/sophgo/index.rst +++ b/doc/board/sophgo/index.rst @@ -6,4 +6,5 @@ Sophgo :maxdepth: 1 milkv_duo + milkv_duo_256m licheerv_nano diff --git a/doc/board/sophgo/licheerv_nano.rst b/doc/board/sophgo/licheerv_nano.rst index a75c6a37dc5..a3b1171287d 100644 --- a/doc/board/sophgo/licheerv_nano.rst +++ b/doc/board/sophgo/licheerv_nano.rst @@ -43,9 +43,9 @@ To run u-boot.bin on top of FSBL, follow these steps: FSBL, OpenSBI, and U-Boot. Note that you will have to use the file cv181x.bin as the FSBL. -2. Place the generated fip.bin file into the FAT partition of the SD card. +4. Place the generated fip.bin file into the FAT partition of the SD card. -3. Insert the SD card into the board and power it on. +5. 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 diff --git a/doc/board/sophgo/milkv_duo_256m.rst b/doc/board/sophgo/milkv_duo_256m.rst new file mode 100644 index 00000000000..9e2cbddf4db --- /dev/null +++ b/doc/board/sophgo/milkv_duo_256m.rst @@ -0,0 +1,84 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Milk-V Duo 256M +=============== + +SG2002 RISC-V SoC +------------------ +The SG2002 is a high-performance, low-power 64-bit RISC-V/ARM SoC from Sophgo. + +Mainline support +---------------- +The support for following drivers are already enabled: + +1. ns16550 UART Driver. +2. Synopsys Designware MSHC Driver. +3. Synopsys Designware Ethernet Controller. + +Building +~~~~~~~~ +1. Add the RISC-V toolchain to your PATH. +2. Setup ARCH & cross compilation environment variable: + +.. code-block:: console + + export CROSS_COMPILE=<riscv64 toolchain prefix> + cd <U-Boot-dir> + make milkv_duo_256m_defconfig + make + +This will generate u-boot.bin + +Booting +~~~~~~~ +Currently, we rely on vendor FSBL (First Stage Boot Loader) to initialize the +clock and load OpenSBI and the u-boot image, then bootup from it. + +To run u-boot.bin on top of FSBL, follow these steps: + +1. Generate a compatible u-boot.bin using U-Boot with the Milk-V Duo 256M + default configuration. + +2. Use mainline OpenSBI with a newer version than 1.5 to generate fw_dynamic. + Use FDT_FW_PATH to point to sg2002-milkv-duo256m.dtb device tree file while + compiling fw_dynamic. Example: + +.. code-block:: console + + cd open-sbi + PLATFORM=generic FW_FDT_PATH=../u-boot/arch/riscv/dts/sg2002-milkv-duo256m.dtb make + +This will generate build/platform/generic/firmware/fw_dynamic.bin. + +3. Use the vendor-provided tool [1] to create a unified fip.bin file containing + FSBL, OpenSBI, and U-Boot. + Note that you will have to use the file cv181x.bin as the FSBL. + +4. Place the generated fip.bin file into the FAT partition of the SD card. + +5. 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. + +[1]: https://github.com/sophgo/fiptool + +Sample boot log from Milk-V 256M Duo board +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. code-block:: none + + U-Boot 2026.07-00002-g0b690770386f-dirty (Jul 07 2026 - 13:33:36 -0300)milkv_duo_256m + + DRAM: 256 MiB + Core: 20 devices, 13 uclasses, devicetree: separate + MMC: mmc@4310000: 0 + Loading Environment from nowhere... OK + In: serial@4140000 + Out: serial@4140000 + Err: serial@4140000 + Net: + Warning: ethernet@4070000 (eth0) using random MAC address - 0a:f3:23:40:7e:55 + eth0: ethernet@4070000 + Hit any key to stop autoboot: 0 + milkv_duo_256m# diff --git a/doc/board/spacemit/bananapi-f3.rst b/doc/board/spacemit/bananapi-f3.rst index f2220950a3a..1ece2ce9d02 100644 --- a/doc/board/spacemit/bananapi-f3.rst +++ b/doc/board/spacemit/bananapi-f3.rst @@ -29,7 +29,7 @@ built for SpacemiT K1 SoC as below: .. code-block:: console cd <U-Boot-dir> - make bananapi-f3_defconfig + make spacemit_k1_defconfig make OPENSBI=<OpenSBI-dir>/build/platform/generic/firmware/fw_dynamic.bin This will generate u-boot.itb diff --git a/doc/board/spacemit/index.rst b/doc/board/spacemit/index.rst index e7d3d94e459..a5e35ee12ab 100644 --- a/doc/board/spacemit/index.rst +++ b/doc/board/spacemit/index.rst @@ -6,4 +6,5 @@ SpacemiT :maxdepth: 1 bananapi-f3 + k1-spl diff --git a/doc/board/spacemit/k1-spl.rst b/doc/board/spacemit/k1-spl.rst new file mode 100644 index 00000000000..187eed56e8e --- /dev/null +++ b/doc/board/spacemit/k1-spl.rst @@ -0,0 +1,243 @@ +.. SPDX-License-Identifier: GPL-2.0-or-later + +SpacemiT K1 SPL Build and Test Guide +===================================== + +This guide explains how to build and test U-Boot SPL on SpacemiT K1 based +boards. It covers building SPL with DDR initialization, generating the signed +FSBL image, and deploying via USB fastboot. + +Tested boards: Banana Pi BPI-F3, MusePi Pro. + +.. note:: + + The procedure described here loads SPL into SRAM via USB fastboot and + does not modify the on-board flash, so a power cycle restores the + board's normal boot path. + + At this stage of the patchset, SPL initializes DDR and then halts with + "SPL: Unsupported Boot Device!" because SPI NOR storage support is not + yet available in U-Boot proper. This document will be updated when + U-Boot stage support is ready. + +Prerequisites +~~~~~~~~~~~~~ + +- A SpacemiT K1 board with USB Type-C and UART access +- USB-to-UART adapter (3.3V TTL) +- ``minicom`` or equivalent serial terminal, configured at 115200 8N1 +- ``fastboot`` tool on the host + +Hardware Setup +~~~~~~~~~~~~~~ + +**1. UART Connection** + +Remove all other cables first, then attach UART. Connect a 3.3V +USB-to-UART cable to the board's UART header (J25 on the BPI-F3):: + + BPI-F3 top view + +--------------------------------------------------+ + | | + | J15: USB-C [====] [FDL] [PWR] [RST] | + | | + | | + | J25 (UART header) | + | [TXD] [RXD] [GND] | + +--------------------------------------------------+ + +After UART is connected, attach the USB Type-C cable to the OTG port +(J15 on BPI-F3) to power on. + +**2. Serial Console** + +.. code-block:: console + + $ minicom -D /dev/ttyUSB0 + +Default baudrate: 115200. + +Building U-Boot SPL +~~~~~~~~~~~~~~~~~~~~ + +**1. Obtain the DDR training firmware** + +The DDR training firmware is a proprietary binary provided by SpacemiT. It is +not included in U-Boot and must be downloaded separately from: + +https://github.com/spacemit-com/spacemit-firmware/tree/master/k1/v0.2 + +Download ``ddr_fw.bin`` from that directory. + +This binary is integrated into the SPL image at build time via the binman +framework. When the SPL image is loaded to SRAM (e.g., via USB fastboot), +the SPL executes the DDR firmware from SRAM to perform DDR initialization. + +**2. Obtain OpenSBI fw_dynamic.bin** + +Any pre-built ``fw_dynamic.bin`` is sufficient. Upstream OpenSBI +sources are at https://github.com/riscv-software-src/opensbi if you +need to build one. + +At this stage of the patchset, SPL halts before invoking OpenSBI, +but U-Boot's binman still packages ``fw_dynamic.bin`` into +``u-boot.itb`` and the build fails if it is missing. + +**3. Build SPL** + +.. code-block:: console + + $ export CROSS_COMPILE=riscv64-linux-gnu- + $ export ARCH=riscv + $ export DDR_FW_FILE=$(pwd)/ddr_fw.bin + $ export OPENSBI=/path/to/fw_dynamic.bin + $ make spacemit_k1_defconfig + $ make + +Output: ``u-boot-spl-ddr.bin`` in the build directory. This image contains the +SPL code and the DDR firmware blob packaged together via binman. + +.. note:: + + If ``DDR_FW_FILE`` is not set, the build completes with an empty + placeholder. The resulting SPL will boot but cannot initialize DDR. + +**4. Generate signed FSBL image** + +The K1 BootROM requires a signed first-stage bootloader (FSBL). The signing +tool (``tools/build_binary_file.py``) is in SpacemiT's vendor U-Boot repository: + +.. code-block:: console + + $ git clone -b k1-bl-v2.2.y https://gitee.com/spacemit-buildroot/uboot-2022.10 + +The script uses ``fsbl_ddr.json`` which may not exist by default. If +``fsbl_ddr.json`` does not exist in +``uboot-2022.10/board/spacemit/k1-x/configs/``, +create it by copying ``fsbl.json`` and replacing the reference to +``u-boot-spl.bin`` with ``u-boot-spl-ddr.bin``: + +.. code-block:: console + + $ cd uboot-2022.10/board/spacemit/k1-x/configs + $ cp fsbl.json fsbl_ddr.json + $ sed -i 's/u-boot-spl\.bin/u-boot-spl-ddr.bin/g' fsbl_ddr.json + +Create the ``fsbl.sh`` script below in the ``uboot-2022.10`` directory. +Update the path variables to match your local setup: + +.. code-block:: bash + + #!/bin/sh + MAINLINE_UBOOT_IMG_PATH="{your path}/u-boot" + MAINLINE_SPL_IMG_PATH="{your path}/u-boot/spl" + FSBL_PATH="{your path}/uboot-2022.10/spl_bin" + KEY_TOOL_PATH="{your path}/uboot-2022.10/tools" + CONFIG_PATH="{your path}/uboot-2022.10/board/spacemit/k1-x/configs" + + mkdir -p ${FSBL_PATH} + echo "Clean binaries in ${FSBL_PATH}" + rm -f ${FSBL_PATH}/u-boot-spl-ddr.bin + rm -f ${FSBL_PATH}/u-boot-spl.bin + + if [ ! -d ${MAINLINE_SPL_IMG_PATH} ]; then + MAINLINE_UBOOT_IMG_PATH="{your path}/build" + MAINLINE_SPL_IMG_PATH="{your path}/build/spl" + fi + + # The signing tool reads u-boot-spl-ddr.bin from the path declared in + # fsbl_ddr.json's "source" field, which is resolved relative to the + # JSON file's directory -- i.e. one level up from CONFIG_PATH, not + # FSBL_PATH. Stage the unsigned binary there before signing. + cp ${MAINLINE_UBOOT_IMG_PATH}/u-boot-spl-ddr.bin ${CONFIG_PATH}/../ + python3 ${KEY_TOOL_PATH}/build_binary_file.py \ + -c ${CONFIG_PATH}/fsbl_ddr.json \ + -o ${FSBL_PATH}/FSBL.bin + +Then run: + +.. code-block:: console + + $ chmod +x fsbl.sh + $ ./fsbl.sh + +Output: ``FSBL.bin`` in the ``spl_bin`` directory, ready for deployment. + +Deploying via USB Fastboot +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To enter BootROM fastboot mode: + +1. Power off the board by unplugging its power supply. +2. **Press and hold** the FDL button (called "Boot Key" on some boards; + see the board layout above for the BPI-F3). +3. While holding the button, use a USB cable to connect the OTG port to + your host. This cable is also used by fastboot to upload the firmware. +4. Release the button. + +On the host, ``fastboot devices`` should list the board:: + + dfu-device DFU download + +The serial console shows the BootROM's USB download handler trace, +including a line like:: + + usb2d_initialize : enter + +This indicates the board is ready to accept an image via USB. + +.. tip:: + + If you are worried about insufficient USB power, you can first plug + in the power, then release the button, and then plug in the USB + cable. + +On the host: + +.. code-block:: console + + $ sudo fastboot stage FSBL.bin + $ sudo fastboot continue + +Expected Output +~~~~~~~~~~~~~~~~ + +During successful SPL boot with DDR initialization, the serial console +shows output like:: + + <debug_uart> + + U-Boot SPL 2026.04-rc4-00430-g8b84b1ed8ea9 (May 08 2026 - 09:08:27 -0400) + Fail to detect board:-19 + vdd_core, value:900000 + vdd_1v8, value:1800000 + vdd_1v8_mmc, value:1800000 + DDR firmware: [0xc0815840]:0xf0227179, size:0x8d98 + DDR is ready + SPL: Unsupported Boot Device! + SPL: failed to boot from all boot devices + ### ERROR ### Please RESET the board ### + +To walk through the key lines: + +- ``DDR firmware: [...], size:0x8d98`` - DDR firmware loaded successfully +- ``DDR is ready`` - DDR initialization completed +- ``SPL: failed to boot from all boot devices`` - expected at this stage, + confirms that SPL with DDR init is working correctly + +If SPL hangs before printing DDR messages, verify that ``DDR_FW_FILE`` was set +during build and that ``ddr_fw.bin`` is not empty. + +.. tip:: + + To see verbose DDR training output from the DDR firmware (per-phase + training pass/fail logs), add ``#define DEBUG`` at the top of + ``board/spacemit/k1/spl.c`` and rebuild. SPL then passes ``puts`` as + the firmware's log callback; otherwise the callback is ``NULL`` and + the firmware runs silently. + +References +~~~~~~~~~~~ + +- `DDR firmware repository <https://github.com/spacemit-com/spacemit-firmware>`_ +- `SpacemiT vendor U-Boot (signing tool) <https://gitee.com/spacemit-buildroot/uboot-2022.10>`_ diff --git a/doc/board/st/stm32mp1.rst b/doc/board/st/stm32mp1.rst index 8cf71299233..203843a274b 100644 --- a/doc/board/st/stm32mp1.rst +++ b/doc/board/st/stm32mp1.rst @@ -572,7 +572,7 @@ Then you update the eMMC with the next U-Boot command : a) prepare GPT on eMMC, example with 3 partitions, fip, bootfs and roots:: - # setenv emmc_part "name=fip,size=4MiB;name=bootfs,type=linux,bootable,size=64MiB;name=rootfs,type=linux,size=512" + # env set emmc_part "name=fip,size=4MiB;name=bootfs,type=linux,bootable,size=64MiB;name=rootfs,type=linux,size=512" # gpt write mmc 1 ${emmc_part} b) copy FSBL, TF-A_ or SPL, on first eMMC boot partition diff --git a/doc/board/starfive/deepcomputing_fml13v01.rst b/doc/board/starfive/deepcomputing_fml13v01.rst index 9777f4c6303..51feb06772f 100644 --- a/doc/board/starfive/deepcomputing_fml13v01.rst +++ b/doc/board/starfive/deepcomputing_fml13v01.rst @@ -23,7 +23,7 @@ environment .. code-block:: console - setenv fdtfile my_device-tree.dtb + env set fdtfile my_device-tree.dtb env save Power switch diff --git a/doc/board/starfive/jh7110_common.rst b/doc/board/starfive/jh7110_common.rst index e9c0ed5b022..013bab50045 100644 --- a/doc/board/starfive/jh7110_common.rst +++ b/doc/board/starfive/jh7110_common.rst @@ -170,7 +170,7 @@ Build U-Boot .. code-block:: console - git clone https://source.denx.de/u-boot/u-boot.git u-boot.git + git clone https://git.u-boot-project.org/u-boot/u-boot.git u-boot.git make -C u-boot.git O=u-boot starfive_visionfive2_defconfig make -C u-boot.git O=u-boot OPENSBI=opensbi/platform/generic/firmware/fw_dynamic.bin diff --git a/doc/board/starfive/milk-v_mars.rst b/doc/board/starfive/milk-v_mars.rst index 0dbc500b734..bb3fb4a9aee 100644 --- a/doc/board/starfive/milk-v_mars.rst +++ b/doc/board/starfive/milk-v_mars.rst @@ -19,7 +19,7 @@ environment :: - setenv fdtfile my_device-tree.dtb + env set fdtfile my_device-tree.dtb env save or the configuration variable CONFIG_DEFAULT_FDT_FILE can be used to set to diff --git a/doc/board/starfive/visionfive2.rst b/doc/board/starfive/visionfive2.rst index c92ea16f91b..f3e6544980b 100644 --- a/doc/board/starfive/visionfive2.rst +++ b/doc/board/starfive/visionfive2.rst @@ -18,7 +18,7 @@ environment :: - setenv fdtfile my_device-tree.dtb + env set fdtfile my_device-tree.dtb env save or the configuration variable CONFIG_DEFAULT_FDT_FILE can be used to provide diff --git a/doc/board/tbs/tbs2910.rst b/doc/board/tbs/tbs2910.rst index 9d4be61783e..4f2838bc9bd 100644 --- a/doc/board/tbs/tbs2910.rst +++ b/doc/board/tbs/tbs2910.rst @@ -187,5 +187,5 @@ Links: ------ - https://www.tbsdtv.com/download/document/tbs2910/TBS2910-Matrix-ARM-mini-PC-SCH_rev2.1.pdf - The schematics for the revision 2.1 of the TBS2910 Matrix ARM miniPC. - - https://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf - The + - https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-6DQ-Reference-Manual-IMX6DQRM-R2-Part-1/ta-p/1115983 - The SoC reference manual for additional details on the BOOT_CFG registers. diff --git a/doc/board/thead/lpi4a.rst b/doc/board/thead/lpi4a.rst index acd7ac2698d..3920efcd710 100644 --- a/doc/board/thead/lpi4a.rst +++ b/doc/board/thead/lpi4a.rst @@ -91,8 +91,10 @@ OpenSBI firmware and proper U-Boot. Booting ~~~~~~~ -u-boot-with-spl.bin should be loaded to SRAM through fastboot. Connect -the board to computer with Type-C cable and run +u-boot-with-spl.bin should be loaded to SRAM through fastboot. + +To put the board in fastboot mode, press and hold the ``BOOT`` button, +connect the board to the computer with a Type-C cable, release ``BOOT`` and run: .. code-block:: bash diff --git a/doc/board/ti/am62ax_sk.rst b/doc/board/ti/am62ax_sk.rst index 6f3432f7895..3453ed339e7 100644 --- a/doc/board/ti/am62ax_sk.rst +++ b/doc/board/ti/am62ax_sk.rst @@ -185,7 +185,202 @@ https://www.ti.com/lit/pdf/spruj16 under the `Boot Mode Pins` section. - 00000000 - 11001010 -For SW2 and SW1, the switch state in the "ON" position = 1. + * - Ethernet + - 00110000 + - 11000100 + +For SW3 and SW2, the switch state in the "ON" position = 1. + +Ethernet based boot +------------------- + +To boot the board via Ethernet, configure the BOOT MODE pins for Ethernet boot. + +On powering on the device, ROM uses the Ethernet Port corresponding to CPSW3G's MAC +Port 1 to transmit "TI K3 Bootp Boot". + +The TFTP server and DHCP server on the receiver device need to be configured such +that VCI string "TI K3 Bootp Boot" maps to the file `tiboot3.bin` and the TFTP +server should be capable of transferring it to the device. + +**Configuring DHCP server includes following steps:** + +* Install DHCP server: + +.. prompt:: bash $ + + sudo apt install isc-dhcp-server + +* Disable services before configuring: + +.. prompt:: bash $ + + sudo systemctl disable --now isc-dhcp-server.service isc-dhcp-server6.service + +* DHCP server setup + +Run the ip link or ifconfig command to find the name of your network interface: + +Example + +.. code-block:: + + eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 + inet 10.0.0.5 netmask 255.255.255.0 broadcast 10.0.0.255 + inet6 fe80::1a2b:3c4d:5e6f:7a8b prefixlen 64 scopeid 0x20<link> + ether aa:bb:cc:dd:ee:ff txqueuelen 1000 (Ethernet) + RX packets 100000 bytes 120000000 (120.0 MB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 50000 bytes 6000000 (6.0 MB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + + enx001122334455: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 + ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet) + RX packets 200 bytes 64000 (64.0 KB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 150 bytes 20000 (20.0 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + + lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 + inet 127.0.0.1 netmask 255.0.0.0 + inet6 ::1 prefixlen 128 scopeid 0x10<host> + loop txqueuelen 1000 (Local Loopback) + RX packets 10000 bytes 800000 (800.0 KB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 10000 bytes 800000 (800.0 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +Suppose we are using enx001122334455 interface, one end of it is connected to host PC +and other to board. + +* Do the following changes in /etc/dhcp/dhcpd.conf in host PC. + +.. code-block:: + + subnet 192.168.0.0 netmask 255.255.254.0 + { + range dynamic-bootp 192.168.0.2 192.168.0.5; + if substring (option vendor-class-identifier, 0, 16) = "TI K3 Bootp Boot" + { + filename "tiboot3.bin"; + } elsif substring (option vendor-class-identifier, 0, 20) = "AM62AX U-Boot R5 SPL" + { + filename "tispl.bin"; + } elsif substring (option vendor-class-identifier, 0, 21) = "AM62AX U-Boot A53 SPL" + { + filename "u-boot.img"; + } + default-lease-time 60000; + max-lease-time 720000; + next-server 192.168.0.1; + } + +* Do following changes in /etc/default/isc-dhcp-server + +.. code-block:: + + DHCPDv4_CONF=/etc/dhcp/dhcpd.conf + INTERFACESv4="enx001122334455" + INTERFACESv6="" + +* For your interface change ip address and netmask to next-server and your netmask + +.. prompt:: bash $ + + sudo ifconfig enx001122334455 192.168.0.1 netmask 255.255.254.0 + +* Enable DHCP + +.. prompt:: bash $ + + sudo systemctl enable --now isc-dhcp-server + +* To see if there is any configuration error or if dhcp is running run + +.. prompt:: bash $ + + sudo service isc-dhcp-server status + # If it shows error then something is wrong with configuration + +**For TFTP setup follow below steps:** + +* Install TFTP server: + +.. prompt:: bash $ + + sudo apt install tftpd-hpa + +tftpd-hpa package should be installed. + +Now, check whether the tftpd-hpa service is running with the following command: + +.. prompt:: bash $ + + sudo systemctl status tftpd-hpa + +* Configuring TFTP server: + +The default configuration file of tftpd-hpa server is /etc/default/tftpd-hpa. +If you want to configure the TFTP server, then you have to modify this configuration +file and restart the tftpd-hpa service afterword. + +To modify the /etc/default/tftpd-hpa configuration file, run the following command + +.. prompt:: bash $ + + sudo vim /etc/default/tftpd-hpa + +Configuration file may contain following configuration options by default: + +.. code-block:: + + # /etc/default/tftpd-hpa + + TFTP_USERNAME="tftp" + TFTP_DIRECTORY="/var/lib/tftpboot" + TFTP_ADDRESS=":69" + TFTP_OPTIONS="--secure" + +Now change the **TFTP_DIRECTORY** to **/tftp** and add the **--create** option to the +**TFTP_OPTIONS**. Without the **--create** option, you won't be able to create or upload +new files to the TFTP server. You will only be able to update existing files. + +After above changes /etc/default/tftpd-hpa file would look like this: + +.. code-block:: + + # /etc/default/tftpd-hpa + + TFTP_USERNAME="tftp" + TFTP_DIRECTORY="/tftp" + TFTP_ADDRESS=":69" + TFTP_OPTIONS="--secure --create" + +Since we have configured tftp directory as /tftp, put tiboot3.bin, tispl.bin +and u-boot.img after building it using sdk or manually cloning all the repos. + +To build binaries use following defconfig files: + +.. code-block:: + + am62ax_evm_r5_ethboot_defconfig + am62ax_evm_a53_ethboot_defconfig + +`tiboot3.bin` is expected to be built from `am62ax_evm_r5_ethboot_defconfig` and +`tispl.bin` and `u-boot.img` are expected to be built from +`am62ax_evm_a53_ethboot_defconfig`. + +Images should get fetched in following sequence as a part of boot procedure: + +.. code-block:: + + tiboot3.bin => tispl.bin => u-boot.img + +ROM loads and executes `tiboot3.bin` provided by the TFTP server. + +Next, based on NET_VCI_STRING string mentioned in respective defconfig file `tiboot3.bin` +fetches `tispl.bin` and then `tispl.bin` fetches `u-boot.img` from TFTP server which +completes Ethernet boot on the device. Falcon Mode ----------- diff --git a/doc/board/ti/am65x_evm.rst b/doc/board/ti/am65x_evm.rst index 60b08ceebf0..73ceef2e531 100644 --- a/doc/board/ti/am65x_evm.rst +++ b/doc/board/ti/am65x_evm.rst @@ -201,8 +201,8 @@ To boot kernel from eMMC, use the following commands: .. prompt:: bash => - setenv mmcdev 0 - setenv bootpart 0 + env set mmcdev 0 + env set bootpart 0 boot OSPI: @@ -240,7 +240,7 @@ To boot kernel from OSPI, at the U-Boot prompt: .. prompt:: bash => - setenv boot ubi + env set boot ubi boot UART: diff --git a/doc/board/ti/dra7xx_evm.rst b/doc/board/ti/dra7xx_evm.rst index 8e5d95535fa..9ef94e2ea00 100644 --- a/doc/board/ti/dra7xx_evm.rst +++ b/doc/board/ti/dra7xx_evm.rst @@ -73,7 +73,7 @@ set boot0 as the boot device. .. prompt:: bash => - setenv autoload no + env set autoload no usb start dhcp mmc dev 1 1 diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst index 21973d53b15..d3ecaf59909 100644 --- a/doc/board/ti/k3.rst +++ b/doc/board/ti/k3.rst @@ -170,7 +170,7 @@ online * **Das U-Boot** - | **source:** https://source.denx.de/u-boot/u-boot.git + | **source:** https://git.u-boot-project.org/u-boot/u-boot.git | **branch:** master * **Trusted Firmware-A (TF-A)** diff --git a/doc/board/ti/ks2_evm.rst b/doc/board/ti/ks2_evm.rst index 16c2e57d09d..c6e9d969f3c 100644 --- a/doc/board/ti/ks2_evm.rst +++ b/doc/board/ti/ks2_evm.rst @@ -198,8 +198,8 @@ instructions: .. prompt:: bash => - setenv addr_uboot 0x87000000 - setenv filesize <size in hex of u-boot-spi.gph rounded to hex 0x10000> + env set addr_uboot 0x87000000 + env set filesize <size in hex of u-boot-spi.gph rounded to hex 0x10000> run burn_uboot_spi Once U-Boot prompt is available, power off the EVM. Set the SW1 dip switch to @@ -226,7 +226,7 @@ instructions: .. prompt:: bash => - setenv filesize <size in hex of MLO rounded to hex 0x10000> + env set filesize <size in hex of MLO rounded to hex 0x10000> run burn_uboot_nand Once U-Boot prompt is available, Power OFF the EVM. Set the SW1 dip switch to diff --git a/doc/board/tq/tqma6ul.rst b/doc/board/tq/tqma6ul.rst index 2b346715642..1928963bf14 100644 --- a/doc/board/tq/tqma6ul.rst +++ b/doc/board/tq/tqma6ul.rst @@ -49,7 +49,7 @@ U-Boot generic environment variable ``ethact``. .. code-block:: bash - setenv ethact <FEC> + env set ethact <FEC> *********** Boot source diff --git a/doc/board/xilinx/zynqmp-r5.rst b/doc/board/xilinx/zynqmp-r5.rst index 266d07d1193..d12c1e8774d 100644 --- a/doc/board/xilinx/zynqmp-r5.rst +++ b/doc/board/xilinx/zynqmp-r5.rst @@ -95,7 +95,7 @@ visible from the following log:: ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 12, interface rgmii-id eth0: ethernet@ff0e0000 Hit any key to stop autoboot: 0 - ZynqMP> setenv autoload no + ZynqMP> env set autoload no ZynqMP> dhcp BOOTP broadcast 1 DHCP client bound to address 192.168.0.167 (8 ms) @@ -114,7 +114,7 @@ visible from the following log:: 376 KiB/s done Bytes transferred = 2075464 (1fab48 hex) - ZynqMP> setenv autostart no + ZynqMP> env set autostart no ZynqMP> bootelf -p 20000000 ZynqMP> cpu 4 release 10000000 lockstep Using TCM jump trampoline for address 0x10000000 |
