summaryrefslogtreecommitdiffstats
path: root/doc/fiasco
blob: 674c693ca4af76470e5790180ab7d2b7ab743233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 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

   N bytes          --  unknown


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";
        }
}