[PATCH] tools: imx8m_image: Change source path for DDR firmware to build dir

Schrempf Frieder frieder.schrempf at kontron.de
Wed Dec 11 14:37:54 CET 2019


Hi Baruch,

On 11.12.19 11:49, Baruch Siach wrote:
> Hi Frieder Schrempf,
> 
> On Wed, Dec 11 2019, Schrempf Frieder wrote:
> 
>> From: Frieder Schrempf <frieder.schrempf at kontron.de>
>>
>> The DDR firmware binaries are not part of the U-Boot source code, so
>> we should look for them in the build directory, where they need to be
>> copied to before building U-Boot.
>>
>> The ATF binary is already fetched from the build directory, but the
>> README files for the i.MX8M EVKs claim that it needs to be copied to
>> the source directory (which is still true for in-tree builds, but not
>> in general). Therefore we also fix the READMEs to use the build
>> directory as the correct location for all additional binary files.
>>
>> Sined-off-by: Frieder Schrempf <frieder.schrempf at kontron.de>
>> ---
>>   board/freescale/imx8mm_evk/README |  6 +++---
>>   board/freescale/imx8mq_evk/README |  8 ++++----
>>   tools/imx8m_image.sh              | 28 +++++++++++-----------------
>>   3 files changed, 18 insertions(+), 24 deletions(-)
>>
>> diff --git a/board/freescale/imx8mm_evk/README b/board/freescale/imx8mm_evk/README
>> index a885bc5c97..c908c0adc4 100644
>> --- a/board/freescale/imx8mm_evk/README
>> +++ b/board/freescale/imx8mm_evk/README
>> @@ -9,18 +9,18 @@ Quick Start
>>   
>>   Get and Build the ARM Trusted firmware
>>   ======================================
>> -Note: srctree is U-Boot source directory
>> +Note: builddir is U-Boot build directory (source directory for in-tree builds)
>>   Get ATF from: https://source.codeaurora.org/external/imx/imx-atf
>>   branch: imx_4.19.35_1.0.0
>>   $ make PLAT=imx8mm bl31
>> -$ cp build/imx8mm/release/bl31.bin $(srctree)
>> +$ cp build/imx8mm/release/bl31.bin $(builddir)
>>   
>>   Get the ddr and hdmi firmware
>>   =============================
>>   $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.0.bin
>>   $ chmod +x firmware-imx-8.0.bin
>>   $ ./firmware-imx-8.0
>> -$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(srctree)
>> +$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(builddir)
> 
> You might want to take the opportunity to fix the firmware directory
> name as well.

I will leave this to someone who knows more about this and once someone 
has decided which version of the firmware should actually be used.
Personally I have used 7.8 (from Yocto Warrior release) and 8.1 (from 
Yocto Zeus release) with my custom i.MX8MM board so far.

The discussion about this is currently also going on here: 
https://lists.denx.de/pipermail/u-boot/2019-December/393638.html

Thanks,
Frieder

> 
>>   
>>   Build U-Boot
>>   ============
>> diff --git a/board/freescale/imx8mq_evk/README b/board/freescale/imx8mq_evk/README
>> index c1d400bcf9..bbf69c60d8 100644
>> --- a/board/freescale/imx8mq_evk/README
>> +++ b/board/freescale/imx8mq_evk/README
>> @@ -9,19 +9,19 @@ Quick Start
>>   
>>   Get and Build the ARM Trusted firmware
>>   ======================================
>> -Note: srctree is U-Boot source directory
>> +Note: builddir is U-Boot build directory (source directory for in-tree builds)
>>   Get ATF from: https://source.codeaurora.org/external/imx/imx-atf
>>   branch: imx_4.14.62_1.0.0_beta
>>   $ make PLAT=imx8mq bl31
>> -$ cp build/imx8mq/release/bl31.bin $(srctree)
>> +$ cp build/imx8mq/release/bl31.bin $(builddir)
>>   
>>   Get the ddr and hdmi firmware
>>   =============================
>>   $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-7.9.bin
>>   $ chmod +x firmware-imx-7.9.bin
>>   $ ./firmware-imx-7.9.bin
>> -$ cp firmware-imx-7.9/firmware/hdmi/cadence/signed_hdmi_imx8m.bin $(srctree)
>> -$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(srctree)
>> +$ cp firmware-imx-7.9/firmware/hdmi/cadence/signed_hdmi_imx8m.bin $(builddir)
>> +$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(builddir)
> 
> Same here.
> 
> baruch
> 
>>   Build U-Boot
>>   ============
>> diff --git a/tools/imx8m_image.sh b/tools/imx8m_image.sh
>> index 603ba6e8f4..4959f9c835 100755
>> --- a/tools/imx8m_image.sh
>> +++ b/tools/imx8m_image.sh
>> @@ -10,41 +10,35 @@ post_process=$2
>>   
>>   blobs=`awk '/^SIGNED_HDMI/ {print $2} /^LOADER/ {print $2} /^SECOND_LOADER/ {print $2} /^DDR_FW/ {print $2}' $file`
>>   for f in $blobs; do
>> -	tmp=$srctree/$f
>> -
>>   	if [ $f = "spl/u-boot-spl-ddr.bin" ] || [ $f = "u-boot.itb" ]; then
>>   		continue
>>   	fi
>>   
>>   	if [ -f $f ]; then
>>   		continue
>> -	fi
>> -
>> -	if [ ! -f $tmp ]; then
>> +	else
>>   		echo "WARNING '$tmp' not found, resulting binary is not-functional" >&2
>>   		exit 1
>>   	fi
>> -
>> -	sed -in "s;$f;$tmp;" $file
>>   done
>>   
>>   if [ $post_process = 1 ]; then
>> -	if [ -f $srctree/lpddr4_pmu_train_1d_imem.bin ]; then
>> -		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_imem_pad.bin
>> -		objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_1d_dmem_pad.bin
>> -		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_imem_pad.bin
>> +	if [ -f lpddr4_pmu_train_1d_imem.bin ]; then
>> +		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 $srctree/lpddr4_pmu_train_2d_dmem.bin > lpddr4_pmu_train_2d_fw.bin
>> +		cat lpddr4_pmu_train_2d_imem_pad.bin lpddr4_pmu_train_2d_dmem.bin > lpddr4_pmu_train_2d_fw.bin
>>   		dd if=spl/u-boot-spl.bin of=spl/u-boot-spl-pad.bin bs=4 conv=sync
>>   		cat spl/u-boot-spl-pad.bin lpddr4_pmu_train_1d_fw.bin lpddr4_pmu_train_2d_fw.bin > spl/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 spl/u-boot-spl-pad.bin
>>   	fi
>> -	if [ -f $srctree/ddr4_imem_1d.bin ]; then
>> -		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/ddr4_imem_1d.bin ddr4_imem_1d_pad.bin
>> -		objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 $srctree/ddr4_dmem_1d.bin ddr4_dmem_1d_pad.bin
>> -		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/ddr4_imem_2d.bin ddr4_imem_2d_pad.bin
>> +	if [ -f ddr4_imem_1d.bin ]; then
>> +		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 ddr4_imem_1d.bin ddr4_imem_1d_pad.bin
>> +		objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 ddr4_dmem_1d.bin ddr4_dmem_1d_pad.bin
>> +		objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 ddr4_imem_2d.bin ddr4_imem_2d_pad.bin
>>   		cat ddr4_imem_1d_pad.bin ddr4_dmem_1d_pad.bin > ddr4_1d_fw.bin
>> -		cat ddr4_imem_2d_pad.bin $srctree/ddr4_dmem_2d.bin > ddr4_2d_fw.bin
>> +		cat ddr4_imem_2d_pad.bin ddr4_dmem_2d.bin > ddr4_2d_fw.bin
>>   		dd if=spl/u-boot-spl.bin of=spl/u-boot-spl-pad.bin bs=4 conv=sync
>>   		cat spl/u-boot-spl-pad.bin ddr4_1d_fw.bin ddr4_2d_fw.bin > spl/u-boot-spl-ddr.bin
>>   		rm -f ddr4_1d_fw.bin ddr4_2d_fw.bin ddr4_imem_1d_pad.bin ddr4_dmem_1d_pad.bin ddr4_imem_2d_pad.bin spl/u-boot-spl-pad.bin
> 
> 


More information about the U-Boot mailing list