.
.TP
.B \-h
+.TQ
+.B \-\-help
Print a help message and exit.
.
.TP
.B \-l
+.TQ
+.B \-\-list
.B mkimage
lists the information contained in the header of an existing U-Boot image.
.
.TP
.B \-s
+.TQ
+.B \-\-no\-copy
Don't copy in the image data. Depending on the image type, this may create
just the header, everything but the image data, or nothing at all.
.
.TP
.BI \-T " image-type"
+.TQ
+.BI \-\-type " image-type"
Parse image file as
.IR image-type .
Pass
.
.TP
.B \-q
+.TQ
+.B \-\-quiet
Quiet. Don't print the image header.
.
.TP
.B \-v
+.TQ
+.B \-\-verbose
Verbose. Print file names as they are added to the image.
.
.TP
.B \-V
+.TQ
+.B \-\-version
Print version information and exit.
.
.SS General image-creation options
.
.TP
.BI \-A " architecture"
+.TQ
+.BI \-\-architecture " architecture"
Set the architecture. Pass
.B \-h
as the architecture to see the list of supported architectures. If
.
.TP
.BI \-O " os"
+.TQ
+.BI \-\-os " os"
Set the operating system. The U-Boot
.I bootm
command changes boot method based on the OS type.
.
.TP
.BI \-C " compression-type"
+.TQ
+.BI \-\-compression " compression-type"
Set the compression type. The image data should have already been compressed
using this compression type.
.B mkimage
.
.TP
.BI \-a " load-address"
+.TQ
+.BI \-\-load\-address " load-address"
Set the absolute address to load the image data to.
.I load-address
will be interpreted as a hexadecimal number.
.
.TP
.BI \-e " entry-point"
+.TQ
+.BI \-\-entry\-point " entry-point"
Set the absolute address of the image entry point. The U-Boot
.I bootm
command will jump to this address after loading the image.
.
.TP
.BI \-n " image-name"
+.TQ
+.BI \-\-primary\-image " image-name"
Set the image name to
.IR image-name .
.
.TP
.BI \-R " secondary-image-name"
+.TQ
+.BI \-\-secondary\-image " image-name"
Some image types support a second image for additional data. For these types,
use
.B \-R
.
.TP
.BI \-d " image-data-file"
+.TQ
+.BI \-\-image " image-data-file"
Use image data from
.IR image-data-file .
If the
.
.TP
.B \-x
+.TQ
+.B \-\-xip
Set the
.I XIP
(execute in place) flag. The U-Boot
.
.TP
.BI \-b " device-tree-file"
+.TQ
+.BI \-\-device\-tree " device-tree-file"
Appends the device tree binary file (.dtb) to the FIT.
.
.TP
.BI \-c " comment"
+.TQ
+.BI \-\-comment " comment"
Specifies a comment to be added when signing. This is typically a message which
describes how the image was signed or some other useful information.
.
.TP
.BI \-D " dtc-options"
+.TQ
+.BI \-\-dtcopts " dtc-options"
Provide additional options to the device tree compiler when creating the image.
See
.BR dtc (1)
.
.TP
.BI \-E
+.TQ
+.BI \-\-external
After processing, move the image data outside the FIT and store a data offset
in the FIT. Images will be placed one after the other immediately after the FIT,
with each one aligned to a 4-byte boundary. The existing \(oqdata\(cq property
.
.TP
.BI \-B " alignment"
+.TQ
+.BI \-\-alignment " alignment"
The alignment, in hexadecimal, that external data will be aligned to. This
option only has an effect when \-E is specified.
.
.TP
.BI \-p " external-position"
+.TQ
+.BI \-\-position " external-position"
Place external data at a static external position. Instead of writing a
\(oqdata-offset\(cq property defining the offset from the end of the FIT,
.B \-p
.
.TP
\fB\-f \fIimage-tree-source-file\fR | \fBauto
+.TQ
+\fB\-\-fit \fIimage-tree-source-file\fR | \fBauto
Image tree source file that describes the structure and contents of the
FIT image.
.IP
.
.TP
.B \-F
+.TQ
+.B \-\-update
Indicates that an existing FIT image should be modified. No dtc compilation will
be performed and
.B \-f
.
.TP
.BI \-i " ramdisk-file"
+.TQ
+.BI \-\-initramfs " ramdisk-file"
Append a ramdisk or initramfs file to the image.
.
.TP
.BI \-k " key-directory"
+.TQ
+.BI \-\-key\-dir " key-directory"
Specifies the directory containing keys to use for signing. This directory
should contain a private key file
.IR name .key
.
.TP
.BI \-G " key-file"
+.TQ
+.BI \-\-key\-file " key-file"
Specifies the private key file to use when signing. This option may be used
instead of \-k.
.
.TP
.BI \-K " key-destination"
+.TQ
+.BI \-\-key\-dest " key-destination"
Specifies a compiled device tree binary file (typically .dtb) to write
public key information into. When a private key is used to sign an image,
the corresponding public key is written into this file for for run-time
.
.TP
.BI \-g " key-name-hint"
+.TQ
+.BI \-\-key\-name\-hint " key-name-hint"
Overrides the signature node's \(oqkey-name-hint\(cq property. This is
especially useful when signing an image with
.BR "\-f auto" .
.
.TP
.BI \-o " crypto" , checksum
+.TQ
+.BI \-\-algo " crypto" , checksum
Specifies the algorithm to be used for signing a FIT image. The default is
taken from the signature node's \(oqalgo\(cq property.
The valid values for
.
.TP
.B \-r
+.TQ
+.B \-\-key\-required
Specifies that keys used to sign the FIT are required. This means that they
must be verified for the image to boot. Without this option, the verification
will be optional (useful for testing but not for release).
.
.TP
.BI \-N " engine"
+.TQ
+.BI \-\-engine " engine"
The openssl engine to use when signing and verifying the image. For a complete
list of available engines, refer to
.BR engine (1).
.
.TP
.B \-t
+.TQ
+.B \-\-touch
Update the timestamp in the FIT.
.IP
Normally the FIT timestamp is created the first time mkimage runs,
#include "mkimage.h"
#include "imximage.h"
#include <fit_common.h>
+#include <getopt.h>
#include <image.h>
#include <version.h>
#ifdef __linux__
fprintf(stderr, " %s -V ==> print version information and exit\n",
params.cmdname);
fprintf(stderr, "Use '-T list' to see a list of available image types\n");
+ fprintf(stderr, "Long options are available; read the man page for details\n");
exit(EXIT_FAILURE);
}
return 0;
}
+static const char optstring[] =
+ "a:A:b:B:c:C:d:D:e:Ef:Fg:G:i:k:K:ln:N:o:O:p:qrR:stT:vVx";
+
+static const struct option longopts[] = {
+ { "load-address", required_argument, NULL, 'a' },
+ { "architecture", required_argument, NULL, 'A' },
+ { "device-tree", required_argument, NULL, 'b' },
+ { "alignment", required_argument, NULL, 'B' },
+ { "comment", required_argument, NULL, 'c' },
+ { "compression", required_argument, NULL, 'C' },
+ { "image", required_argument, NULL, 'd' },
+ { "dtcopts", required_argument, NULL, 'D' },
+ { "entry-point", required_argument, NULL, 'e' },
+ { "external", no_argument, NULL, 'E' },
+ { "fit", required_argument, NULL, 'f' },
+ { "update", no_argument, NULL, 'F' },
+ { "key-name-hint", required_argument, NULL, 'g' },
+ { "key-file", required_argument, NULL, 'G' },
+ { "help", no_argument, NULL, 'h' },
+ { "initramfs", required_argument, NULL, 'i' },
+ { "key-dir", required_argument, NULL, 'k' },
+ { "key-dest", required_argument, NULL, 'K' },
+ { "list", no_argument, NULL, 'l' },
+ { "config", required_argument, NULL, 'n' },
+ { "engine", required_argument, NULL, 'N' },
+ { "algo", required_argument, NULL, 'o' },
+ { "os", required_argument, NULL, 'O' },
+ { "position", required_argument, NULL, 'p' },
+ { "quiet", no_argument, NULL, 'q' },
+ { "key-required", no_argument, NULL, 'r' },
+ { "secondary-config", required_argument, NULL, 'R' },
+ { "no-copy", no_argument, NULL, 's' },
+ { "touch", no_argument, NULL, 't' },
+ { "type", required_argument, NULL, 'T' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "version", no_argument, NULL, 'V' },
+ { "xip", no_argument, NULL, 'x' },
+};
+
static void process_args(int argc, char **argv)
{
char *ptr;
char *datafile = NULL;
int opt;
- while ((opt = getopt(argc, argv,
- "a:A:b:B:c:C:d:D:e:Ef:Fg:G:k:i:K:ln:N:p:o:O:rR:qstT:vVx")) != -1) {
+ while ((opt = getopt_long(argc, argv, optstring,
+ longopts, NULL)) != -1) {
switch (opt) {
case 'a':
params.addr = strtoull(optarg, &ptr, 16);