mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 00:32:04 +02:00
mkimage: fit: spl: Add an optional static offset for external data
When building a FIT with external data (-E), U-Boot proper may require absolute positioning for executing the external firmware. To acheive this use the (-p) switch, which will replace the amended 'data-offset' with 'data-position' indicating the absolute position of external data. It is considered an error if the requested absolute position overlaps with the initial data required for the compact FIT. Signed-off-by: Teddy Reed <teddy.reed@gmail.com>
This commit is contained in:
@@ -93,11 +93,13 @@ static void usage(const char *msg)
|
||||
" -f => input filename for FIT source\n");
|
||||
#ifdef CONFIG_FIT_SIGNATURE
|
||||
fprintf(stderr,
|
||||
"Signing / verified boot options: [-k keydir] [-K dtb] [ -c <comment>] [-r]\n"
|
||||
"Signing / verified boot options: [-E] [-k keydir] [-K dtb] [ -c <comment>] [-p addr] [-r]\n"
|
||||
" -E => place data outside of the FIT structure\n"
|
||||
" -k => set directory containing private keys\n"
|
||||
" -K => write public keys to this .dtb file\n"
|
||||
" -c => add comment in signature node\n"
|
||||
" -F => re-sign existing FIT image\n"
|
||||
" -p => place external data at a static position\n"
|
||||
" -r => mark keys used as 'required' in dtb\n");
|
||||
#else
|
||||
fprintf(stderr,
|
||||
@@ -136,7 +138,7 @@ static void process_args(int argc, char **argv)
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv,
|
||||
"a:A:b:cC:d:D:e:Ef:Fk:K:ln:O:rR:qsT:vVx")) != -1) {
|
||||
"a:A:b:cC:d:D:e:Ef:Fk:K:ln:p:O:rR:qsT:vVx")) != -1) {
|
||||
switch (opt) {
|
||||
case 'a':
|
||||
params.addr = strtoull(optarg, &ptr, 16);
|
||||
@@ -216,6 +218,13 @@ static void process_args(int argc, char **argv)
|
||||
if (params.os < 0)
|
||||
usage("Invalid operating system");
|
||||
break;
|
||||
case 'p':
|
||||
params.external_offset = strtoull(optarg, &ptr, 16);
|
||||
if (*ptr) {
|
||||
fprintf(stderr, "%s: invalid offset size %s\n",
|
||||
params.cmdname, optarg);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
case 'q':
|
||||
params.quiet = 1;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user