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;
{
.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 = "",
},
"\t-o <output file>\t - firmware output file, default: %s\n"
"\t-k <kernel file>\t\t - kernel file\n"
"\t-r <rootfs file>\t\t - rootfs file\n"
- "\t-B <board name>\t\t - choose firmware layout for specified board (XS2, XS5, RS)\n"
+ "\t-B <board name>\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);
}
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;