2 .\" Copyright (c) 2013 David Chisnall
3 .\" All rights reserved.
5 .\" This software was developed by SRI International and the University of
6 .\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
7 .\" ("CTSRD"), as part of the DARPA CRASH research programme.
9 .\" This software was developed by SRI International and the University of
10 .\" Redistribution and use in source and binary forms, with or without
11 .\" modification, are permitted provided that the following conditions
13 .\" 1. Redistributions of source code must retain the above copyright
14 .\" notice, this list of conditions and the following disclaimer.
15 .\" 2. Redistributions in binary form must reproduce the above copyright
16 .\" notice, this list of conditions and the following disclaimer in the
17 .\" documentation and/or other materials provided with the distribution.
19 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
20 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 .Nd device tree compiler
42 .Op Fl b Ar boot_cpu_id
43 .Op Fl d Ar dependency_file
44 .Op Fl E Ar [no-]checker_name
45 .Op Fl H Ar phandle_format
46 .Op Fl I Ar input_format
47 .Op Fl O Ar output_format
48 .Op Fl o Ar output_file
52 .Op Fl V Ar blob_version
53 .Op Fl W Ar [no-]checker_name
58 utility converts flattened device tree (FDT) representations.
59 It is most commonly used to generate device tree blobs (DTB), the binary
60 representation of an FDT, from device tree sources (DTS), the ASCII text source
63 The binary can be written in two formats, binary and assembly.
64 The binary is identical to the in-memory representation and can be used
65 directly by firmware, loaders, and so on.
66 The assembly format, documented in
68 will produce the same binary format when assembled, but also includes some
69 global variables that refer to parts of the table.
70 This format is most commonly used to produce a kernel specific to a device,
71 with the device tree blob compiled in.
73 The options are as follows:
74 .Bl -tag -width indent
75 .It Fl d Ar dependency_file
76 Writes a dependency file understandable by make to the specified file.
77 This file can be included in a Makefile and will ensure that the output file
78 depends on the input file and any files that it includes.
79 This argument is only useful when the input is DTS, as only the source format
80 has a notion of inclusions.
81 .It Fl E Ar [no-]checker_name
82 Enable or disable a specified checker.
83 The argument is the name of the checker.
84 The full list of checkers is given in
87 Force the tool to attempt to generate the output, even if the input had errors.
89 Display the help text and exit.
90 .It Fl H Ar phandle_format
91 Specifies the type of phandle nodes to generate in the output.
94 .Bl -tag -width indent -compact
96 Generate the legacy linux,phandle nodes expected by older systems.
98 Generate the phandle nodes, as described in the ePAPR specification.
99 This is the most sensible option for device trees being used with
102 Generate both, for maximum compatibility.
104 .It Fl I Ar input_format
105 Specifies the input format.
108 .Bl -tag -width indent -compact
111 The binary representation of the FDT.
114 The ASCII representation of the FDT.
115 This is the default if the input format is not explicitly stated.
117 .It Fl O Ar output_format
118 Specifies the output format.
121 .Bl -tag -width indent -compact
123 Assembler source for generating a device tree blob, as described in
127 The binary representation of the FDT.
128 This is the default if the output format is not explicitly stated.
131 The ASCII representation of the FDT.
133 .It Fl o Ar output_file
134 The file to which to write the output.
136 The number of empty reservation table entries to pad the table with.
138 useful if you are generating a device tree blob for bootloader or similar that
139 needs to reserve some memory before passing control to the operating system.
141 The minimum size in bytes of the blob.
142 The blob will be padded after the strings table to ensure that it is the
144 This is useful for environments where the device tree blob must be modified in
147 The number of bytes of padding to add to the blob.
148 The blob will be padded after the strings table to ensure that it is the
150 This is useful for environments where the device tree blob must be modified in
152 .It Fl W Ar [no-]checker_name
153 Enable or disable a specified checker.
157 Sorts the properties and nodes in the tree.
158 This is mainly useful when using tools like
160 to compare two device tree sources.
161 .It Fl V Ar output_version
162 The version of the format to output.
163 This is only relevant for binary outputs, and only a value of 17 is currently
166 Display the tool version and exit.
171 The assembly format defines several globals that can be referred to from other
172 compilation units, in addition to any labels specified in the source.
175 .Bl -tag -width "dt_strings_start" -compact -offset indent
177 start of the device tree blob.
179 start of the header, usually identical to the start of the blob.
181 start of the reservation map.
183 start of the structure table.
185 end of the structure table.
187 start of the strings table.
189 end of the strings table.
191 end of the device tree blob.
194 The utility provides a number of semantic checks on the correctness of the
196 These can be disabled with the
200 .Fl W Ar no-type-phandle
201 will disable the phandle type check.
202 The supported checks are:
204 .Bl -tag -width "no-type-phandle" -compact -offset indent
206 Checks the type of the
210 Checks the type of the
214 Checks the type of the
218 Checks that all nodes with children have both
227 .Dl "dtc -o blob.S -O asm device.dts"
231 file from the device tree source
233 and print errors if any occur during parsing or property checking.
235 resulting file can be assembled and linked into a binary.
239 .Dl "dtc -o - -O dts -I dtb device.dtb"
241 will write the device tree source for the device tree blob
243 to the standard output.
244 This is useful when debugging device trees.
246 This utility is intended to be compatible with the device tree compiler
247 provided by elinux.org.
248 Currently, it implements the subset of features
249 required to build FreeBSD and others that have been requested by FreeBSD
254 input format is not supported.
255 This builds a tree from a Linux
256 .Pa /proc/device-tree ,
257 a file system hierarchy not found in FreeBSD, which instead exposes the DTB
258 directly via a sysctl.
260 The warnings and errors supported by the elinux.org tool are not documented.
261 This tool supports the warnings described in the
267 The device tree formats understood by this tool conform to the Power.org
268 Standard for Embedded Power Architecture Platform Requirements
270 except as noted in the
272 section and with the following exceptions for compatibility with the elinux.org
277 The target of cross references is defined to be a node name in the
278 specification, but is in fact a label.
281 The /include/ directive is not part of the standard, however it is implemented
282 with the semantics compatible with the elinux.org tool.
283 It must appear in the top level of a file, and imports a new root definition.
284 If a file, plus all of its inclusions, contains multiple roots then they are
286 All nodes that are present in the second but not the first are imported.
287 Any that appear in both are recursively merged, with properties from the second
288 replacing those from the first and properties child nodes being recursively
291 A dtc tool first appeared in
293 This version of the tool first appeared in
296 .An David T. Chisnall
298 Note: The fact that the tool and the author share the same initials is entirely
301 The device tree compiler does not yet support the following features:
305 Labels in the middle of property values.
306 This is only useful in the assembly output, and only vaguely useful there, so
307 is unlikely to be added soon.
309 Full paths, rather than labels, as the targets for phandles.
310 This is not very hard to add, but will probably not be added until something
314 The current version performs a very limited set of semantic checks on the tree.
315 This will be improved in future versions.