From: André Valentin Date: Wed, 23 Oct 2019 09:30:28 +0000 (+0200) Subject: tools/mkrasimage: Add support for 128k header size X-Git-Tag: v21.02.0-rc1~4712 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=6ae7ee7724f402237214d610afd3d29e66a3e6b7 tools/mkrasimage: Add support for 128k header size 128k header size support is needed for ZyXEL NBG6716. Signed-off-by: André Valentin --- diff --git a/tools/firmware-utils/src/mkrasimage.c b/tools/firmware-utils/src/mkrasimage.c index 8eee29cc08..cff3a533d1 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;