X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/71876430043e661a3a831d77dee7d8d8a54e1bfc..9f5f35abdaa8bab4a6ae424413bbd9e9e64a3c41:/tools/firmware-utils/src/mkfwimage.c diff --git a/tools/firmware-utils/src/mkfwimage.c b/tools/firmware-utils/src/mkfwimage.c index 0a2f74ee9..ff84d8319 100644 --- a/tools/firmware-utils/src/mkfwimage.c +++ b/tools/firmware-utils/src/mkfwimage.c @@ -34,9 +34,6 @@ typedef struct fw_layout_data { char name[PATH_MAX]; u_int32_t kern_start; - u_int32_t kern_len; - u_int32_t root_start; - u_int32_t root_len; u_int32_t kern_entry; u_int32_t firmware_max_length; } fw_layout_t; @@ -45,29 +42,44 @@ fw_layout_t fw_layout_data[] = { { .name = "XS2", .kern_start = 0xbfc30000, - .kern_len = 0x00140000, - .root_start = 0xbfc30000 + 0x00140000, - .root_len = 0x002C0000, .kern_entry = 0x80041000, .firmware_max_length= 0x00390000, }, { .name = "XS5", .kern_start = 0xbe030000, - .kern_len = 0x00140000, - .root_start = 0xbe030000 + 0x00140000, - .root_len = 0x002C0000, .kern_entry = 0x80041000, .firmware_max_length= 0x00390000, }, { .name = "RS", - .kern_start = 0x00000000, - .kern_len = 0x00140000, - .root_start = 0x00000000, - .root_len = 0x002C0000, + .kern_start = 0xbf030000, .kern_entry = 0x80060000, - .firmware_max_length= 0x00140000 + 0x002C0000, + .firmware_max_length= 0x00B00000, + }, + { + .name = "RSPRO", + .kern_start = 0xbf030000, + .kern_entry = 0x80060000, + .firmware_max_length= 0x00B00000, + }, + { + .name = "LS-SR71", + .kern_start = 0xbf030000, + .kern_entry = 0x80060000, + .firmware_max_length= 0x00640000, + }, + { + .name = "XS2-8", + .kern_start = 0xa8030000, + .kern_entry = 0x80041000, + .firmware_max_length= 0x006C0000, + }, + { + .name = "XM", + .kern_start = 0x9f050000, + .kern_entry = 0x80002000, + .firmware_max_length= 0x006A0000, }, { .name = "", }, @@ -173,7 +185,7 @@ static void usage(const char* progname) "\t-o \t - firmware output file, default: %s\n" "\t-k \t\t - kernel file\n" "\t-r \t\t - rootfs file\n" - "\t-B \t\t - choose firmware layout for specified board (XS2, XS5, RS)\n" + "\t-B \t\t - choose firmware layout for specified board (XS2, XS5, RS, XM)\n" "\t-h\t\t\t - this help\n", VERSION, progname, DEFAULT_VERSION, DEFAULT_OUTPUT_FILE); } @@ -243,14 +255,14 @@ static int create_image_layout(const char* kernelfile, const char* rootfsfile, c strcpy(rootfs->partition_name, "rootfs"); rootfs->partition_index = 2; - rootfs->partition_baseaddr = p->root_start; + rootfs->partition_baseaddr = kernel->partition_baseaddr + kernel->partition_length; rootfs->partition_length = p->firmware_max_length - kernel->partition_length; rootfs->partition_memaddr = 0x00000000; rootfs->partition_entryaddr = 0x00000000; strncpy(rootfs->filename, rootfsfile, sizeof(rootfs->filename)); -printf("kernel: %d %d\n", kernel->partition_length, kernel->partition_baseaddr); -printf("root: %d %d\n", rootfs->partition_length, rootfs->partition_baseaddr); +printf("kernel: %d 0x%08x\n", kernel->partition_length, kernel->partition_baseaddr); +printf("root: %d 0x%08x\n", rootfs->partition_length, rootfs->partition_baseaddr); im->part_count = 2; return 0;