[U-Boot] [PATCH] tools: mkimage: Add support for initialization table for Zynq and ZynqMP

Michal Simek michal.simek at xilinx.com
Mon Sep 26 08:17:02 CEST 2016


On 26.9.2016 08:12, Mike Looijmans wrote:
> On 22-09-16 11:25, Michal Simek wrote:
>> From: Mike Looijmans <mike.looijmans at topic.nl>
>>
>> The Zynq/ZynqMP boot.bin file contains a region for register
>> initialization
>> data. Filling in proper values in this table can reduce boot time
>> (e.g. about 50ms faster on QSPI boot) and also reduce the size of
>> the SPL binary.
>>
>> The table is a simple text file with register+data on each line. Other
>> lines are simply skipped. The file can be passed to mkimage using the
>> "-R" parameter.
>>
>> It is recommended to add reg init file to board folder.
>> For example:
>> CONFIG_BOOT_INIT_FILE="board/xilinx/zynqmp/xilinx_zynqmp_zcu102/reg.int
>>
>> Signed-off-by: Mike Looijmans <mike.looijmans at topic.nl>
>> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
>> ---
>>
>>   arch/arm/cpu/armv8/zynqmp/Kconfig |  7 +++++++
>>   arch/arm/mach-zynq/Kconfig        |  7 +++++++
>>   scripts/Makefile.spl              |  4 ++--
>>   tools/zynqimage.c                 | 28 ++++++++++++++++++++++++++++
>>   tools/zynqmpimage.c               | 28 ++++++++++++++++++++++++++++
>>   5 files changed, 72 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
>> b/arch/arm/cpu/armv8/zynqmp/Kconfig
>> index 1eedb39aa5a8..a3baae4f740c 100644
>> --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
>> +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
>> @@ -41,6 +41,13 @@ config SYS_CONFIG_NAME
>>         Based on this option
>> include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
>>         will be used for board configuration.
>>
>> +config BOOT_INIT_FILE
>> +    string "boot.bin init register filename"
>> +    default ""
>> +    help
>> +      Add register writes to boot.bin format (max 256 pairs).
>> +      Expect a table of register-value pairs, e.g. "0x12345678 0x4321"
>> +
>>   config ZYNQMP_USB
>>       bool "Configure ZynqMP USB"
>>
>> diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig
>> index a1175eea6ebb..44e16af863d7 100644
>> --- a/arch/arm/mach-zynq/Kconfig
>> +++ b/arch/arm/mach-zynq/Kconfig
>> @@ -44,4 +44,11 @@ config SYS_CONFIG_NAME
>>   config SYS_MALLOC_F_LEN
>>       default 0x600
>>
>> +config BOOT_INIT_FILE
>> +    string "boot.bin init register filename"
>> +    default ""
>> +    help
>> +      Add register writes to boot.bin format (max 256 pairs).
>> +      Expect a table of register-value pairs, e.g. "0x12345678 0x4321"
>> +
>>   endif
>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>> index 4994fa887ba3..b12b0c27dfe9 100644
>> --- a/scripts/Makefile.spl
>> +++ b/scripts/Makefile.spl
>> @@ -142,10 +142,10 @@ boot.bin: $(obj)/u-boot-spl.bin FORCE
>>       $(call if_changed,mkimage)
>>   else
>>   ifdef CONFIG_ARCH_ZYNQ
>> -MKIMAGEFLAGS_boot.bin = -T zynqimage
>> +MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(CONFIG_BOOT_INIT_FILE)
> 
> This should be:
> 
> MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE)
> 
> Without the "$(srctree)", out-of-tree builds will fail.
> 
>>   endif
>>   ifdef CONFIG_ARCH_ZYNQMP
>> -MKIMAGEFLAGS_boot.bin = -T zynqmpimage
>> +MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(CONFIG_BOOT_INIT_FILE)
> 
> Same here:
> MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R
> $(srctree)/$(CONFIG_BOOT_INIT_FILE)

Good. Will be fixed in v2.

Thanks,
Michal




More information about the U-Boot mailing list