aboutsummaryrefslogtreecommitdiff
path: root/tools/mkimage.c
diff options
context:
space:
mode:
authorKever Yang <kever.yang@rock-chips.com>2020-03-30 11:56:24 +0800
committerTom Rini <trini@konsulko.com>2020-04-24 10:10:01 -0400
commitebfe611be91e0075c040588a30a9996519d30aa6 (patch)
treed8d41efeafbbb876a8b3a2cb8aad66e365d81821 /tools/mkimage.c
parent10d887ddfa4f94aa94cf7a6d3dd4f28a339a2f13 (diff)
downloadu-boot-ebfe611be91e0075c040588a30a9996519d30aa6.zip
u-boot-ebfe611be91e0075c040588a30a9996519d30aa6.tar.gz
u-boot-ebfe611be91e0075c040588a30a9996519d30aa6.tar.bz2
mkimage: fit_image: Add option to make fit header align
The image is usually stored in block device like emmc, SD card, make the offset of image data aligned to block(512 byte) can avoid data copy during boot process. eg. SPL boot from FIT image with external data: - SPL read the first block of FIT image, and then parse the header; - SPL read image data separately; - The first image offset is the base_offset which is the header size; - The second image offset is just after the first image; - If the offset of imge does not aligned, SPL will do memcpy; The header size is a ramdon number, which is very possible not aligned, so add '-B size'to specify the align size in hex for better performance. example usage: ./tools/mkimage -E -f u-boot.its -B 0x200 u-boot.itb Signed-off-by: Kever Yang <kever.yang@rock-chips.com> Reviewed-by: Punit Agrawal <punit1.agrawal@toshiba.co.jp> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'tools/mkimage.c')
-rw-r--r--tools/mkimage.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 0279f68..336376f 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -98,8 +98,9 @@ static void usage(const char *msg)
" -i => input filename for ramdisk file\n");
#ifdef CONFIG_FIT_SIGNATURE
fprintf(stderr,
- "Signing / verified boot options: [-E] [-k keydir] [-K dtb] [ -c <comment>] [-p addr] [-r] [-N engine]\n"
+ "Signing / verified boot options: [-E] [-B size] [-k keydir] [-K dtb] [ -c <comment>] [-p addr] [-r] [-N engine]\n"
" -E => place data outside of the FIT structure\n"
+ " -B => align size in hex for FIT structure and header\n"
" -k => set directory containing private keys\n"
" -K => write public keys to this .dtb file\n"
" -c => add comment in signature node\n"
@@ -144,7 +145,7 @@ static void process_args(int argc, char **argv)
int opt;
while ((opt = getopt(argc, argv,
- "a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx")) != -1) {
+ "a:A:b:B:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx")) != -1) {
switch (opt) {
case 'a':
params.addr = strtoull(optarg, &ptr, 16);
@@ -169,6 +170,15 @@ static void process_args(int argc, char **argv)
exit(EXIT_FAILURE);
}
break;
+ case 'B':
+ params.bl_len = strtoull(optarg, &ptr, 16);
+ if (*ptr) {
+ fprintf(stderr, "%s: invalid block length %s\n",
+ params.cmdname, optarg);
+ exit(EXIT_FAILURE);
+ }
+
+ break;
case 'c':
params.comment = optarg;
break;