diff options
author | Pali Rohár <pali.rohar@gmail.com> | 2012-06-23 17:03:25 +0200 |
---|---|---|
committer | Pali Rohár <pali.rohar@gmail.com> | 2012-06-23 17:03:25 +0200 |
commit | 58c0dbe2753753e2eff5e27f98453aa8a020235f (patch) | |
tree | 53d278054ff99246a7a24cb3bfe9316fb7d68b9b /doc | |
parent | 2110196958579fd26112ed358106edb2ef952b19 (diff) | |
download | 0xFFFF-58c0dbe2753753e2eff5e27f98453aa8a020235f.tar.bz2 |
Update fiasco documentation, now is on 95% complete
Diffstat (limited to 'doc')
-rw-r--r-- | doc/fiasco | 56 |
1 files changed, 31 insertions, 25 deletions
@@ -1,3 +1,6 @@ + Copyright (C) 2007-2011 pancake <pancake@youterm.com> + Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com> + SPECS FOR TEH FIASCO FIRMWARE FILE FORMAT ffff! ----------------------------------------------- @@ -8,36 +11,39 @@ SPECS FOR TEH FIASCO FIRMWARE FILE FORMAT ffff! FILE HEADER 1 byte = 0xb4 -- signature - 4 bytes -- firmware name length (big endian) - 6 bytes -- versioning info ( byte 4 is format version ) - N-6 bytes -- firmware name (zero fill) - - -PIECE HEADER - - 1 byte = 0x54 -- piece signature - 1 byte -- unknown: - N800/N810: - 0x02 - initfs, rootfs, kernel (2007) - 0x03 - xloader, 2nd, secondary, kernel (DIABLO) - N900: - 0x03 - kernel, rootfs, cmt-2nd, cmt-algo, cmt-mcusw - 0x04 - xloader, 2nd, secondary - 0x05 - mmc + 4 bytes -- FW header length (big endian) + + +FW HEADER + + 4 bytes -- count of blocks (big endian) + block { + 1 byte -- type of block + 0xE8 - header + 0x31 - FW name + 1 byte -- length of data + N bytes -- block data + } + + +IMAGE + + 1 byte = 0x54 -- signature + 1 byte -- number of subsections + 1 5 bytes -- unknown (always 0x2e 0x19 0x01 0x01 0x00) - 2 bytes -- checksum for the piece contents (xorpair) - 12 bytes -- piece name (first byte is FF if is the last) - 4 bytes -- piece size (big endian) + 2 bytes -- checksum for the image contents (xorpair) + 12 bytes -- image name type (first byte is FF if is the last) + 4 bytes -- image size (big endian) 4 bytes -- unknown (always 0x00 0x00 0x00 0x00) block { - 1 byte -- if (value '1'-'4' or '/') { ..there's a comment.. } + 1 byte -- type of subsection '1' - version - '2' - device & hw revisions + '2' - device & hw revisions (separated by char 0, max size of device is 16, hw revision 8) '3' - layout '4' - unknown '/' - unknown - 1 byte -- length of comment - N bytes -- comment + 1 byte -- length of subsection + N bytes -- subsection data } - N bytes -- piece data - + 1 byte -- unknown (maybe end of subsections?) + N bytes -- image data |