All fields are big endian.
Code:enum CODE_TYPE{ TYPE_BOOT = 1, CRAMFS, CONFIG }; struct FileHeader{ u16 num; // enum CODE_TYPE u32 pkg_offset; // offset in file u32 flash_offset; // offset in flash u32 size; char mustBeZero[18]; }; struct Superblock{ u32 crc16; // Sic! 16-bit CRC in 32-bit field. u32 magic; // BE 73 15 04 u32 must_be_3; // unknown. u32 min_max_config_size; // 0x20000 u32 zero0; u32 zero1; u32 min_flash; // 0x400000 u32 min_ram; // 0x1000000 char name[16]; // "SL-500" or "SL-1000" char zero2[0x2A0-0x30]; u16 ver[6]; char zero3[0x30A-0x2AC]; FileHeader file_hdrs[3]; u8 data[1]; // flash data };