From 6ae7ee7724f402237214d610afd3d29e66a3e6b7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Valentin?= Date: Wed, 23 Oct 2019 11:30:28 +0200 Subject: [PATCH] tools/mkrasimage: Add support for 128k header size MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 128k header size support is needed for ZyXEL NBG6716. Signed-off-by: André Valentin --- tools/firmware-utils/src/mkrasimage.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/firmware-utils/src/mkrasimage.c b/tools/firmware-utils/src/mkrasimage.c index 8eee29cc086a..cff3a533d115 100644 --- a/tools/firmware-utils/src/mkrasimage.c +++ b/tools/firmware-utils/src/mkrasimage.c @@ -70,6 +70,7 @@ static char *progname; static char *board_name = 0; static char *version_name = 0; static unsigned int rootfs_size = 0; +static unsigned int header_length = HEADER_PARTITION_LENGTH; static struct file_info kernel = { NULL, NULL, 0 }; static struct file_info rootfs = { NULL, NULL, 0 }; @@ -144,6 +145,7 @@ void usage(int status) " -v version string\n" " -b name of board to generate image for\n" " -o name of output image\n" + " -l length of header, default 65536\n" " -h show this screen\n" ); @@ -334,7 +336,7 @@ int build_image() board_header = generate_board_header(kernel_header, rootfs_header, board_name); /* Prepare output file */ - out.size = HEADER_PARTITION_LENGTH + rootfs_out.size; + out.size = header_length + rootfs_out.size; if (kernel.name) out.size += kernel.size; out.data = malloc(out.size); @@ -345,7 +347,7 @@ int build_image() memcpy(out.data + ROOTFS_HEADER_LEN, board_header, BOARD_HEADER_LEN); if (kernel.name) memcpy(out.data + ROOTFS_HEADER_LEN + BOARD_HEADER_LEN, kernel_header, KERNEL_HEADER_LEN); - ptr = HEADER_PARTITION_LENGTH; + ptr = header_length; memcpy(out.data + ptr, rootfs_out.data, rootfs_out.size); ptr += rootfs_out.size; if (kernel.name) @@ -410,7 +412,7 @@ int main(int argc, char *argv[]) while (1) { int c; - c = getopt(argc, argv, "b:k:o:r:s:v:h"); + c = getopt(argc, argv, "b:k:o:r:s:v:l:h"); if (c == -1) break; @@ -436,6 +438,9 @@ int main(int argc, char *argv[]) case 'v': version_name = optarg; break; + case 'l': + sscanf(optarg, "%u", &header_length); + break; default: usage(EXIT_FAILURE); break; -- 2.30.2