Partition info block is available only for kernel image in RX-44 and RX-48 fiasco images.
112 lines
3.8 KiB
Plaintext
112 lines
3.8 KiB
Plaintext
Copyright (C) 2007-2011 pancake <pancake@youterm.com>
|
|
Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com>
|
|
|
|
SPECS FOR THE FIASCO FIRMWARE FILE FORMAT ffff!
|
|
-----------------------------------------------
|
|
|
|
This is final working version of FIASCO format. FIASCO image which
|
|
is generated by this spec is acceptable by Nokia flasher-3.5 and
|
|
unpack data same as FIASCO image generated by Nokia fiasco-gen. This
|
|
format is implemented in 0xFFFF and every image which I tested
|
|
(generated by 0xFFFF and fiasco-gen) was properly unpacked under
|
|
0xFFFF and flasher-3.5 with same result. Small difference is that
|
|
fiasco-gen add some unknown subsection block to image header
|
|
(type '4' or '/') which contains some messy characters... But if
|
|
these sections missing, flasher-3.5 working fine too. And old FIASCO
|
|
images (for N8x0) does not have these subsection...
|
|
|
|
|
|
FILE HEADER
|
|
|
|
1 byte = 0xb4 -- signature
|
|
4 bytes -- FW header length (big endian)
|
|
|
|
|
|
FW HEADER
|
|
|
|
4 bytes -- number of FW header blocks (big endian)
|
|
block {
|
|
1 byte -- type of block
|
|
0xE8 - Fiasco name
|
|
0x31 - FW name
|
|
1 byte -- length of block data
|
|
N bytes -- block data
|
|
}
|
|
|
|
|
|
IMAGE
|
|
|
|
1 byte = 0x54 -- signature
|
|
1 byte -- number of subsection blocks
|
|
block {
|
|
1 byte -- type of subsection block
|
|
0x2E - file data
|
|
0x2F - partition info
|
|
0x31 - version
|
|
0x32 - device & hw revisions (size of device is 16, hw revision 8)
|
|
0x33 - layout
|
|
0x34 - image data part block (one block for one data part)
|
|
1 byte -- length of subsection block
|
|
N bytes -- subsection block data
|
|
}
|
|
1 byte -- checksum of subsection data without signature (0xFF - xorpair)
|
|
N bytes -- image data
|
|
|
|
|
|
FILE DATA BLOCK
|
|
|
|
1 byte -- asic index (always APE - 0x01)
|
|
1 byte -- device type (always NAND - 0x01)
|
|
1 byte -- device index (always 0x00)
|
|
2 bytes -- checksum for the image contents (xorpair) (big endian)
|
|
12 bytes -- image name type (first byte is FF if is the last image)
|
|
4 bytes -- length of image data (big endian)
|
|
4 bytes -- load address of image data (big endian, unused always zero)
|
|
|
|
|
|
PARTITION INFO BLOCK
|
|
|
|
1 byte -- asic index (always APE - 0x01)
|
|
1 byte -- device type (always NAND - 0x01)
|
|
1 byte -- device index (always 0x00)
|
|
4 bytes -- partition version (always 0x00 0x00 0x00 0x00)
|
|
4 bytes -- spare (always 0xFF 0xFF 0xFF 0xFF)
|
|
4 bytes -- number of partition blocks (big endian)
|
|
block {
|
|
1 byte -- partition type (0x03 - kernel, 0x04 - initfs, 0x05 - rootfs)
|
|
1 byte -- partition attribute (0x01 - read/write, 0x02 - read-only)
|
|
4 bytes -- partition size (big endian, 0 - remaining space)
|
|
}
|
|
|
|
|
|
IMAGE DATA PART BLOCK
|
|
|
|
4 bytes -- unknown (always 0x00 0x00 0x00 0x00)
|
|
4 bytes -- offset (big endian)
|
|
4 bytes -- unknown (always 0x00 0x00 0x00 0x00)
|
|
4 bytes -- size (big endian)
|
|
N bytes -- partition name (prefix) in layout (may be omitted)
|
|
|
|
|
|
LAYOUT DATA BLOCK
|
|
|
|
N bytes of text data, e.g.:
|
|
|
|
mmc {
|
|
name = "internal";
|
|
partition {
|
|
fs_type = "vfat";
|
|
prefix = "mydocs";
|
|
no_create = true;
|
|
}
|
|
partition {
|
|
size = 2048;
|
|
fs_type = "ext3";
|
|
prefix = "home";
|
|
}
|
|
partition {
|
|
size = 768;
|
|
fs_type = "swap";
|
|
}
|
|
}
|