Personal tools

1-1-1-1-2-1-8

From ICOP tech wiki

Revision as of 08:39, 6 March 2020 by Viky6 (talk | contribs) (Created page with " <div id="column-content"> <div id="content"> <a id="top"></a> <h1 id="firstHeading" class="firstHeading">Yocto Build U-Boot</h1> <div id="bodyContent">...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

<a id="top"></a>

Yocto Build U-Boot

From Variscite Wiki

Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a>


Yocto Build U-Boot from source code


Contents

  • <a href="#Toolchain_installation_for_out_of_Yocto_builds">1 Toolchain installation for out of Yocto builds</a>
  • <a href="#Build_U-Boot_out_of_Yocto_tree">2 Build U-Boot out of Yocto tree</a>
  • <a href="#Build_boot_image">3 Build boot image</a>
  • <a href="#Install_the_built_U-Boot_on_an_SD_card">4 Install the built U-Boot on an SD card</a>
  • <a href="#Update_your_U-Boot_out_of_Yocto_tree">5 Update your U-Boot out of Yocto tree</a>

1 Toolchain installation for out of Yocto builds

To install the toolchain, follow <a rel="nofollow" class="external text" href="http://variwiki.com/index.php?title=Yocto_Toolchain_installation&release=RELEASE_SUMO_V2.2_DART-MX8M-MINI">Yocto Toolchain installation</a>.

2 Build U-Boot out of Yocto tree

Obtain sources:

$ git clone <a rel="nofollow" class="external free" href="https://github.com/varigit/uboot-imx.git">https://github.com/varigit/uboot-imx.git</a> -b imx_v2018.03_4.14.98_2.0.0_ga_var01
$ cd uboot-imx

Configure compilation environment:

$ source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux

Cleanup everything:

$ make mrproper


Select configuration:

$ make imx8mm_var_dart_defconfig

Build U-Boot:

$ make -j4

3 Build boot image

The final boot image contains multiple firmware files. The following procedure builds the final image.

Create imx-boot-tools directory:

$ mkdir imx-boot-tools
$ cd imx-boot-tools

Download DDR firmware:

$ wget <a rel="nofollow" class="external free" href="https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.1.1.bin">https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.1.1.bin</a>
$ chmod +x firmware-imx-8.1.1.bin
$ ./firmware-imx-8.1.1.bin
$ cp firmware-imx-8.1.1/firmware/ddr/synopsys/* .

Download imx_mkimage:

$ git clone <a rel="nofollow" class="external free" href="https://source.codeaurora.org/external/imx/imx-mkimage">https://source.codeaurora.org/external/imx/imx-mkimage</a> -b imx_4.14.98_2.0.0_ga
$ cp imx-mkimage/iMX8M/*.c imx-mkimage/iMX8M/*.sh  imx-mkimage/scripts/pad_image.sh .

Download and build ATF:

$ git clone <a rel="nofollow" class="external free" href="https://source.codeaurora.org/external/imx/imx-atf">https://source.codeaurora.org/external/imx/imx-atf</a> -b imx_4.14.98_2.0.0_ga
$ git clone <a rel="nofollow" class="external free" href="https://github.com/varigit/meta-variscite-imx">https://github.com/varigit/meta-variscite-imx</a> -b sumo-imx-4.14.98-var01
$ cp meta-variscite-imx/recipes-bsp/imx-mkimage/files/soc.mak .
$ cd imx-atf
$ git apply ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/imx8mm* ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/imx8m-*
$ source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux
$ unset LDFLAGS
$ make PLAT=imx8mm bl31
$ cp build/imx8mm/release/bl31.bin ..
$ cd ..

Copy U-Boot binaries:

$ cp ../tools/mkimage mkimage_uboot
$ cp ../u-boot.bin .
$ cp ../u-boot-nodtb.bin ../spl/u-boot-spl.bin ../arch/arm/dts/fsl-imx8mm-var-dart.dtb ../arch/arm/dts/fsl-imx8mm-var-som.dtb .

Build boot image:

$ make -f soc.mak clean
$ make -f soc.mak SOC=iMX8MM dtbs="fsl-imx8mm-var-dart.dtb fsl-imx8mm-var-som.dtb" MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG=imx-boot-sd.bin flash_lpddr4_ddr4_evk

4 Install the built U-Boot on an SD card


$ sudo dd if=imx-boot-sd.bin of=/dev/sdX bs=1K seek=33 conv=fsync

If you want to use our recovery SD card to flash the built U-Boot to NAND flash/eMMC, then copy it to the appropriate location in the SD card:

$ sudo cp imx-boot.bin /media/rootfs/opt/images/...

And eject the SD card gracefully from host machine.


Note: If you manually upgrade an existing U-Boot, and you have an old environment saved, it is a good idea to reset your environment to the new default (see <a href="/index.php?title=U-Boot_4.1.15_features#Environment_handling_commands" title="U-Boot 4.1.15 features">Environment handling commands</a>)

5 Update your U-Boot out of Yocto tree

$ git pull