Yocto Build U-Boot: Difference between revisions

From Variscite Wiki
No edit summary
No edit summary
Line 40: Line 40:
}}
}}


{{#ifeq: {{#var:SOC_SERIES}}|imx8|
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
= Build boot image =
= Build boot image =
The final boot image contains multiple firmware files. The following procedure builds the final image.
The final boot image contains multiple firmware files. The following procedure builds the final image.
Line 48: Line 48:
  $ cd imx-boot-tools
  $ cd imx-boot-tools


{{#ifeq: {{#var:SOC_FAMILY}}|imx8|
{{#ifeq: {{#var:SOC_FAMILY}} | imx8 |
  <br>
  <br>
  # Download SC firmware
  # Download SC firmware

Revision as of 17:41, 20 June 2019

Yocto Build U-Boot from source code

Toolchain installation for out of Yocto builds

To install the toolchain, follow Yocto Toolchain installation.

Build U-Boot out of Yocto tree

Obtain sources:

$ git clone https://github.com/varigit/uboot-imx.git -b imx_v2015.04_4.1.15_1.1.0_ga_var03
$ cd uboot-imx

Configure compilation environment:

$ source /opt/fslc-x11/2.2.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi

Cleanup everything:

$ make mrproper

Select one of the following configurations:

For booting from SD card/eMMC:
$ make mx6var_som_sd_defconfig

For booting from NAND flash:
$ make mx6var_som_nand_defconfig

Build U-Boot:

$ make -j4

{{#ifeq: | imx8 |

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 and HDMI firmware
$ wget /.bin
$ chmod +x .bin
$ ./.bin --auto-accept --force
$ cp /firmware/ddr/synopsys/lpddr4_pmu_train_* .
$ cp /firmware/hdmi/cadence/signed_* .


# Download imx_mkimage
$ git clone /imx-mkimage -b 
$ cp imx-mkimage/iMX8M/*.c imx-mkimage/iMX8M/*.sh  .
# Download and build ATF
$ git clone /imx-atf -b 

$ cd imx-atf
$ source /opt/fslc-x11/2.2.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi
$ export LDFLAGS=

$ make PLAT= bl31
$ cp build//release/bl31.bin ..
$ cd ..
# Copy u-boot binaries
$ cp ../tools/mkimage mkimage_uboot
$ cp ../u-boot.bin .



# Build boot image
$ make -f soc.mak clean 
$ make -f soc.mak SOC= dtbs= MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG=u-boot.img-sd flash_evk

Install the built U-Boot on an SD card


$ sudo dd if=SPL of=/dev/sdX bs=1K seek=1; sync
$ sudo dd if=u-boot.img of=/dev/sdX bs=1K seek=69; sync
(Replace /dev/sdX with the correct device)

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 SPL /media/rootfs/opt/images/... 
$ sudo cp u-boot.img /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 Environment handling commands)

Update your U-Boot out of Yocto tree

$ git pull