summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2012-06-23 17:03:25 +0200
committerPali Rohár <pali.rohar@gmail.com>2012-06-23 17:03:25 +0200
commit58c0dbe2753753e2eff5e27f98453aa8a020235f (patch)
tree53d278054ff99246a7a24cb3bfe9316fb7d68b9b /doc
parent2110196958579fd26112ed358106edb2ef952b19 (diff)
download0xFFFF-58c0dbe2753753e2eff5e27f98453aa8a020235f.tar.bz2
Update fiasco documentation, now is on 95% complete
Diffstat (limited to 'doc')
-rw-r--r--doc/fiasco56
1 files changed, 31 insertions, 25 deletions
diff --git a/doc/fiasco b/doc/fiasco
index bf19f2f..a64219f 100644
--- a/doc/fiasco
+++ b/doc/fiasco
@@ -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