1 Chrome OS Flash Map Binding
2 ===========================
4 The device tree node which describes the contents of the firmware flash
8 - name = "flash" or "flash@<addr>";
10 (note there is no compatible string required.)
13 Sub-nodes describe each section of the flash. The idea is that the
14 sections cover the entire contents of the flash and thus describe its
15 entire contents. Gaps are allowed, but will generate warnings. Overlaps
16 are not allowed, although sections which contain nothing are ignored
17 and so can overlap with others.
21 - label : Label for this section (a user readable string)
26 - start offset of this section
27 - size of this section
29 - size : Size of this section (the start offset is assumed to be
30 immediately after the previous section.)
32 (note that only one of 'reg' and 'size' should be specified.)
34 - read-only : Boolean property, which if present, indicates that this
35 section is in read-only flash
37 - required : Indicates that this section is required for the firmware
38 to boot. If it is not present then there will be a vital piece
39 missing. This is used to mark the minimum sections that must be
40 present. For example, where there is a RO section and two RW
41 sections, only the RO section is marked required. Note that if
42 the firmware is built with only 'required' sections, then it will
43 only operate with non-verified boot.
45 - type : If present this describes the type of this section of the
46 flash. Allowable types are described below.
52 Here are described the section types and the required properties for
57 - ignored by the flash image creation tool (cros_bundle_firmware)
60 Blob : Contains data read from a list of files
61 - type = "blob <list_of_files>"
63 <list_of_files> is a comma-separated list of files to put into the
64 section. For example: type = "blob boot,dtb" means to put the files
65 'boot' and 'dtb' into this section. These files are just a convenient
66 names for files on the disk - they are set up (i.e. hard coded)
67 by the firmware bundler.
69 For blobs where there is more than one file, we provide a way to access
70 the content, through a sub-node for each entry. That subnode should have a
71 standard reg property (with offset and size). The name of the subnode is the
72 same as the name of the file. Using the previous example:
74 type = "blob boot,dtb";
79 reg = <0x12348 0x33dc>;
82 Currently supported files are:
83 - coreboot : A coreboot.rom file
84 - bootstub : An Nvidia Tegra BCT + bootloader
85 - signed : A signed bootstub (signed Nvidia Tegra BCT + bootloader)
86 - exynos-bl1 : A Samsung Exynos BL1 (first stage boot loader)
87 - exynos-bl2 : A Samsung Exynos BL2 (second stage boot loader)
88 This has special handling - please see below.
89 - boot : The U-Boot binary
90 - dtb : The device tree binary
91 - skeleton : The coreboot skeleton file
92 - gbb : Google Binary Block, containing settings and recovery bitmaps
94 Fmap : Contains a 'flashrom' FMAP which is a description of the flash
95 contents used by the 'flashrom' tool.
97 - ver-major : Major version number (normally 1)
98 - ver-minor : Minor version number (normally 0)
100 Wiped : Contains the same byte value throughout
102 - wipe-value : Value to put in section. For example:
103 wipe_value = <0> means that the section will be all zeroes
104 wipe_value = <0xff> means that the section will be all 0xff
106 Blobstring : Contains a single string
107 - type = "blobstring <name>"
109 <name> is the name of the string to include. The name is just a
110 convenient name for the string - the strings are set up (i.e.
111 hard-coded) by the firmware packer.
113 Currently supported names are:
114 - fwid : Firmware ID, made from the machine model and the Chrome OS
115 version (e.g. Google_Daisy.2401.0.2012_06_18_2004)
117 Keyblock : Contains a key block
118 - type = "keyblock <list_of_files>"
119 - keyblock : Filename (within key directory) of the key block to use,
120 e.g. keyblock = "firmware.keyblock"
121 - signprivate : Filename (within key directory) of the private key
122 to use. e.g. signprivate = "firmware_data_key.vbprivk"
123 - version : Version number to pass to vbutil
124 - kernelkey : Filename (within key directory) of the kernel key
125 to use. e.g. kernelkey = "kernel_subkey.vbpubk"
126 - preamble-flags : Value for preamble flags
128 <list_of_files> is as for blob.
130 The files are joined together and signed with vbutil to produce a
131 key block, and it is this key block which is put into the section.
138 This file is used to load U-Boot. Within U-Boot this is called SPL,
139 Secondary Program Loader. Samsung calls it BL2, boot loader 2, since
140 BL1 is the first think loaded by the IROM.
142 BL2 also contains a machine parameter block, which can be configured
143 from the firmware bundler. Each parameter consists of a 32-bit word with a
144 character tag. The currently-defined parameters are below. Note that
145 many of these come from the device tree, so we show the node and
146 property that they come from, and the value for the property where
151 a ARM clock frequency in MHz (/dmc 'arm-frequency')
152 b Boot source: Where to load U-Boot from:
154 20 : spi : Serial Flash (SPI)
155 32 : straps : Load according to the OM pins
156 33 : usb: USB download
157 f Memory frequency in MHz (/dmc 'clock-frequency')
158 i i2c base address for early access (meant for PMIC). This
159 is the physical register address of the relevant
160 i2c controller in the Exynos memory map.
161 m Memory type from /dmc property 'mem-type'
166 M Memory Manufacturer name from /dmc property 'mem-manuf'
167 0 : autodetect : Auto-detect if possible
168 1 : elpida : Elpida memory
169 2 : samsung : Samsung memory
170 r board rev GPIO numbers used to read board revision
171 (lower halfword=first gpio, upper=second gpio)
172 s Serial base address (physical register address of UART
173 in Exynos memory map)
175 Size of data to be loaded by SPL
176 (calculated by the bundle tool)
177 v Memory interleave size from /dmc property
178 'mem-interleave-size' (normally 31)
180 See smdk5250_spl.c and spl.h in the U-Boot source for the C structure.