diff options
Diffstat (limited to 'tools/firmware-utils/src/mkbrnimg.c')
| -rw-r--r-- | tools/firmware-utils/src/mkbrnimg.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/tools/firmware-utils/src/mkbrnimg.c b/tools/firmware-utils/src/mkbrnimg.c index fff92c4ef66..b7a73ff59d2 100644 --- a/tools/firmware-utils/src/mkbrnimg.c +++ b/tools/firmware-utils/src/mkbrnimg.c @@ -32,9 +32,14 @@ static uint32_t crc32[1<<BPB]; +static char *output_file = "default-brnImage"; +static uint32_t magic = 0x12345678; +static char *signature = "BRNDTW502"; +static uint32_t crc32_poly = 0x2083b8ed; + static void init_crc32() { - const uint32_t poly = ntohl(0x2083b8ed); + const uint32_t poly = ntohl(crc32_poly); int n; for (n = 0; n < 1<<BPB; n++) { @@ -61,21 +66,17 @@ static void usage(const char *) __attribute__ (( __noreturn__ )); static void usage(const char *mess) { fprintf(stderr, "Error: %s\n", mess); - fprintf(stderr, "Usage: mkbrnimg [-o output_file] [-m magic] [-s signature] kernel_file [additional files]\n"); + fprintf(stderr, "Usage: mkbrnimg [-o output_file] [-m magic] [-s signature] [-p crc32 poly] kernel_file [additional files]\n"); fprintf(stderr, "\n"); exit(1); } -static char *output_file = "default-brnImage"; -static uint32_t magic = 0x12345678; -static char *signature = "BRNDTW502"; - static void parseopts(int *argc, char ***argv) { char *endptr; int res; - while ((res = getopt(*argc, *argv, "o:m:s:")) != -1) { + while ((res = getopt(*argc, *argv, "o:m:s:p:")) != -1) { switch (res) { default: usage("Unknown option"); @@ -91,6 +92,11 @@ static void parseopts(int *argc, char ***argv) case 's': signature = optarg; break; + case 'p': + crc32_poly = strtoul(optarg, &endptr, 0); + if (endptr == optarg || *endptr != 0) + usage("'crc32 poly' must be a decimal or hexadecimal 32-bit value"); + break; } } *argc -= optind; @@ -136,7 +142,7 @@ static void appendfile(int outfd, char *path, int kernel) { // write padding padded_len = ((len + sizeof(footer) + sizeof(padding) - 1) & ~(sizeof(padding) - 1)) - sizeof(footer); - fprintf(stderr, "len=%08x padded_len=%08x\n", len, padded_len); + fprintf(stderr, "len=%08zx padded_len=%08zx\n", len, padded_len); write(outfd, padding, padded_len - len); // write footer |
