Personal tools

Difference between revisions of "1-1-1-1-2-1-8"

From ICOP tech wiki

Jump to: navigation, search
(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">...")
 
 
Line 1: Line 1:
<div id="column-content">
+
<!-- Set release according to "release" parameter in URL and use RELEASE_MORTY_V1.0_VAR-SOM-MX6 as default
<div id="content">
+
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!--
<a id="top"></a>
+
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM|RELEASE_MORTY_V1.0_VAR-SOM-MX6}}}} <!--
<h1 id="firstHeading" class="firstHeading">Yocto Build U-Boot</h1>
+
--> {{PageHeader|Yocto Build U-Boot from source code}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__
<div id="bodyContent">
+
= Toolchain installation for out of Yocto builds =
<h3 id="siteSub">From Variscite Wiki</h3>
 
<div id="contentSub"></div>
 
<div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div> <!-- start content -->
 
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><p><br />                                                                                       
 
<span style="font-size:16pt;">Yocto Build U-Boot from source code</span>
 
</p>
 
<hr /> <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
 
<ul>
 
<li class="toclevel-1 tocsection-1"><a href="#Toolchain_installation_for_out_of_Yocto_builds"><span class="tocnumber">1</span> <span class="toctext">Toolchain installation for out of Yocto builds</span></a></li>
 
<li class="toclevel-1 tocsection-2"><a href="#Build_U-Boot_out_of_Yocto_tree"><span class="tocnumber">2</span> <span class="toctext">Build U-Boot out of Yocto tree</span></a></li>
 
<li class="toclevel-1"><a href="#Build_boot_image"><span class="tocnumber">3</span> <span class="toctext">Build boot image</span></a></li>
 
<li class="toclevel-1 tocsection-3"><a href="#Install_the_built_U-Boot_on_an_SD_card"><span class="tocnumber">4</span> <span class="toctext">Install the built U-Boot on an SD card</span></a></li>
 
<li class="toclevel-1 tocsection-4"><a href="#Update_your_U-Boot_out_of_Yocto_tree"><span class="tocnumber">5</span> <span class="toctext">Update your U-Boot out of Yocto tree</span></a></li>
 
</ul>
 
</div>
 
  
<h1><span class="mw-headline" id="Toolchain_installation_for_out_of_Yocto_builds"><span class="mw-headline-number">1</span> Toolchain installation for out of Yocto builds</span></h1>
+
To install the toolchain, follow {{Varlink2|Yocto Toolchain installation|{{#var:RELEASE_LINK}}}}.
<p>To install the toolchain, follow <span class="plainlinks"><a rel="nofollow" class="external text" href="http://variwiki.com/index.php?title=Yocto_Toolchain_installation&amp;release=RELEASE_SUMO_V2.2_DART-MX8M-MINI">Yocto Toolchain installation</a></span>.
+
 
</p>
+
= Build U-Boot out of Yocto tree =
<h1><span class="mw-headline" id="Build_U-Boot_out_of_Yocto_tree"><span class="mw-headline-number">2</span> Build U-Boot out of Yocto tree</span></h1>
+
Obtain sources:  
<p>Obtain sources:  
+
 
</p>
+
$ git clone {{#var:U-BOOT_GIT}} -b {{#var:U-BOOT_BRANCH}}
<pre>$ 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
$ cd uboot-imx
+
 
</pre>
+
Configure compilation environment:
<p>Configure compilation environment:
+
$ source {{#var:TOOLCHAIN_LOCATION}}
</p>
+
 
<pre>$ source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux
+
Cleanup everything:
</pre>
+
$ make mrproper
<p>Cleanup everything:
+
 
</p>
+
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
<pre>$ make mrproper
+
<br>
</pre>
 
<p><br>
 
 
Select configuration:
 
Select configuration:
</p>
+
$ make {{#var:U-BOOT_SD_DEFCONFIG}}
<pre>$ make imx8mm_var_dart_defconfig
+
 
</pre>
+
Build U-Boot:
<p>Build U-Boot:
+
$ make -j4
</p>
+
|
<pre>$ make -j4
+
Select one of the following configurations:
</pre>
+
<h1><span class="mw-headline" id="Build_boot_image"><span class="mw-headline-number">3</span> Build boot image</span></h1>
+
For booting from SD card/eMMC:
<p>The final boot image contains multiple firmware files. The following procedure builds the final image.
+
$ make {{#var:U-BOOT_SD_DEFCONFIG}}
</p><p>Create imx-boot-tools directory:
+
</p>
+
For booting from NAND flash:
<pre>$ mkdir imx-boot-tools
+
$ make {{#var:U-BOOT_NAND_DEFCONFIG}}
$ cd imx-boot-tools
+
 
</pre>
+
Build U-Boot:
<p>Download DDR  firmware:
+
 
</p>
+
$ make -j4
<pre>$ 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
+
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
$ cp firmware-imx-8.1.1/firmware/ddr/synopsys/* .
+
= Build boot image =
</pre>
+
The final boot image contains multiple firmware files. The following procedure builds the final image.
<p>Download imx_mkimage:
+
 
</p>
+
Create imx-boot-tools directory:
<pre>$ 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
+
$ mkdir imx-boot-tools
$ cp imx-mkimage/iMX8M/*.c imx-mkimage/iMX8M/*.sh imx-mkimage/scripts/pad_image.sh .
+
$ cd imx-boot-tools
</pre>
+
 
<p>Download and build ATF:
+
{{#ifeq: {{#var:SOC_FAMILY}} | imx8 |
</p>
+
 
<pre>$ 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
+
Obtain SC firmware:<br>
$ 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
+
Either build it by following the {{Varlink|Yocto_Build_SCFW|{{#var:RELEASE_LINK}}|Build SCFW from source code}} page, or just download the pre-built binary by running:
$ cp meta-variscite-imx/recipes-bsp/imx-mkimage/files/soc.mak .
+
$ wget {{#var:META_VARISCITE_GIT}}/raw/{{#var:META_VARISCITE_BRANCH}}/recipes-bsp/imx-sc-firmware/imx-sc-firmware/{{#var:SC_FIRMWARE}} -O scfw_tcm.bin
$ 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-*
+
Download SECO firmware:
</pre>
+
$ wget {{#var:NXP_FIRMWARE_URL}}/{{#var:NXP_FIRMWARE}}.bin
<pre>$ source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux
+
$ chmod +x {{#var:NXP_FIRMWARE}}.bin
$ unset LDFLAGS
+
$ ./{{#var:NXP_FIRMWARE}}.bin
$ make PLAT=imx8mm bl31
+
$ cp {{#var:NXP_FIRMWARE}}/firmware/seco/{{#var:SECO_FIRMWARE}} .
$ cp build/imx8mm/release/bl31.bin ..
+
|
$ cd ..
+
Download DDR {{#ifeq: {{#var:SOC}}|mx8mq|and HDMI|}} firmware:
</pre>
+
$ wget {{#var:NXP_FIRMWARE_URL}}/{{#var:NXP_FIRMWARE}}.bin
<p>Copy U-Boot binaries:
+
$ chmod +x {{#var:NXP_FIRMWARE}}.bin
</p>
+
$ ./{{#var:NXP_FIRMWARE}}.bin
<pre>$ cp ../tools/mkimage mkimage_uboot
+
$ cp {{#var:NXP_FIRMWARE}}/firmware/ddr/synopsys/* .
$ cp ../u-boot.bin .
+
{{#ifeq: {{#var:SOC}}|mx8mq|$ cp {{#var:NXP_FIRMWARE}}/firmware/hdmi/cadence/signed_* .|}}
$ 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 .
+
}}
</pre>
+
 
<p>Build boot image:
+
{{#ifeq: {{#var:SOC_FAMILY}}|imx8|
</p>
+
Download and build imx_mkimage:
<pre>$ make -f soc.mak clean
+
$ git clone {{#var:NXP_IMX_GIT}}/imx-mkimage -b {{#var:NXP_IMX_BRANCH}}
$ 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
+
$ cd imx-mkimage
</pre>
+
$ make
<h1><span class="mw-headline" id="Install_the_built_U-Boot_on_an_SD_card"><span class="mw-headline-number">4</span> Install the built U-Boot on an SD card</span></h1>
+
$ cp mkimage_imx8 {{#var:IMX_MKIMAGE_SOC}}/soc.mak {{#var:IMX_MKIMAGE_SOC}}/*.sh scripts/pad_image.sh ..
<p><br>
+
$ cd ..
</p>
+
|
<pre>$ sudo dd if=imx-boot-sd.bin of=/dev/sdX bs=1K seek=33 conv=fsync
+
Download imx_mkimage:
</pre>
+
$ git clone {{#var:NXP_IMX_GIT}}/imx-mkimage -b {{#var:NXP_IMX_BRANCH}}
<p>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:
+
$ cp imx-mkimage/iMX8M/*.c imx-mkimage/iMX8M/*.sh {{#ifeq: {{#var:FSL_BSP_VERSION}}|L4.14.78-1.0.0_ga|imx-mkimage/iMX8M/soc.mak|}} {{#ifeq: {{#var:YOCTO_NAME}}|Morty||imx-mkimage/scripts/pad_image.sh}} .
<br>
+
}}
</p>
+
 
<pre>$ sudo cp imx-boot.bin /media/rootfs/opt/images/...
+
Download and build ATF:
</pre>
+
$ git clone {{#var:NXP_IMX_GIT}}/imx-atf -b {{#var:NXP_IMX_BRANCH}}
<p>And eject the SD card gracefully from host machine.
+
{{#ifeq: {{#var:SOC_FAMILY}}|imx8m|
</p><p><br />
+
$ git clone {{#var:META_VARISCITE_GIT}} -b {{#var:META_VARISCITE_BRANCH}}
</p>
+
{{#ifeq: {{#var:FSL_BSP_VERSION}}|L4.14.78-1.0.0_ga||$ cp meta-variscite-imx/recipes-bsp/imx-mkimage/files/soc.mak .}}
<div class="note note-info">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>)</div>
+
|
<h1><span class="mw-headline" id="Update_your_U-Boot_out_of_Yocto_tree"><span class="mw-headline-number">5</span> Update your U-Boot out of Yocto tree</span></h1>
+
}}
 +
$ cd imx-atf
 +
{{#ifeq: {{#var:SOC_FAMILY}}| imx8m |
 +
{{#ifeq: {{#var:FSL_BSP_VERSION}}| L4.14.78-1.0.0_ga | $ git apply ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/* |
 +
{{#ifeq: {{#var:SOC}}|mx8mn| $ git apply ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/* |
 +
{{#ifeq: {{#var:SOC}}|mx8mm| $ git apply ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/imx8mm* ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/imx8m-* |
 +
{{#ifeq: {{#var:SOC}}|mx8mq| $ git apply ../meta-variscite-imx/recipes-bsp/imx-atf/imx-atf/imx8m-*|}} }} }} }} }}
 +
 
 +
$ source {{#var:TOOLCHAIN_LOCATION}}
 +
$ unset LDFLAGS
 +
$ make PLAT={{#var:IMX_ATF_PLAT}} bl31
 +
$ cp build/{{#var:IMX_ATF_PLAT}}/release/bl31.bin ..
 +
$ cd ..
 +
 
 +
Copy U-Boot binaries:
 +
$ cp ../tools/mkimage mkimage_uboot
 +
$ cp ../u-boot.bin .
 +
{{#ifeq: {{#var:SOC_FAMILY}}|imx8m|
 +
{{#ifeq: {{#var:FSL_BSP_VERSION}}| L4.14.78-1.0.0_ga |
 +
$ cp ../u-boot-nodtb.bin ../spl/u-boot-spl.bin ../arch/arm/dts/{{#var:DEFAULT_DTB}} .
 +
|
 +
{{#ifeq: {{#var:SOC}}|mx8mm|
 +
$ cp ../u-boot-nodtb.bin ../spl/u-boot-spl.bin ../arch/arm/dts/{{#var:DEFAULT_DTB}} ../arch/arm/dts/fsl-imx8mm-var-som.dtb .
 +
|
 +
$ cp ../u-boot-nodtb.bin ../spl/u-boot-spl.bin ../arch/arm/dts/{{#var:DEFAULT_DTB}} .
 +
}} }} }}
 +
 
 +
{{#ifeq: {{#var:SOC_FAMILY}}|imx8|
 +
Build boot image:
 +
$ make -f soc.mak clean
 +
$ make -f soc.mak SOC={{#var:IMX_MKIMAGE_SOC}} MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh flash
 +
$ mv flash.bin {{#var:U-BOOT_SD_IMAGE_NAME}}
 +
|
 +
{{#ifeq: {{#var:SOC}}|mx8mq|
 +
Build boot image:
 +
$ make -f soc.mak clean
 +
$ make -f soc.mak SOC={{#var:IMX_MKIMAGE_SOC}} dtbs={{#var:DEFAULT_DTB}} MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG={{#var:U-BOOT_SD_IMAGE_NAME}} flash_evk
 +
|
 +
{{#ifeq: {{#var:SOC}}|mx8mm|
 +
{{#ifeq: {{#var:FSL_BSP_VERSION}}| L4.14.78-1.0.0_ga |
 +
Build boot image:
 +
$ make -f soc.mak clean
 +
$ make -f soc.mak SOC={{#var:IMX_MKIMAGE_SOC}} dtbs={{#var:DEFAULT_DTB}} MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG={{#var:U-BOOT_SD_IMAGE_NAME}} flash_evk
 +
|
 +
Build boot image:
 +
$ make -f soc.mak clean
 +
$ make -f soc.mak SOC={{#var:IMX_MKIMAGE_SOC}} dtbs="{{#var:DEFAULT_DTB}} fsl-imx8mm-var-som.dtb" MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG={{#var:U-BOOT_SD_IMAGE_NAME}} flash_lpddr4_ddr4_evk
 +
}}
 +
|
 +
{{#ifeq: {{#var:SOC}}|mx8mn|
 +
Build boot image:
 +
$ make -f soc.mak clean
 +
$ make -f soc.mak SOC={{#var:IMX_MKIMAGE_SOC}} dtbs={{#var:DEFAULT_DTB}} MKIMG=./mkimage_imx8 PAD_IMAGE=./pad_image.sh CC=gcc OUTIMG={{#var:U-BOOT_SD_IMAGE_NAME}} flash_ddr4_evk|}} }} }} }} }}
 +
 
 +
= Install the built U-Boot on an SD card =
 +
{{#ifeq: {{#var:SOC_SERIES}}|imx8|
 +
<br>
 +
$ sudo dd if={{#var:U-BOOT_SD_IMAGE_NAME}} of=/dev/sdX bs=1K seek={{#var:U-BOOT_OFFSET}} conv=fsync
 +
|
 +
{{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A
 +
|<br>
 +
$ sudo dd if={{#var:U-BOOT_IMAGE_NAME}} of=/dev/sdX bs=1K seek=1; sync
 +
(Replace /dev/sdX with the correct device)
 +
|<br>
 +
$ 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:
 +
{{#ifeq: {{#var:SPL_SD_IMAGE_NAME}} | N/A
 +
|<br>
 +
$ sudo cp {{#var:U-BOOT_IMAGE_NAME}} /media/rootfs/opt/images/...
 +
|<br>
 +
$ 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|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 [[U-Boot 4.1.15 features#Environment handling commands|Environment handling commands]])}}
 +
 
 +
= Update your U-Boot out of Yocto tree =
 
<pre>
 
<pre>
 
$ git pull
 
$ git pull
 
</pre>
 
</pre>

Latest revision as of 14:41, 10 March 2020


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


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