Yocto Build U-Boot: Difference between revisions
From Variscite Wiki
No edit summary |
No edit summary |
||
Line 19: | Line 19: | ||
$ make mrproper | $ make mrproper | ||
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M | | |||
$ make {{#var:U-BOOT_SD_DEFCONFIG}} | |||
| | |||
Choose one of the following configurations: | Choose one of the following configurations: | ||
Line 26: | Line 29: | ||
For booting from NAND flash: | For booting from NAND flash: | ||
$ make {{#var:U-BOOT_NAND_DEFCONFIG}} | $ make {{#var:U-BOOT_NAND_DEFCONFIG}} | ||
}} | |||
$ make -j4 | |||
$ | {{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M | | ||
= Build boot image = | |||
The final boot image contains multiple firmware files. All of them are created during the Yocto build. The following procedure builds final image: | |||
# Copy imx-boot-tools | |||
$ cp -a {{#var:BUILD_FOLDER}}/{{#var:BUILD_FOLDER_XWAYLAND}}/tmp/deploy/images/{{#var:MACHINE_NAME}}/imx-boot-tools . | |||
# Copy u-boot, SPL and DTB | |||
$ cd imx-boot-tools | |||
$ rm -f u-boot* *.dtb | |||
$ cp ../u-boot.bin imx-boot-tools | |||
$ cp ../u-boot-nodtb.bin imx-boot-tools | |||
$ cp ../u-boot-spl.bin imx-boot-tools | |||
$ cp ../arch/arm/dts/imx8m-var-dart.dtb imx-boot-tools | |||
# Build SPL+DDR firmware image: u-boot-spl-ddr.bin | |||
$ objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_imem_pad.bin | |||
$ objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_1d_dmem_pad.bin | |||
$ objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_imem_pad.bin | |||
$ cat lpddr4_pmu_train_1d_imem_pad.bin lpddr4_pmu_train_1d_dmem_pad.bin > lpddr4_pmu_train_1d_fw.bin | |||
$ cat lpddr4_pmu_train_2d_imem_pad.bin lpddr4_pmu_train_2d_dmem.bin > lpddr4_pmu_train_2d_fw.bin | |||
$ cat u-boot-spl.bin lpddr4_pmu_train_1d_fw.bin lpddr4_pmu_train_2d_fw.bin > u-boot-spl-ddr.bin | |||
$ rm -f lpddr4_pmu_train_1d_fw.bin lpddr4_pmu_train_2d_fw.bin lpddr4_pmu_train_1d_imem_pad.bin lpddr4_pmu_train_1d_dmem_pad.bin lpddr4_pmu_train_2d_imem_pad.bin | |||
# Build u-boot+ATF firmware image: u-boot-atf.bin | |||
$ cp bl31-imx8mq.bin u-boot-atf.bin | |||
$ dd if=u-boot.bin of=u-boot-atf.bin bs=1K seek=128 | |||
# Build u-boot+DTB+ATF+HDMI firmware FIT image | |||
$ ./mkimage_fit_atf.sh imx8m-var-dart.dtb > u-boot.its | |||
$ ./mkimage_uboot -E -p 0x3000 -f u-boot.its u-boot.itb | |||
$ rm -f u-boot.its | |||
# Build final image | |||
$ ./mkimage_imx8 -fit -signed_hdmi signed_hdmi_imx8m.bin -loader u-boot-spl-ddr.bin 0x7E1000 -second_loader u-boot.itb 0x40200000 0x60000 -out imx-boot-sd.bin | |||
}} | |||
= Install the built U-Boot on an SD card = | = Install the built U-Boot on an SD card = |
Revision as of 18:32, 4 July 2018
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 $ cd uboot-imx $ git checkout imx_v2015.04_4.1.15_1.1.0_ga_var03
Build U-Boot:
$ source /opt/fslc-x11/2.2.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi
$ make mrproper
Choose 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 $ make -j4
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