doc: dts: add more explanations, with diagrams
Re-work the introductory sections of the devicetree documentation, adding several figures and cross-references to other useful parts of the documentation. Signed-off-by: Marti Bolivar <marti.bolivar@nordicsemi.no>
|
@ -1,177 +1,327 @@
|
|||
.. _device-tree:
|
||||
|
||||
Device Tree
|
||||
###########
|
||||
Devicetree
|
||||
##########
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 2
|
||||
Zephyr uses the *devicetree* data structure to describe the hardware available
|
||||
on a board, as well as its initial configuration in an application. Note that
|
||||
"devicetree" -- without spaces -- is preferred to "device tree". The
|
||||
`Devicetree specification`_ fully defines this data structure and its source
|
||||
and binary representations.
|
||||
|
||||
.. _device-tree-intro:
|
||||
|
||||
Introduction
|
||||
************
|
||||
|
||||
Device tree is a way of describing hardware and configuration information
|
||||
for boards. Device tree was adopted for use in the Linux kernel for the
|
||||
PowerPC architecture. However, it is now in use for ARM and other
|
||||
architectures.
|
||||
.. _Devicetree specification: https://www.devicetree.org/
|
||||
|
||||
The device tree is a data structure for dynamically describing hardware
|
||||
using a Device Tree Source (DTS) data structure language, instead of
|
||||
hard coding every detail of a board's hardware into the operating system.
|
||||
This figure shows how devicetree fits into the Zephyr build system:
|
||||
|
||||
In Linux, DTS is compiled into a compact Device Tree Blob (DTB) using a Device
|
||||
Tree Compiler (DTC), then the hardware-describing DTB is passed to the operating
|
||||
system at boot time. This allows the same compiled Linux kernel to support
|
||||
different hardware configurations within an architecture family (e.g., ARM,
|
||||
x86, PowerPC) and moves a significant part of the hardware description out of
|
||||
the kernel binary itself.
|
||||
.. figure:: zephyr_dt_build_flow.png
|
||||
:figclass: align-center
|
||||
|
||||
For larger systems, the flexibility this offers offsets the extra runtime memory
|
||||
overhead incurred. But the primary targets for Zephyr
|
||||
applications are small micro-controller systems with limited memory
|
||||
resources. So instead of requiring the additional runtime memory
|
||||
to store the DTB blob and the code to parse it, the DTS information
|
||||
is used at compile time.
|
||||
Devicetree build flow
|
||||
|
||||
Device tree uses a specific format to describe the device nodes in a system.
|
||||
This format is described in the `Device Tree Specification`_.
|
||||
Zephyr's build system can use a devicetree to generate C language code. This
|
||||
code generation uses rules in additional files called :ref:`devicetree bindings
|
||||
<bindings>` to control how devicetree data is converted to C definitions. The
|
||||
generated code can be included by Zephyr :ref:`device drivers <device_drivers>`
|
||||
and other C sources. The C macros generated by this process all begin with
|
||||
``DT_``.
|
||||
|
||||
.. _Device Tree Specification: https://github.com/devicetree-org/devicetree-specification/releases
|
||||
This differs significantly from how devicetree is used on Linux. The
|
||||
Linux kernel would instead read the entire devicetree data structure in its
|
||||
binary form, parsing it at runtime in order to load and initialize device
|
||||
drivers. Zephyr does not work this way because the size of the devicetree
|
||||
binary and associated handling code would be too large to fit comfortably on
|
||||
the relatively constrained devices Zephyr supports.
|
||||
|
||||
More device tree information can be found at the `device tree repository`_.
|
||||
As the name indicates, a devicetree is a tree. The human-readable text format
|
||||
for this tree is called DTS (for devicetree source), and is defined in the
|
||||
Devicetree Specification. Here is an example DTS file:
|
||||
|
||||
.. _device tree repository: https://git.kernel.org/pub/scm/utils/dtc/dtc.git
|
||||
.. code-block:: none
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
System build requirements
|
||||
*************************
|
||||
/ {
|
||||
a-node {
|
||||
subnode_label: a-sub-node {
|
||||
foo = <3>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
The Zephyr device tree feature requires a device tree compiler (DTC) and Python
|
||||
YAML packages. Refer to the installation guide for your specific host OS:
|
||||
This example has three nodes:
|
||||
|
||||
* :ref:`installing_zephyr_win`
|
||||
* :ref:`installation_linux`
|
||||
* :ref:`installing_zephyr_mac`
|
||||
#. A root node
|
||||
#. A node named ``a-node``, which is a child of the root node
|
||||
#. A node named ``a-sub-node``, which is a child of ``a-node``
|
||||
|
||||
Nodes can be given *labels*, which are unique shorthands that can be used to
|
||||
refer to the labeled node elsewhere in the devicetree. Above, ``a-sub-node``
|
||||
has label ``subnode_label``.
|
||||
|
||||
Zephyr and Device Tree
|
||||
Devicetree nodes have *paths* identifying their locations in the tree. Like
|
||||
Unix file system paths, devicetree paths are strings separated by slashes
|
||||
(``/``), and the root node's path is a single slash: ``/``. Otherwise, each
|
||||
node's path is formed by concatenating the node's ancestors' names with the
|
||||
node's own name, separated by slashes. For example, the full path to
|
||||
``a-sub-node`` is ``/a-node/a-sub-node``.
|
||||
|
||||
Devicetree nodes can also have *properties*. Properties are name/value
|
||||
pairs. The values are simple byte arrays. Node ``a-sub-node`` has a property
|
||||
named ``foo``, whose value is a 32-bit big-endian unsigned integer with value
|
||||
3. The size and type of ``foo``\ 's value are implied by the enclosing angle
|
||||
brackets (``<`` and ``>``) in the DTS. Refer to the Devicetree Specification
|
||||
for a complete list of ways to write a property value in a DTS file.
|
||||
|
||||
In practice, devicetree nodes correspond to some hardware, and the node
|
||||
hierarchy reflects the hardware's physical layout. For example, let's consider
|
||||
a board with three I2C peripherals connected to an I2C bus master on an SoC,
|
||||
like this:
|
||||
|
||||
.. figure:: zephyr_dt_i2c_high_level.png
|
||||
:alt: representation of a board with three I2C peripherals
|
||||
:figclass: align-center
|
||||
|
||||
Nodes corresponding to the I2C bus master and each I2C peripheral would be
|
||||
present in this board's devicetree. Reflecting the hardware layout, the
|
||||
devicetree's peripheral nodes would be children of the bus master node. Similar
|
||||
conventions exist for representing other types of hardware in devicetree.
|
||||
|
||||
The corresponding DTS would look something like this:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/ {
|
||||
soc {
|
||||
i2c-bus-master {
|
||||
i2c-peripheral-1 {
|
||||
};
|
||||
i2c-peripheral-2 {
|
||||
};
|
||||
i2c-peripheral-3 {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Properties are used in practice to describe or configure the hardware the node
|
||||
represents. For example, an I2C peripheral's node has a property whose value is
|
||||
the peripheral's address on the bus.
|
||||
|
||||
Here's a tree representing the same example, but with real-world node
|
||||
names and properties you might see when working with I2C devices.
|
||||
|
||||
.. figure:: zephyr_dt_i2c_example.png
|
||||
:figclass: align-center
|
||||
|
||||
I2C devicetree example with real-world names and properties
|
||||
|
||||
Above, node names -- like ``i2c@40003000`` -- are at the top of each node, with
|
||||
a gray background, except for the root node, which is shown using its path
|
||||
``/``. Properties are shown as ``name=value`` pairs below the node names.
|
||||
|
||||
Some important properties are:
|
||||
|
||||
- **compatible**: this says what "kind" of device the node represents. Its
|
||||
value is a null-terminated string in the format "vendor,device", like
|
||||
``"avago,apds9960"``, or a sequence of these, like ``"ti,hdc",
|
||||
"ti,hdc1010"``. The build system uses the compatible property to find the
|
||||
right bindings for the node.
|
||||
- **label**: the device's name according to Zephyr's :ref:`device_drivers`. The
|
||||
value can be passed to :c:func:`device_get_binding()` to retrieve the
|
||||
corresponding driver-level :ref:`struct device* <device_struct>`. This
|
||||
pointer can then be passed to the correct driver API by application code to
|
||||
interact with the device. For example, calling
|
||||
``device_get_binding("I2C_0")`` would return a pointer to a device
|
||||
structure which could be passed to :ref:`I2C API <i2c_api>` functions like
|
||||
:c:func:`i2c_transfer()`. The generated C header will also contain a macro
|
||||
which expands to this string.
|
||||
- **reg**: information used to address the device. This could be a
|
||||
memory-mapped I/O address range (as with ``i2c@40003000``\ 's reg property),
|
||||
an I2C bus address (as with ``apds9960@39`` and its devicetree siblings), a
|
||||
SPI chip select line, or some other value depending on the kind of device the
|
||||
node represents.
|
||||
|
||||
This tree has the following DTS.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/ {
|
||||
soc {
|
||||
i2c@40003000 {
|
||||
compatible = "nordic,nrf-twim";
|
||||
label = "I2C_0";
|
||||
reg = <0x40003000 0x1000>;
|
||||
|
||||
apds9960@39 {
|
||||
compatible = "avago,apds9960";
|
||||
label = "APDS9960";
|
||||
reg = <0x39>;
|
||||
};
|
||||
ti_hdc@43 {
|
||||
compatible = "ti,hdc", "ti,hdc1010";
|
||||
label = "HDC1010;
|
||||
reg = <0x43>;
|
||||
};
|
||||
mma8652fc@1d {
|
||||
compatible = "nxp,fxos8700", "nxp,mma8652fc";
|
||||
label = "MMA8652FC";
|
||||
reg = <0x1d>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Input and output files
|
||||
**********************
|
||||
|
||||
Device Tree provides a unified description of a hardware system used in an
|
||||
application. It is used in Zephyr to describe hardware and provide a boot-time
|
||||
configuration of this hardware.
|
||||
The first figure in the :ref:`device-tree-intro` shows how devicetree fits into
|
||||
the Zephyr build system. This section describes the input and output files in
|
||||
more detail.
|
||||
|
||||
In Zephyr, the device tree is also used to describe Zephyr-specific
|
||||
configuration information. This Zephyr-specific information augments the device
|
||||
tree descriptions and sits on top of it, rather than diverging from it. The
|
||||
main reason for this is to leverage existing device tree files that a SoC vendor
|
||||
may already have defined for a given platform.
|
||||
.. figure:: zephyr_dt_inputs_outputs.png
|
||||
:figclass: align-center
|
||||
|
||||
The device tree files are compiled using the device tree compiler. The compiler
|
||||
runs the .dts file through the C preprocessor to resolve any macro or #defines
|
||||
utilized in the file. The output of the compile is another dts formatted file.
|
||||
Devicetree input (green) and output (yellow) files
|
||||
|
||||
After compilation, a Python script extracts information from the compiled
|
||||
device tree file using rules specified in *bindings* (see the :ref:`bindings`
|
||||
section). The extracted information is placed in a header file that is used by
|
||||
the rest of the code as the project is compiled.
|
||||
DTS files usually have ``.dts`` or ``.dtsi`` (for Devicetree Source Include)
|
||||
extensions. Zephyr's build system looks for a file named :file:`BOARD.dts` in
|
||||
the board definition directory; this file contains the board's base
|
||||
devicetree. See :ref:`dt_k6x_example` for real-world examples.
|
||||
|
||||
Temporary fixup files are required for device tree support on most devices.
|
||||
These fixup files by default reside in the board and soc directories and are
|
||||
named ``dts_fixup.h``. These fixup files map the generated include information to
|
||||
the current driver/source usage.
|
||||
The build system combines the board's DTS with additional input files called
|
||||
*overlays* to produce a final devicetree source file. Overlays are also written
|
||||
in the DTS format, but have a :file:`.overlay` extension to make it clear that
|
||||
they're overlays. You can specify the overlay files to use at build time using
|
||||
the :makevar:`DTC_OVERLAY_FILE` CMake variable described in
|
||||
:ref:`important-build-vars`. The build system also looks for devicetree
|
||||
overlays in several locations by default; see :ref:`application_dt` for the
|
||||
list.
|
||||
|
||||
The Python code that deals with device tree and bindings is in
|
||||
:zephyr_file:`scripts/dts/`.
|
||||
Overlays can be used to add or delete nodes from the tree, or to modify node
|
||||
properties and their values. Along with Kconfig, devicetree overlays let you
|
||||
reconfigure the kernel and device drivers without modifying their source code.
|
||||
|
||||
Before they are combined, the C preprocessor is run on :file:`BOARD.dts` and any
|
||||
overlays. This allows these files to use C macros and include directives.
|
||||
|
||||
The combined devicetree is written to a DTS file named
|
||||
:file:`BOARD.dts_compiled` in the application build directory. This file
|
||||
contains the final devicetree.
|
||||
|
||||
This devicetree and the set of :ref:`bindings` are then used to generate C
|
||||
definitions using scripts in :zephyr_file:`scripts/dts/`. These definitions can
|
||||
be included via the ``generated_dts_board.h`` header file, which the build
|
||||
system places on the C preprocessor include path. This file is not generated;
|
||||
it is in :zephyr_file:`include/generated_dts_board.h`. (Its name was chosen
|
||||
for backwards compatibility.)
|
||||
|
||||
**Do not include the generated C headers in the build directory directly**. Use
|
||||
``generated_dts_board.h`` instead.
|
||||
|
||||
Zephyr device drivers typically use information from ``generated_dts_board.h``
|
||||
to statically allocate and initialize :ref:`struct device <device_struct>`
|
||||
instances. Property values from ``generated_dts_board.h`` are usually stored in
|
||||
ROM in the value pointed to by a ``device->config->config_info`` field. For
|
||||
example, a ``struct device`` corresponding to an I2C peripheral would store the
|
||||
peripheral address in its ``reg`` property there.
|
||||
|
||||
Application source code with a pointer to the ``struct device`` can then pass
|
||||
it to driver APIs in :zephyr_file:`include/drivers/`. These API functions
|
||||
usually take a ``struct device*`` as their first argument. This allows the
|
||||
driver API to use information from devicetree to interact with the device
|
||||
hardware.
|
||||
|
||||
Temporary "fixup" files are currently required for devicetree support on most
|
||||
devices. These fixup files by default reside in the board and soc directories
|
||||
and are named ``dts_fixup.h``. These fixup files map the generated include
|
||||
information to the current driver/source usage. They exist for historical
|
||||
reasons; Zephyr is moving away from needing or using these files.
|
||||
|
||||
.. _dt_vs_kconfig:
|
||||
|
||||
Device Tree vs Kconfig
|
||||
**********************
|
||||
Devicetree vs Kconfig
|
||||
*********************
|
||||
|
||||
As mentioned above there are several tools used to configure the build with
|
||||
Zephyr.
|
||||
The two main ones, Device Tree and Kconfig, might seem to overlap in purpose,
|
||||
but in fact they do not. This section serves as a reference to help you decide
|
||||
whether to place configuration items in Device Tree or Kconfig.
|
||||
Along with devicetree, Zephyr also uses the Kconfig language to configure the
|
||||
source code. Whether to use devicetree or Kconfig for a particular purpose can
|
||||
sometimes be confusing. This section should help you decide which one to use.
|
||||
|
||||
The scope of each configuration tool can be summarized as follows:
|
||||
In short:
|
||||
|
||||
* Device Tree is used to describe the **hardware** and its **boot-time
|
||||
configuration**.
|
||||
* Kconfig is used to describe which **software features** will be built into
|
||||
the final image, and their **configuration**.
|
||||
* Use devicetree to describe **hardware** and its **boot-time configuration**.
|
||||
Examples include peripherals on a board, boot-time clock frequencies,
|
||||
interrupt lines, etc.
|
||||
* Use Kconfig to configure **software support** to build into the final
|
||||
image. Examples include whether to add networking support, which drivers are
|
||||
needed by the application, etc.
|
||||
|
||||
Hence Device Tree deals mostly with hardware and Kconfig with software.
|
||||
A couple of noteworthy exceptions are:
|
||||
In other words, devicetree mainly deals with hardware, and Kconfig with
|
||||
software.
|
||||
|
||||
* Device Tree's ``chosen`` keyword, which allows the user to select a
|
||||
particular instance of a hardware device to be used for a concrete purpose
|
||||
by the software. An example of this is selecting a particular UART for use as
|
||||
the system's console.
|
||||
* Device Tree's ``status`` keyword, which allows the user to enable or disable
|
||||
a particular instance of a hardware device in the Device Tree file itself.
|
||||
This takes precedence over Kconfig.
|
||||
For example, consider a board containing a SoC with 2 UART, or serial port,
|
||||
instances.
|
||||
|
||||
To further clarify this separation, let's use a particular, well-known
|
||||
example to illustrate this: serial ports a.k.a. UARTs. Let's consider a
|
||||
board containing a SoC with 2 UART instances:
|
||||
* The fact that the board has this UART **hardware** is described with two UART
|
||||
nodes in the devicetree. These provide the UART type (via the ``compatible``
|
||||
property) and certain settings such as the address range of the hardware
|
||||
peripheral registers in memory (via the ``reg`` property).
|
||||
* Additionally, the UART **boot-time configuration** is also described with
|
||||
devicetree. This could include configuration such as the RX IRQ line's
|
||||
priority and the UART baud rate. These may be modifiable at runtime, but
|
||||
their boot-time configuration is described in devicetree.
|
||||
* Whether or not to include **software support** for UART in the build is
|
||||
controlled via Kconfig. Applications which do not need to use the UARTs can
|
||||
remove the driver source code from the build using Kconfig, even though the
|
||||
board's devicetree still includes UART nodes.
|
||||
|
||||
* The fact that the target hardware **contains** 2 UARTs is described with Device
|
||||
Tree. This includes the UART type, its driver compatibility and certain
|
||||
immutable (i.e. not software-configurable) settings such as the base address
|
||||
of the hardware peripheral in memory or its interrupt line.
|
||||
* Additionally, **hardware boot-time configuration** is also described with Device
|
||||
Tree. This includes things such as the IRQ priority and boot-time UART
|
||||
baudrate. These may also be modifiable at runtime later, but their boot-time
|
||||
default configuration is described in Device Tree.
|
||||
* The fact that the user intends to include **software support** for UART in the
|
||||
build is described in Kconfig. Through the use of Kconfig, users can opt not
|
||||
to include support for this particular hardware item if they don't require it.
|
||||
As another example, consider a device with a 2.4GHz, multi-protocol radio
|
||||
supporting both the Bluetooth Low Energy and 802.15.4 wireless technologies.
|
||||
|
||||
Another example is a device with a 2.4GHz, multi-protocol radio supporting
|
||||
both the Bluetooth Low Energy and 802.15.4 wireless technologies. In this case:
|
||||
* Devicetree should be used to describe the presence of the radio **hardware**,
|
||||
what driver or drivers it's compatible with, etc.
|
||||
* **Boot-time configuration** for the radio, such as TX power in dBm, should
|
||||
also be specified using devicetree.
|
||||
* Kconfig should determine which **software features** should be built for the
|
||||
radio, such as selecting a BLE or 802.15.4 protocol stack.
|
||||
|
||||
* Device Tree describes the presence of a radio peripheral compatible with a
|
||||
certain radio driver.
|
||||
* Additional hardware boot-time configuration settings may also be present
|
||||
in the Device Tree files. In this particular case it could be a
|
||||
default TX power in dBm if the hardware does have a simple, cross-wireless
|
||||
technology register for that.
|
||||
* Kconfig will describe which **protocol stack** is to be used with that radio.
|
||||
The user may decide to select BLE or 802.15.4, which will both depend on
|
||||
the presence of a compatible radio in the Device Tree files.
|
||||
There are two noteworthy **exceptions** to these rules:
|
||||
|
||||
Device tree file formats
|
||||
************************
|
||||
* Devicetree's ``chosen`` keyword, which allows the user to select a specific
|
||||
instance of a hardware device to be used for a particular purpose. An example
|
||||
of this is selecting a particular UART for use as the system's console.
|
||||
* Devicetree's ``status`` keyword, which allows the user to enable or disable a
|
||||
particular instance of a hardware device. This takes precedence over related
|
||||
Kconfig options which serve a similar purpose.
|
||||
|
||||
Hardware and software is described inside of device tree files in clear text format.
|
||||
These files have the file suffix of .dtsi or .dts. The .dtsi files are meant to
|
||||
be included by other files. Typically for a given board you have some number of
|
||||
.dtsi include files that pull in common device descriptions that are used across
|
||||
a given SoC family.
|
||||
.. _dt_k6x_example:
|
||||
|
||||
Example: FRDM K64F Board and Hexiwear K64
|
||||
=========================================
|
||||
Example: FRDM-K64F and Hexiwear K64
|
||||
===================================
|
||||
|
||||
.. Give the filenames instead of the full paths below, as it's easier to read.
|
||||
The cramped 'foo.dts<path>' style avoids extra spaces before commas.
|
||||
|
||||
These boards are defined in :zephyr_file:`frdm_k64fs.dts
|
||||
<boards/arm/frdm_k64f/frdm_k64f.dts>` and :zephyr_file:`hexiwear_k64.dts
|
||||
<boards/arm/hexiwear_k64/hexiwear_k64.dts>`. They are based on the same NXP
|
||||
Kinetis SoC family, the K6X.
|
||||
The FRDM-K64F and Hexiwear K64 board devicetrees are defined in
|
||||
:zephyr_file:`frdm_k64fs.dts <boards/arm/frdm_k64f/frdm_k64f.dts>` and
|
||||
:zephyr_file:`hexiwear_k64.dts <boards/arm/hexiwear_k64/hexiwear_k64.dts>`
|
||||
respectively. Both boards have NXP SoCs from the same Kinetis SoC family, the
|
||||
K6X.
|
||||
|
||||
Common definitions for K6X are stored in :zephyr_file:`nxp_k6x.dtsi
|
||||
Common devicetree definitions for K6X are stored in :zephyr_file:`nxp_k6x.dtsi
|
||||
<dts/arm/nxp/nxp_k6x.dtsi>`, which is included by both board :file:`.dts`
|
||||
files. :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` in turn includes
|
||||
:zephyr_file:`armv7-m.dtsi<dts/arm/armv7-m.dtsi>`, which has common
|
||||
definitions for ARMv7-M-based systems.
|
||||
:zephyr_file:`armv7-m.dtsi<dts/arm/armv7-m.dtsi>`, which has common definitions
|
||||
for Arm v7-M cores.
|
||||
|
||||
Since :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` is meant to be
|
||||
generic across K6X-based boards, it leaves many devices disabled by default.
|
||||
For example, there is a CAN controller defined as follows (with unimportant
|
||||
parts skipped):
|
||||
generic across K6X-based boards, it leaves many devices disabled by default
|
||||
using ``status`` properties. For example, there is a CAN controller defined as
|
||||
follows (with unimportant parts skipped):
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
|
@ -181,12 +331,13 @@ parts skipped):
|
|||
...
|
||||
};
|
||||
|
||||
It is up to the board :file:`.dts` files to enable devices (by setting
|
||||
``status = "okay"``). The board :file:`.dts` files are also responsible for any
|
||||
board-specific configuration of the device.
|
||||
It is up to the board :file:`.dts` or application overlay files to enable these
|
||||
devices as desired, by setting ``status = "okay"``. The board :file:`.dts`
|
||||
files are also responsible for any board-specific configuration of the device,
|
||||
such as adding nodes for on-board sensors, LEDs, buttons, etc.
|
||||
|
||||
For example, FRDM K64 (but not Hexiwear K64) enables the CAN controller, also
|
||||
setting the bus speed:
|
||||
For example, FRDM-K64 (but not Hexiwear K64) :file:`.dts` enables the CAN
|
||||
controller and sets the bus speed:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
|
@ -196,61 +347,58 @@ setting the bus speed:
|
|||
};
|
||||
|
||||
The ``&can0 { ... };`` syntax adds/overrides properties on the node with label
|
||||
``can0``, i.e. the ``can@4002400`` node.
|
||||
``can0``, i.e. the ``can@4002400`` node defined in the :file:`.dtsi` file.
|
||||
|
||||
Other examples of board-specific customization is pointing properties in
|
||||
``aliases`` and ``chosen`` to the right nodes (see :ref:`dt-alias-chosen`), and
|
||||
making GPIO/PinMux assignments.
|
||||
making GPIO/pinmux assignments.
|
||||
|
||||
Currently supported boards
|
||||
**************************
|
||||
|
||||
Device tree is currently supported on all embedded targets except posix
|
||||
Devicetree is currently supported on all embedded targets except posix
|
||||
(boards/posix) and qemu_x86_64 (boards/x86_64).
|
||||
|
||||
Adding support for a board
|
||||
**************************
|
||||
|
||||
Adding device tree support for a given board requires adding a number of files.
|
||||
Adding devicetree support for a given board requires adding a number of files.
|
||||
These files will contain the DTS information that describes a platform, the
|
||||
YAML descriptions that define the contents of a given Device Tree peripheral
|
||||
node, and also any fixup files required to support the platform.
|
||||
bindings in YAML format, and any fixup files required to support the platform.
|
||||
|
||||
When writing Device Tree Source files, it is good to separate out common
|
||||
peripheral information that could be used across multiple SoC families or
|
||||
boards. DTS files are identified by their file suffix. A .dtsi suffix denotes
|
||||
a DTS file that is used as an include in another DTS file. A .dts suffix
|
||||
denotes the primary DTS file for a given board.
|
||||
It is best practice to separate common peripheral information that could be
|
||||
used across multiple cores, SoC families, or boards in :file:`.dtsi` files,
|
||||
reserving the :file:`.dts` suffix for the primary DTS file for a given board.
|
||||
|
||||
The primary DTS file will contain at a minimum a version line, optional
|
||||
includes, and the root node definition. The root node will contain a model and
|
||||
compatible that denotes the unique board described by the .dts file.
|
||||
Devicetree Source File Template
|
||||
===============================
|
||||
|
||||
Device Tree Source File Template
|
||||
================================
|
||||
A board's :file:`.dts` file contains at least a version line, optional
|
||||
includes, and a root node definition with ``model`` and ``compatible``
|
||||
properties. These property values denote the particular board.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <vendor/soc.dtsi>
|
||||
|
||||
/ {
|
||||
model = "Model name for your board";
|
||||
compatible = "compatible for your board";
|
||||
model = "Human readable board name";
|
||||
compatible = "vendor,soc-on-your-board's-mcu";
|
||||
/* rest of file */
|
||||
};
|
||||
|
||||
|
||||
One suggestion for starting from scratch on a platform/board is to examine other
|
||||
boards and their device tree source files.
|
||||
You can use other board :file:`.dts` files as a starting point.
|
||||
|
||||
The following is a more precise list of required files:
|
||||
|
||||
* Base architecture support
|
||||
|
||||
* Add architecture-specific DTS directory, if not already present.
|
||||
Example: dts/arm for ARM.
|
||||
* Add target specific device tree files for base SoC. These should be
|
||||
.dtsi files to be included in the board-specific device tree files.
|
||||
Example: dts/arm for Arm.
|
||||
* Add target specific devicetree files for base SoC. These should be
|
||||
.dtsi files to be included in the board-specific devicetree files.
|
||||
* Add target specific YAML binding files in the dts/bindings/ directory.
|
||||
Create the yaml directory if not present.
|
||||
|
||||
|
@ -284,7 +432,7 @@ The following is a more precise list of required files:
|
|||
* Overlay Files (optional)
|
||||
|
||||
* Overlay files contain tweaks or changes to the SoC and Board support files
|
||||
described above. They can be used to modify Device Tree configurations
|
||||
described above. They can be used to modify devicetree configurations
|
||||
without having to change the SoC and Board files. See
|
||||
:ref:`application_dt` for more information on overlay files and the Zephyr
|
||||
build system.
|
||||
|
@ -295,7 +443,7 @@ The following is a more precise list of required files:
|
|||
================================
|
||||
|
||||
Using an alias with a common name for a particular node makes it easier for you
|
||||
to write board-independent source code. Device Tree ``aliases`` nodes are used
|
||||
to write board-independent source code. Devicetree ``aliases`` nodes are used
|
||||
for this purpose, by mapping certain generic, commonly used names to specific
|
||||
hardware resources:
|
||||
|
||||
|
@ -311,7 +459,7 @@ hardware resources:
|
|||
|
||||
Certain software subsystems require a specific hardware resource to bind to in
|
||||
order to function properly. Some of those subsystems are used with many
|
||||
different boards, which makes using the Device Tree ``chosen`` nodes very
|
||||
different boards, which makes using the devicetree ``chosen`` nodes very
|
||||
convenient. By doing, so the software subsystem can rely on having the specific
|
||||
hardware peripheral assigned to it. In the following example we bind the shell
|
||||
to ``uart1`` in this board:
|
||||
|
@ -351,10 +499,10 @@ The full set of Zephyr-specific ``chosen`` nodes follows:
|
|||
- ``DT_UART_MCUMGR_ON_DEV_NAME``
|
||||
|
||||
|
||||
Adding support for device tree in drivers
|
||||
*****************************************
|
||||
Adding support for devicetree in drivers
|
||||
****************************************
|
||||
|
||||
As drivers and other source code is converted over to make use of device tree
|
||||
As drivers and other source code is converted over to make use of devicetree
|
||||
generated information, these drivers may require changes to match the generated
|
||||
#define information.
|
||||
|
||||
|
@ -362,9 +510,9 @@ generated information, these drivers may require changes to match the generated
|
|||
Source Tree Hierarchy
|
||||
*********************
|
||||
|
||||
The device tree files are located in a couple of different directories. The
|
||||
The devicetree files are located in a couple of different directories. The
|
||||
directory split is done based on architecture, and there is also a common
|
||||
directory where architecture agnostic device tree and YAML binding files are
|
||||
directory where architecture agnostic devicetree and YAML binding files are
|
||||
located.
|
||||
|
||||
Assuming the current working directory is the ZEPHYR_BASE, the directory
|
||||
|
@ -375,7 +523,7 @@ hierarchy looks like the following::
|
|||
dts/bindings/
|
||||
boards/<ARCH>/<BOARD>/
|
||||
|
||||
The common directory contains a ``skeleton.dtsi`` which provides device tree root
|
||||
The common directory contains a ``skeleton.dtsi`` which provides devicetree root
|
||||
node definition. The bindings subdirectory contains YAML binding files used
|
||||
to instruct how the python DTS parsing script should extract nodes information
|
||||
in a format that will be usable by the system.
|
||||
|
@ -392,8 +540,8 @@ Example: Subset of DTS/YAML files for NXP FRDM K64F (Subject to Change)::
|
|||
|
||||
.. _bindings:
|
||||
|
||||
Bindings
|
||||
********
|
||||
Devicetree Bindings
|
||||
*******************
|
||||
|
||||
``.dts`` files describe the available hardware devices, but don't tell the
|
||||
system which pieces of information are useful, or what kind of configuration
|
||||
|
@ -530,7 +678,7 @@ Include files generation
|
|||
************************
|
||||
|
||||
At build time, after a board's ``.dts`` file has been processed by the DTC
|
||||
(Device Tree Compiler), a corresponding ``.dts_compiled`` file is generated
|
||||
(Devicetree Compiler), a corresponding ``.dts_compiled`` file is generated
|
||||
under the ``zephyr`` directory.
|
||||
This ``.dts_compiled`` file is processed by the python DTS parsing script
|
||||
and generates an include file named
|
||||
|
@ -562,6 +710,6 @@ Additionally, a file named ``generated_dts_board_fixups.h`` is
|
|||
generated in the same directory concatenating all board-related fixup files.
|
||||
|
||||
The include file ``include/generated_dts_board.h`` includes both these generated
|
||||
files, giving Zephyr C source files access to the board's device tree information.
|
||||
files, giving Zephyr C source files access to the board's devicetree information.
|
||||
|
||||
.. include:: flash_partitions.inc
|
||||
|
|
BIN
doc/guides/dts/zephyr_dt_build_flow.png
Normal file
After Width: | Height: | Size: 17 KiB |
357
doc/guides/dts/zephyr_dt_build_flow.svg
Normal file
|
@ -0,0 +1,357 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
style="background-color: rgb(255, 255, 255);"
|
||||
version="1.1"
|
||||
width="481px"
|
||||
height="171px"
|
||||
viewBox="-0.5 -0.5 481 171"
|
||||
content="<mxfile host="www.draw.io" modified="2019-10-03T21:13:02.112Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" etag="nJzlZGwzNDb1cRSQPZak" version="12.0.2" type="google" pages="1"><diagram id="lJw3w9u4R4x5o196SwGf" name="Page-1">zVjbcpswEP0aPyZjwPjyWDtu2pl0JjOeaZq+ZBRYgxIhUSEM5OsrmcWAcWy3TUpebPZoJa3O3gQDZxHl15LE4TfhAxvYQz8fOFcD255Ylv41QIGAPS6BQFK/hKwaWNEXQHCIaEp9SFqKSgimaNwGPcE5eKqFESlF1lZbC9beNSYBdICVR1gXvaO+ChG1hsN64AvQIMStpy4ORKRSRiAJiS+yBuQsB85CCqHKpyhfADPcVbyU8z6/MrozTAJX50yIbpzV893F7Ov6VzB0L57Sl+/5Ba6yISzFA1/BhnqgJICxWaTSA7RfFRUpUqTcB7OuNXDmWUgVrGLimdFMR4HGQhUxHMYdQCrIXzXd2hGiAwlEpA0otApOqCgs2mLWcEiFhQ1fOIgRjIFgt3BNk35Apv6AtUmHEfB11KAopApFIDhhyxqd15wNtVTr3AgRI1NPoFSBKUBSJdo8Qk7Vj8bzvVnq0kXpKseVt0KBQmmnMe448ztPv35mG5OPyADUEb3xYU9KYETRTduON3eM3QnneUp1xuvzFYmCqPdItmbtUHbdnkPZOV4AHin3KQ+S3onbKwHTvkvAqMNbh6JESfG86xpWmxLdDWKjF+WB6ZuXayYyLyRSXRLOhdK5IviD5mNOGA24VmSw1meaM/II7FYk1ChoWJZnnceCcgVyudF8JrgH9kTyuLXI1AOfSg2UMzNI1BsF9ajtnFHXOe4B34zfyzfuad8A9z+Z24GWPEaShHqHIvZ04exycuLQFXZ2PcQdbo1/G5RP2pRP9rgsyzlOal4K9teZHV+nLPeddbZu2R367z1V3Q776aR197xvjBzupNrtsmhMMuJ9c6yetpXeoQOPz+zA03/swIcjZbRXgS3r/4bKuJPU18BBEgWmvS+2aUZ8kL13Kmf8wVr89HQ57JsjyzqTpIrMNydp9gFJ2qvxlt03SVXKN1j6CXFYSLMZN3lI4phRb3t7abw+6rdz3/ytKYP+r5LOdI9X5/141WL9hl+WwvozibP8DQ==</diagram></mxfile>"
|
||||
id="svg66"
|
||||
sodipodi:docname="zephyr_dt_build_flow.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_build_flow.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<metadata
|
||||
id="metadata70">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2656"
|
||||
inkscape:window-height="1657"
|
||||
id="namedview68"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.4636175"
|
||||
inkscape:cx="24.347153"
|
||||
inkscape:cy="72.312542"
|
||||
inkscape:window-x="879"
|
||||
inkscape:window-y="211"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g64" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<g
|
||||
id="g64">
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="120"
|
||||
height="30"
|
||||
rx="4.5"
|
||||
ry="4.5"
|
||||
fill="#ffffff"
|
||||
stroke="#000000"
|
||||
pointer-events="none"
|
||||
id="rect4" />
|
||||
<g
|
||||
transform="translate(12.5,8.5)"
|
||||
id="g10">
|
||||
<switch
|
||||
id="switch8">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="95"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 96px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Devicetree source</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="48"
|
||||
y="12"
|
||||
fill="#000000"
|
||||
text-anchor="middle"
|
||||
font-size="12px"
|
||||
font-family="Helvetica"
|
||||
id="text6">Devicetree source</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
d="M 290 50 L 333.63 50"
|
||||
fill="none"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path12" />
|
||||
<path
|
||||
d="M 338.88 50 L 331.88 53.5 L 333.63 50 L 331.88 46.5 Z"
|
||||
fill="#000000"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path14" />
|
||||
<rect
|
||||
x="170"
|
||||
y="35"
|
||||
width="120"
|
||||
height="30"
|
||||
rx="4.5"
|
||||
ry="4.5"
|
||||
fill="#ffffff"
|
||||
stroke="#000000"
|
||||
pointer-events="none"
|
||||
id="rect16" />
|
||||
<g
|
||||
transform="translate(196.5,43.5)"
|
||||
id="g22">
|
||||
<switch
|
||||
id="switch20">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="67"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Build system</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="34"
|
||||
y="12"
|
||||
fill="#000000"
|
||||
text-anchor="middle"
|
||||
font-size="12px"
|
||||
font-family="Helvetica"
|
||||
id="text18">Build system</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
d="M 170 20 L 145 20 L 145 80 L 170 80"
|
||||
fill="none"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
transform="rotate(180,145,50)"
|
||||
pointer-events="none"
|
||||
id="path32" />
|
||||
<path
|
||||
d="M 120 50 L 145 50"
|
||||
fill="none"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
transform="rotate(180,145,50)"
|
||||
pointer-events="none"
|
||||
id="path34" />
|
||||
<path
|
||||
d="M 150 50 L 163.63 50"
|
||||
fill="none"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path36" />
|
||||
<path
|
||||
d="M 168.88 50 L 161.88 53.5 L 163.63 50 L 161.88 46.5 Z"
|
||||
fill="#000000"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path38" />
|
||||
<path
|
||||
d="M 400 65 L 400 88.63"
|
||||
fill="none"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path40" />
|
||||
<path
|
||||
d="M 400 93.88 L 396.5 86.88 L 400 88.63 L 403.5 86.88 Z"
|
||||
fill="#000000"
|
||||
stroke="#000000"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path42" />
|
||||
<rect
|
||||
x="340"
|
||||
y="35"
|
||||
width="120"
|
||||
height="30"
|
||||
rx="4.5"
|
||||
ry="4.5"
|
||||
fill="#ffffff"
|
||||
stroke="#000000"
|
||||
pointer-events="none"
|
||||
id="rect44" />
|
||||
<g
|
||||
transform="translate(345.5,43.5)"
|
||||
id="g50">
|
||||
<switch
|
||||
id="switch48">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="108"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 109px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Generated C header</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="54"
|
||||
y="12"
|
||||
fill="#000000"
|
||||
text-anchor="middle"
|
||||
font-size="12px"
|
||||
font-family="Helvetica"
|
||||
id="text46">Generated C header</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="330.03046"
|
||||
y="95"
|
||||
width="129.96954"
|
||||
height="55"
|
||||
rx="8.9354067"
|
||||
ry="8.25"
|
||||
pointer-events="none"
|
||||
id="rect52"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1.04071105" />
|
||||
<rect
|
||||
x="340.01202"
|
||||
y="105"
|
||||
width="129.98798"
|
||||
height="55"
|
||||
rx="8.9366732"
|
||||
ry="8.25"
|
||||
pointer-events="none"
|
||||
id="rect54"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1.04078484" />
|
||||
<rect
|
||||
x="350.11337"
|
||||
y="115"
|
||||
width="129.88664"
|
||||
height="55"
|
||||
rx="8.9297066"
|
||||
ry="8.25"
|
||||
pointer-events="none"
|
||||
id="rect56"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1.04037905" />
|
||||
<g
|
||||
transform="translate(356.03409,113.30113)"
|
||||
id="g62">
|
||||
<switch
|
||||
id="switch60"
|
||||
transform="translate(0.68323861)">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="116"
|
||||
height="41"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 116px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Zephyr and application source code files</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="58"
|
||||
y="27"
|
||||
font-size="12px"
|
||||
id="text58"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000">
|
||||
<tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan72"
|
||||
x="58"
|
||||
y="27">Zephyr and application</tspan>
|
||||
<tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan74"
|
||||
x="58"
|
||||
y="42">source code files</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000"
|
||||
x="0"
|
||||
y="50"
|
||||
width="120"
|
||||
height="30"
|
||||
rx="4.5"
|
||||
ry="4.5"
|
||||
pointer-events="none"
|
||||
id="rect24-9" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000"
|
||||
x="6.4573889"
|
||||
y="58.480114"
|
||||
width="120"
|
||||
height="30"
|
||||
rx="4.5"
|
||||
ry="4.5"
|
||||
pointer-events="none"
|
||||
id="rect24-1" />
|
||||
<g
|
||||
id="g101"
|
||||
transform="translate(15.03125,6.8323869)">
|
||||
<rect
|
||||
id="rect24"
|
||||
pointer-events="none"
|
||||
ry="4.5"
|
||||
rx="4.5"
|
||||
height="30"
|
||||
width="120"
|
||||
y="60"
|
||||
x="0"
|
||||
style="fill:#ffffff;stroke:#000000" />
|
||||
<g
|
||||
id="g30"
|
||||
transform="translate(8.5,68.5)">
|
||||
<switch
|
||||
id="switch28">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="103"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 104px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Devicetree bindings</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
id="text26"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="52"
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000">Devicetree bindings</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/guides/dts/zephyr_dt_i2c_example.png
Normal file
After Width: | Height: | Size: 46 KiB |
741
doc/guides/dts/zephyr_dt_i2c_example.svg
Normal file
|
@ -0,0 +1,741 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
style="background-color: rgb(255, 255, 255);"
|
||||
version="1.1"
|
||||
width="945px"
|
||||
height="708px"
|
||||
viewBox="-0.5 -0.5 945 708"
|
||||
content="<mxfile host="www.draw.io" modified="2019-10-03T19:55:39.802Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" etag="lCHvuS5EbzEef8XEtNpw" version="12.0.2" type="google" pages="1"><diagram name="Page-1" id="b520641d-4fe3-3701-9064-5fc419738815">7Ztbc5s4FIB/jR+9wx37MSbXbtLpNp12sy8dGWTQBhAV8i2/fiUsGahkmp0aO90l8UzQkYSEzqdzDkfxyA6yzQ0BRfKAI5iOLCPajOzLkWWZhm2yP1yyFRLLne4kMUGRkNWCR/QCZVchXaIIlq2GFOOUoqItDHGew5C2ZIAQvG43W+C0PWoBYqgIHkOQqtIvKKKJkJqGUVfcQhQnYuiJKyrmIHyOCV7mYryRZS+qn111BuS9RPsyARFeN0T21cgOCMZ0d5VtApjyxZXLtut3faB2P28Cc/qaDu8ujLX/0fvj6fe7T48Odm5Xz3dj0xeTo1u5IDBi6yOKmNAExzgH6VUtnVUPDfltDVaq29xjXDChyYR/Q0q3QtlgSTETJTRLRS3cIPon7/6bK0pPjZrLjbhzVdjKQk7JttGJF5+adXW3qiT7qcskVq7ESxKKZ7ZMCKbe1PJcEBmmNxl7gkRAYii6vbzbrpYP8MvS/Gx+8t8vipf307Gza8fXrHFzoYAbiDPI5sIaEJgCilZt5oBAN963q9XHLoQG9do8NOMVSJdQAnmtKLdcoywFOWzrY4FzKlXO1yxMUBrdgy1e8mcvKSNdlmYJJuiFtQeyM6smVKja8vjdUJoGOMWkGtKGBv9t9XzkdxRjEViyvh+kfsy96B6UVM4HpykoSjSvZsibZEwxKJ9hSnEmGslHu24PL/akPQMpinMmC9lAkLQwrh5Dbs/dgBkKxXUK5jCd7Te7vHWOq1UsKcHPsDGeUf3sa6RNkct8DTKUcjY/QxKBHMjV362faYmy7oYHSV5BQuGmkz9R6ziTXRdprYVtWteWzxeipGHzPO/ngQXhy1PpT27oX3dPZWDNL1dBPDYVQE9qfay3an6kXpr2R2+/jXMZIK0+rV/Fm/SsFu9NacU+r1b8c6hF6639N+Ot5ZQb7hpZ4cgxHGbruckfPPfguZue2zaslufWuW7bs1TfbU78Pvi1FX7Zyhds13BNszcRLmIz9L4t+fvNLMckYnqxgpwsxpTpu65SSGcrQtuUt1Ul9NeEVaq0ACHK43u44A/v1JKPYj24aJ0gCh+ZnA+3Zm+13L4xRSzSCqIERRHMK8gooGC+31oFRjmt1tCdsQ97uIB7HJdNOWBlsy6zD29OGAs5mzpAldYh2xVrWFItD4cNxI8JkUR4rwPCOkIwp3V6KhJMySl/3git2GVM5Z7UAHJnBV+NJhS7nmwijc4DKsdBxbVOh4o6XUvhhMC4iQTI+EJX+jc2jvSHhrExqwtRPxBxRCL8yemI0IZmGio01iNMcfg8XhD4bQnzcHsAGmfnd78DZTAo/eFjGs4ZLYqrslNGYFyg/AAgfBaDFekBA/uVQWlvMcirrEgZpl1w+HrLMSe11RhsSY8QuecOZM2Joss3msbqNSvZdeDRTLUc1Pnp8yxdU256BxwqGh7yK79ufgWQUDZzu+j+Nwcl4m1WGiVNumXS00lJV+qyAXGWgYnnWgueNTSjgef/EM9HANiTwAqAHW/KXITiV11HZdg0jpAx1L/kqVnv7qzhpmDRyGKDy4lvtLJDgaZdvSGG3GKTnU578lPpRR09vWUIpgo7h3KJDw8XHITrYAChBxB0ycOTgjBRQOjKH3LXOLzr90KCLmnYFwldx+wNEij6mkTVOap66D1ERP/riMg2vFZE5OlOUHuLh7T8qkF9ZzhEEdv0HO+DgZBsYRqmMTi/Fi+dBuRNRkHaGavO71AUdHsZDBj0hMEpYyDtjNVguPMM1R5ioJ5IOHsMpHmnBkVUTqeewcIgezqEQUMY1AyDrO/yQr510ryQnmFTYbgzEAIrEGO2+fegDz7uh5btOP9QdlrTpp7mHgp2Lj5cPg4k9EXC2cMdzb+bdsU73OsN8U4/LPQY8LBi/XXIqq7xpVP76h8=</diagram></mxfile>"
|
||||
id="svg188"
|
||||
sodipodi:docname="zephyr_dt_i2c_example.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_i2c_example.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<metadata
|
||||
id="metadata192">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2721"
|
||||
inkscape:window-height="1683"
|
||||
id="namedview190"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.3333333"
|
||||
inkscape:cx="441.4645"
|
||||
inkscape:cy="312.79664"
|
||||
inkscape:window-x="222"
|
||||
inkscape:window-y="73"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg188" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 378.25,73.5 v 27.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 378.25,106.38 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<g
|
||||
id="g326"
|
||||
transform="translate(-84.75,7.5)">
|
||||
<path
|
||||
d="M 498,26 V 11.7 Q 498,0 486.3,0 H 439.7 Q 428,0 428,11.7 V 26"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path8"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="M 428,26 V 54.3 Q 428,66 439.7,66 h 46.6 Q 498,66 498,54.3 V 26"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path10"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="m 428,26 h 70"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path12"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
|
||||
<g
|
||||
transform="translate(460.5,7.5)"
|
||||
id="g18">
|
||||
<switch
|
||||
id="switch16">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="4"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">/</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="2"
|
||||
y="12"
|
||||
font-size="12px"
|
||||
id="text14"
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">/</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path20"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 312.25,315.75 v 38 h -196 v 31.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path22"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 116.25,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.55926853;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path24"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 376.75,315.75 v 64.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path26"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 376.75,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path28"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 437.75,313.5 v 36 h 213 v 30.13" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path30"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 650.75,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.78149533;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 487.63472,235.07937 v -14.38566 q 0,-11.77009 -7.10305,-11.77009 H 274.96819 q -7.10305,0 -7.10305,11.77009 v 14.38566" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.55442154;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path34"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 268.15964,234.97771 v 75.79604 q 0,5.93981 7.08401,5.93981 h 205.01256 q 7.08401,0 7.08401,-5.93981 v -75.79604" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.7746858;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path36"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 269.12493,235 h 217.25" />
|
||||
<g
|
||||
id="g42"
|
||||
transform="translate(338.58293,216.5)">
|
||||
<switch
|
||||
id="switch40">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="78"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">i2c@40003000</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
|
||||
id="text38"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="39">i2c@40003000</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g48"
|
||||
transform="translate(272.92386,240.75)">
|
||||
<switch
|
||||
id="switch46">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="160"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 161px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = "nordic,nrf-twim"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text44"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="80">compatible = "nordic,nrf-twim"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g54"
|
||||
transform="translate(272.68201,266.75)">
|
||||
<switch
|
||||
id="switch52">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="80"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 81px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>label = "I2C_0"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text50"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="40">
|
||||
<tspan
|
||||
y="12"
|
||||
x="40"
|
||||
sodipodi:role="line"
|
||||
id="tspan289">label = "I2C_0"</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g60"
|
||||
transform="translate(277.75,292.75)">
|
||||
<switch
|
||||
id="switch58">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="144"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 145px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = <0x4003000 0x1000></xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000;-inkscape-font-specification:'Helvetica, Normal';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;text-align:center;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
|
||||
id="text56"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="72">
|
||||
<tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4286">reg = <0x40003000 0x1000></tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path80"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 378.25,173.5 v 27.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path82"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 378.25,206.38 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<g
|
||||
id="g334"
|
||||
transform="translate(-84.75,7.5)">
|
||||
<path
|
||||
d="M 503,126 V 111.7 Q 503,100 491.3,100 H 434.7 Q 423,100 423,111.7 V 126"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path84"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="m 423,126 v 28.3 q 0,11.7 11.7,11.7 h 56.6 Q 503,166 503,154.3 V 126"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path86"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="m 423,126 h 80"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path88"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
|
||||
<g
|
||||
transform="translate(453.5,107.5)"
|
||||
id="g94">
|
||||
<switch
|
||||
id="switch92">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="19"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">soc</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="10"
|
||||
y="12"
|
||||
font-size="12px"
|
||||
id="text90"
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">soc</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g562"
|
||||
transform="translate(-103.5,-60)">
|
||||
<g
|
||||
transform="translate(99.75,68.375)"
|
||||
id="g494">
|
||||
<path
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path96"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 790.31177,407.46825 v -14.31651 q 0,-11.71351 -8.97739,-11.71351 H 527.66562 q -8.97739,0 -8.97739,11.71351 v 14.31651" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path98"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 518.68823,407.46825 v 69.38001 q 0,11.71351 8.97739,11.71351 h 253.66876 q 8.97739,0 8.97739,-11.71351 v -69.38001" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path100"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="M 518.68823,407.46825 H 790.31177" />
|
||||
<g
|
||||
id="g106"
|
||||
transform="translate(609.5,389.5)">
|
||||
<switch
|
||||
id="switch104">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="90"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">mma8652fc@1d</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
|
||||
id="text102"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="45">mma8652fc@1d</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g112"
|
||||
transform="translate(524.25,414.5)">
|
||||
<switch
|
||||
id="switch110">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="250"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 251px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = "nxp,fxos8700", "nxp,mma8652fc"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text108"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="125">compatible = "nxp,fxos8700", "nxp,mma8652fc"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g118"
|
||||
transform="translate(524.25,440.5)">
|
||||
<switch
|
||||
id="switch116">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="118"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 119px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = "MMA8652FC"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text114"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="59">label = "MMA8652FC"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g124"
|
||||
transform="translate(524.25,466.5)">
|
||||
<switch
|
||||
id="switch122">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="70"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = <0x1d></xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text120"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="35">reg = <0x1d></text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(87.255861,-150.125)"
|
||||
id="g511">
|
||||
<path
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path126"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 488.42715,625.93555 v -14.33352 q 0,-11.72742 -6.55236,-11.72742 H 296.72873 q -6.55236,0 -6.55236,11.72742 v 14.33352" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path128"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 290.17637,625.93555 v 69.46242 q 0,11.72742 6.55236,11.72742 h 185.14606 q 6.55236,0 6.55236,-11.72742 v -69.46242" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path130"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="M 290.17637,625.93555 H 488.42715" />
|
||||
<g
|
||||
id="g136"
|
||||
transform="translate(360.62109,607.5)">
|
||||
<switch
|
||||
id="switch134">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="58"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">ti_hdc@43</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
|
||||
id="text132"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="29">ti_hdc@43</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g142"
|
||||
transform="translate(299,632.5)">
|
||||
<switch
|
||||
id="switch140">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="180"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 181px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = "ti,hdc", "ti,hdc1010"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text138"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="90">compatible = "ti,hdc", "ti,hdc1010"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g148"
|
||||
transform="translate(299,658.5)">
|
||||
<switch
|
||||
id="switch146">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="100"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 101px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = "HDC1010"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text144"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="50">label = "HDC1010"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g154"
|
||||
transform="translate(299,684.5)">
|
||||
<switch
|
||||
id="switch152">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="70"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = <0x43></xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text150"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="35">reg = <0x43></text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(117,-12.625001)"
|
||||
id="g392">
|
||||
<g
|
||||
id="g374">
|
||||
<path
|
||||
d="m 217.7234,488.4444 v -14.32891 q 0,-11.72366 -7.17092,-11.72366 H 7.9279929 q -7.17092107,0 -7.17092107,11.72366 v 14.32891"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path156"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="m 0.75707183,488.4444 v 69.44011 q 0,11.72366 7.17092107,11.72366 H 210.55248 q 7.17092,0 7.17092,-11.72366 V 488.4444"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path158"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
|
||||
<path
|
||||
d="M 0.75707183,488.4444 H 217.7234"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path160"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
|
||||
<g
|
||||
transform="translate(71.301758,470.5)"
|
||||
id="g166">
|
||||
<switch
|
||||
id="switch164">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="76"
|
||||
height="12"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">apds9960@39</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="38"
|
||||
y="12"
|
||||
font-size="12px"
|
||||
id="text162"
|
||||
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">apds9960@39</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g172"
|
||||
transform="translate(5.5,495.5)">
|
||||
<switch
|
||||
id="switch170">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="167"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 168px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = "avago,apds9960"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text168"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="84">compatible = "avago,apds9960"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g178"
|
||||
transform="translate(5.5,521.5)">
|
||||
<switch
|
||||
id="switch176">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="106"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 107px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = "APDS9960"</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text174"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="53">label = "APDS9960"</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
id="g184"
|
||||
transform="translate(5.5,547.5)">
|
||||
<switch
|
||||
id="switch182">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="70"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = <0x39></xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text180"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="35">reg = <0x39></text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 32 KiB |
BIN
doc/guides/dts/zephyr_dt_i2c_high_level.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
3
doc/guides/dts/zephyr_dt_i2c_high_level.svg
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
doc/guides/dts/zephyr_dt_inputs_outputs.png
Normal file
After Width: | Height: | Size: 75 KiB |
880
doc/guides/dts/zephyr_dt_inputs_outputs.svg
Normal file
|
@ -0,0 +1,880 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
style="background-color: rgb(255, 255, 255);"
|
||||
version="1.1"
|
||||
width="721px"
|
||||
height="621px"
|
||||
viewBox="-0.5 -0.5 721 621"
|
||||
content="<mxfile host="www.draw.io" modified="2019-10-04T20:14:06.232Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" etag="f1KdDVQKCpK18vfmvEm6" version="12.0.2" type="google" pages="1"><diagram id="u5Qc6Gt7wLgsKawjMbJk" name="Page-1">7VpZc6M4EP41fgzF4SuPiY/ZVGXHqSS1M5kXlwwyaEcgRgjbzK9fCcRp7MjxkaR28hKp0dGiv+7+WrhjjfzNFwpC72/iQNwxdWfTscYd0zT1nsH/CUmSSQyzd51JXIocKSsFT+g3lEJdSmPkwKg2kBGCGQrrQpsEAbRZTQYoJev6sCXB9V1D4MItwZMN8Lb0G3KYl0mHPb2U/wWR6+U7G7p84oN8sBREHnDIuiKyJh1rRAlhWcvfjCAWby9/L9m86Y6nhWIUBkxlQnfy7WHmJ1e/nr0flgvN9WJErgZSN5bkB4YOP7/sEso84pIA4EkpvaUkDhwoVtV5rxxzT0jIhQYX/gsZS6QxQcwIF3nMx/Ip3CD2vdJ+EUtpPdkbb+TKaSepdB4gRT5kkOaygNHkezlZdF/ydUWnXCrt5WtlZxYH3fkqpSgiMbXhnvdnSkgC6kK2Z1y/MDh3FUj4KWjC51GIAUOruh5AQtYtxpVW5Q1p2AOMLJVcARzLnTpmH3N1bx204k1XNKd39xNDIytIMUjy53y7ypCWWZqmKY8VO8yD5hYL2pzSXKgB0IhR8rNwRqMOLe5koRjnb1wRkLQlJmvbA5RpfsyDxpVD7NhPrXy79hCDTyFI7bvmo7PpmY8KmACM3IC3MVyK8UuE8YhgQlM1LKcHh05XzEn1qTzR079CdX5cBjf7kbaNjDKCZlPy+NmV0WRdBiMjjzBeJRAN9TOByVIB0xN3BlNfiIOMn0fz2T+Tx/ubl7lAgDpeZiFDIq6kizylwZvyqCoaCPOcoLoON7Tt8VkCeDzHQN68nd08jjWHRZdGIQgCwoA419ysQIxmhrvFYAHxA4mQGFFCLyQo4GFvsuKoieQeMuGBRaqR3gTvCbBnDF7H3kWh11OB3l3QEUrpCwKoI5gHovw1EZrsAN6zB9MJ/V8xSZEAIlj2xAJwhWyuP4Ra63Y2jgVDMXWBJ5SjU/uDLHVkWWrA6p8LWEW6//A06ITUpa9IXQzrPblLf8vnHWZ3Ck5dMRjGvCaAOxJ75bWDKMwKhSXaCPPV0b3tfSfAu9Wt4324jffhJQOpYX4WvO+i+CWpPzvFN/Ky80Nz/FzLiqNUSE4zxcgs8gobrthukRn/flFJRPuc5kOQ5Za00sqVz5dXhp/Gz/aX113jEOdLe83VTuiRpmrVbfbe0yVzNffz1du7r+O7r1/mhpYAbsJzFN75FkFti89aeI97k+H44rHE7PfUgsnZkrapVHmn5c9vGHoJFeYUwX+6QIGDAjdSR8xkw2AQIVEBiBMzL6vB54+z2bP6KiMSMICEQjROC3ZRwRfVPA9bpj5SXswmaeXuwgDStMxJwQnDP4XWAYVWG4ovCuKcCL9PRiyz4EvlyWmZ59mT37E5TU59EICslCgDvYaU3qABgSzZylkNFBRqHBHdlC538sCWhRDFyBHZFIVHXPWdrbLMQ4cNgxQqJyk1zbodresWEqy3uHwhPH3iun5Xn6+x4MHFrleOvjbZ5ae9dvteyE8NJRZSlJ5zm/ghwtyQb87SZ69V04zNIeZAmpPJgASweALsn24Kx8bTBi+d8r9+/zRe3LWaebvFi7uXLGWNYYvdz0qoJHFq8qmcZ72BUGWfArJl1jBip7FVb/i6rS5662BcKxcKixhh7prTLK+qM3v5PQ6J+oArqXMv50VGTsvJslP7xKaDwOlk398wSA4oQ+6EhX3oIMAE9ycxC2P2dsLPbcwaoKyVkC1+LUUNTAq8IBvgGyn2kePgXQShnslOzfD7RgN9LXfLrXWqeTaKP1CB3xRlX3Yzmx7yuUwFybyBsg9zvCVLRuioA+8obeS+orblbxzwtCJ8YIXAIdsDX2AnfVDoPxcJNf2uqXnFkAP1/f/VwGYjlxaVzbvVwErxuc3q/GUt04CriKNijToaL35lcuorwIJqnfcKsP86cIw8+R+JHN4tfwmYcfXyB5XW5D8=</diagram></mxfile>"
|
||||
id="svg148"
|
||||
sodipodi:docname="zephyr_dt_inputs_outputs.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_inputs_outputs.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<metadata
|
||||
id="metadata152">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2001"
|
||||
inkscape:window-height="1610"
|
||||
id="namedview150"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.5201288"
|
||||
inkscape:cx="329.5894"
|
||||
inkscape:cy="363.03523"
|
||||
inkscape:window-x="68"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg148" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 310,150 h 60 v -13.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 370,131.12 3.5,7 -3.5,-1.75 -3.5,1.75 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 203.64,116.64 c 0,-1.76 0.71,-3.45 1.99,-4.7 1.28,-1.24 3.02,-1.94 4.82,-1.94 h 92.73 c 1.81,0 3.54,0.7 4.82,1.94 1.28,1.25 2,2.94 2,4.7 v 53.08 c -17,-7 -36.19,-7 -53.18,0 -17,7.01 -36.19,7.01 -53.18,0 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 196.82,123.27 c 0,-3.66 3.05,-6.63 6.82,-6.63 h 92.72 c 3.77,0 6.82,2.97 6.82,6.63 v 53.09 c -16.99,-7.01 -36.18,-7.01 -53.18,0 -17,7 -36.19,7 -53.18,0 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 190,129.91 c 0,-1.76 0.72,-3.45 2,-4.7 1.28,-1.24 3.01,-1.94 4.82,-1.94 h 92.73 c 1.8,0 3.54,0.7 4.82,1.94 1.28,1.25 1.99,2.94 1.99,4.7 v 53.08 c -16.99,-7 -36.18,-7 -53.18,0 C 226.19,190 207,190 190,182.99 Z" />
|
||||
<g
|
||||
id="g18"
|
||||
transform="translate(201.05191,111.73835)">
|
||||
<switch
|
||||
id="switch16">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="41"
|
||||
width="80"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 81px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>FILE1.overlay</xhtml:div>
|
||||
<xhtml:div>...</xhtml:div>
|
||||
<xhtml:div>FILE_n.overlay<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text14"
|
||||
font-size="12px"
|
||||
y="27"
|
||||
x="40">
|
||||
<tspan
|
||||
y="27"
|
||||
x="40"
|
||||
id="tspan276"
|
||||
sodipodi:role="line">FILE_1.overlay</tspan>
|
||||
<tspan
|
||||
y="42"
|
||||
x="40"
|
||||
id="tspan278"
|
||||
sodipodi:role="line">...</tspan>
|
||||
<tspan
|
||||
y="57"
|
||||
x="40"
|
||||
id="tspan280"
|
||||
sodipodi:role="line">FILE_n.overlay</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path20"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 180,110 h -10 v 80 h 10" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path22"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 160,150 h 10" />
|
||||
<g
|
||||
id="g28"
|
||||
transform="translate(-0.5,129.5)">
|
||||
<switch
|
||||
id="switch26">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="41"
|
||||
width="157"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
|
||||
<xhtml:div>Set by DTC_OVERLAY_FILE.</xhtml:div>
|
||||
<xhtml:div>Optional DTS format files</xhtml:div>
|
||||
<xhtml:div>which override BOARD.dts<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text24"
|
||||
font-size="12px"
|
||||
y="6.6069913"
|
||||
x="82.947037">
|
||||
<tspan
|
||||
y="6.6069913"
|
||||
x="82.947037"
|
||||
id="tspan162"
|
||||
sodipodi:role="line">Set by DTC_OVERLAY_FILE.</tspan>
|
||||
<tspan
|
||||
y="21.606991"
|
||||
x="82.947037"
|
||||
id="tspan164"
|
||||
sodipodi:role="line">Optional DTS format files</tspan>
|
||||
<tspan
|
||||
y="36.606991"
|
||||
x="82.947037"
|
||||
id="tspan166"
|
||||
sodipodi:role="line">which override BOARD.dts.</tspan>
|
||||
<tspan
|
||||
y="51.606991"
|
||||
x="82.947037"
|
||||
id="tspan168"
|
||||
sodipodi:role="line"></tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path30"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 180,0 h -10 v 60 h 10" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 160,30 h 10" />
|
||||
<g
|
||||
id="g38"
|
||||
transform="translate(38.5,9.5)">
|
||||
<switch
|
||||
id="switch36">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="41"
|
||||
width="118"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;"><xhtml:div>In board directory.</xhtml:div>
|
||||
The "base" devicetree.<xhtml:div>Includes .dtsi files.<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text34"
|
||||
font-size="12px"
|
||||
y="3.9756355"
|
||||
x="57.026482">
|
||||
<tspan
|
||||
y="3.9756355"
|
||||
x="57.026482"
|
||||
id="tspan154"
|
||||
sodipodi:role="line">In board directory.</tspan>
|
||||
<tspan
|
||||
y="18.975636"
|
||||
x="57.026482"
|
||||
id="tspan156"
|
||||
sodipodi:role="line">The "base" devicetree.</tspan>
|
||||
<tspan
|
||||
y="33.975636"
|
||||
x="57.026482"
|
||||
id="tspan158"
|
||||
sodipodi:role="line">Includes .dtsi files.</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path40"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 410,90 h 80 v 133.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path42"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 490,228.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<circle
|
||||
style="fill:#ffffff;stroke:#000000"
|
||||
r="40"
|
||||
id="ellipse44"
|
||||
pointer-events="none"
|
||||
cy="90"
|
||||
cx="370" />
|
||||
<g
|
||||
id="g50"
|
||||
transform="translate(362.5,75.605932)">
|
||||
<switch
|
||||
id="switch48">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="15"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 16px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">dtc </xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text46"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="8">
|
||||
<tspan
|
||||
y="12"
|
||||
x="8"
|
||||
id="tspan170"
|
||||
sodipodi:role="line">Apply</tspan>
|
||||
<tspan
|
||||
y="27"
|
||||
x="8"
|
||||
id="tspan172"
|
||||
sodipodi:role="line">overlays</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path52"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 310,30 h 60 v 13.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path54"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 370,48.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path56"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 190,0 h 120 v 51 q -30,-16.2 -60,0 -30,16.2 -60,0 V 9 Z" />
|
||||
<g
|
||||
id="g62"
|
||||
transform="translate(219.5,15.5)">
|
||||
<switch
|
||||
id="switch60">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="61"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 62px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">BOARD.dts</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
|
||||
id="text58"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="31">BOARD.dts</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path64"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 310,275 h 36 v 78.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path66"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 346,358.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path68"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 203.64,241.64 c 0,-1.76 0.71,-3.45 1.99,-4.7 1.28,-1.24 3.02,-1.94 4.82,-1.94 h 92.73 c 1.81,0 3.54,0.7 4.82,1.94 1.28,1.25 2,2.94 2,4.7 v 53.08 c -17,-7 -36.19,-7 -53.18,0 -17,7.01 -36.19,7.01 -53.18,0 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path70"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 196.82,248.27 c 0,-3.66 3.05,-6.63 6.82,-6.63 h 92.72 c 3.77,0 6.82,2.97 6.82,6.63 v 53.09 c -16.99,-7.01 -36.18,-7.01 -53.18,0 -17,7 -36.19,7 -53.18,0 z" />
|
||||
<path
|
||||
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path72"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 190,254.91 c 0,-1.76 0.72,-3.45 2,-4.7 1.28,-1.24 3.01,-1.94 4.82,-1.94 h 92.73 c 1.8,0 3.54,0.7 4.82,1.94 1.28,1.25 1.99,2.94 1.99,4.7 v 53.08 c -16.99,-7 -36.18,-7 -53.18,0 C 226.19,315 207,315 190,307.99 Z" />
|
||||
<g
|
||||
id="g78"
|
||||
transform="translate(197.10487,236.73835)">
|
||||
<switch
|
||||
id="switch76">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="41"
|
||||
width="92"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 93px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>BINDING_1.yaml</xhtml:div>
|
||||
<xhtml:div>...</xhtml:div>
|
||||
<xhtml:div>BINDING_n.yaml<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text74"
|
||||
font-size="12px"
|
||||
y="27"
|
||||
x="46">
|
||||
<tspan
|
||||
y="27"
|
||||
x="46"
|
||||
id="tspan188"
|
||||
sodipodi:role="line">BINDING_1.yaml</tspan>
|
||||
<tspan
|
||||
y="42"
|
||||
x="46"
|
||||
id="tspan190"
|
||||
sodipodi:role="line">...</tspan>
|
||||
<tspan
|
||||
y="57"
|
||||
x="46"
|
||||
id="tspan192"
|
||||
sodipodi:role="line">BINDING_n.yaml</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path80"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 180,235 h -10 v 80 h 10" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path82"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 160,275 h 10" />
|
||||
<g
|
||||
id="g88"
|
||||
transform="translate(7.842161,216.89725)">
|
||||
<switch
|
||||
id="switch86">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="56"
|
||||
width="148"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
|
||||
<xhtml:div>In zephyr/dts/bindings.</xhtml:div>
|
||||
<xhtml:div>Extensible with DTS_ROOT.</xhtml:div>
|
||||
<xhtml:div>Contain rules for DTS to C</xhtml:div>
|
||||
<xhtml:div>code generation step.<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text84"
|
||||
font-size="12px"
|
||||
y="34"
|
||||
x="74">
|
||||
<tspan
|
||||
y="34"
|
||||
x="74"
|
||||
id="tspan180"
|
||||
sodipodi:role="line">In zephyr/dts/bindings/.</tspan>
|
||||
<tspan
|
||||
y="49"
|
||||
x="74"
|
||||
id="tspan182"
|
||||
sodipodi:role="line">Extensible with DTS_ROOT.</tspan>
|
||||
<tspan
|
||||
y="64"
|
||||
x="74"
|
||||
id="tspan184"
|
||||
sodipodi:role="line">Contain rules for DTS to C</tspan>
|
||||
<tspan
|
||||
y="79"
|
||||
x="74"
|
||||
id="tspan186"
|
||||
sodipodi:role="line">code generation step.</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.79604656;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path90"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 355,460 v 46.6586" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path92"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 355,511.9086 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<circle
|
||||
style="fill:#ffffff;stroke:#000000"
|
||||
r="50"
|
||||
id="ellipse94"
|
||||
pointer-events="none"
|
||||
cy="410"
|
||||
cx="355" />
|
||||
<g
|
||||
id="g100"
|
||||
transform="translate(325.47352,385.97458)">
|
||||
<switch
|
||||
id="switch98">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="27"
|
||||
width="62"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 63px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>zephyr DTS</xhtml:div>
|
||||
<xhtml:div>scripts<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text96"
|
||||
font-size="12px"
|
||||
y="20"
|
||||
x="31">
|
||||
<tspan
|
||||
y="20"
|
||||
x="31"
|
||||
id="tspan210"
|
||||
sodipodi:role="line">Apply bindings,</tspan>
|
||||
<tspan
|
||||
y="35"
|
||||
x="31"
|
||||
id="tspan212"
|
||||
sodipodi:role="line">generate code</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path102"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 420,275 h -60 v 78.63" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path104"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 360,358.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
|
||||
<path
|
||||
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path106"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 420,230 h 140 v 51 q -35,-16.2 -70,0 -35,16.2 -70,0 v -42 z" />
|
||||
<g
|
||||
id="g112"
|
||||
transform="translate(432.5,245.5)">
|
||||
<switch
|
||||
id="switch110">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="12"
|
||||
width="115"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 116px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>BOARD.dts_compiled<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text108"
|
||||
font-size="12px"
|
||||
y="12"
|
||||
x="58">
|
||||
<tspan
|
||||
y="12"
|
||||
x="58"
|
||||
id="tspan200"
|
||||
sodipodi:role="line">BOARD.dts_compiled</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path114"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 570,290 10,0 v -60 h -10" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path116"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="M 590,260 H 580" />
|
||||
<g
|
||||
id="g122"
|
||||
transform="translate(595.57944,201.47563)">
|
||||
<switch
|
||||
id="switch120">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="70"
|
||||
width="118"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 118px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>In build/zephyr.</xhtml:div>
|
||||
<xhtml:div>DTS file, combination of BOARD.dts and overlays.</xhtml:div>
|
||||
<xhtml:div>Intermediate output.<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;direction:rtl;text-anchor:middle;fill:#000000"
|
||||
id="text118"
|
||||
font-size="12px"
|
||||
y="41"
|
||||
x="59">
|
||||
<tspan
|
||||
y="51.248001"
|
||||
x="59"
|
||||
id="tspan232"
|
||||
sodipodi:role="line"></tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
id="path124"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 240.61834,519.01945 h -9.92476 v 98.27889 h 9.92476"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.10419369;stroke-miterlimit:10" />
|
||||
<path
|
||||
id="path126"
|
||||
pointer-events="none"
|
||||
stroke-miterlimit="10"
|
||||
d="m 220.65784,568.1589 h 10"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
|
||||
<g
|
||||
id="g132"
|
||||
transform="translate(42.447034,520.15995)"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<switch
|
||||
id="switch130">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="70"
|
||||
width="178"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
|
||||
<xhtml:div>Final outputs.<xhtml:br />
|
||||
</xhtml:div>
|
||||
<xhtml:div>In build/zephyr/include/generated.</xhtml:div>
|
||||
<xhtml:div>
|
||||
<xhtml:br />
|
||||
</xhtml:div>
|
||||
<xhtml:div>Include C headers via</xhtml:div>
|
||||
<xhtml:div><generated_dts_board.h><xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text128"
|
||||
font-size="12px"
|
||||
y="41"
|
||||
x="89">
|
||||
<tspan
|
||||
y="41"
|
||||
x="89"
|
||||
id="tspan214"
|
||||
sodipodi:role="line">Final outputs, in</tspan>
|
||||
<tspan
|
||||
y="56"
|
||||
x="89"
|
||||
id="tspan222"
|
||||
sodipodi:role="line">build/zephyr/include/generated/.</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.3085305,0,0,1.2589775,-77.132624,-160.11221)"
|
||||
id="g293">
|
||||
<path
|
||||
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 271.02,546.64 c 0,-3.67 4.71,-6.64 10.51,-6.64 h 142.96 c 5.8,0 10.51,2.97 10.51,6.64 v 53.08 c -26.2,-7 -55.79,-7 -81.99,0 -26.2,7.01 -55.78,7.01 -81.99,0 z"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path134" />
|
||||
<path
|
||||
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 260.51,553.27 c 0,-1.76 1.11,-3.45 3.08,-4.69 1.97,-1.25 4.64,-1.94 7.43,-1.94 h 142.96 c 2.79,0 5.46,0.69 7.43,1.94 1.97,1.24 3.08,2.93 3.08,4.69 v 53.09 c -26.2,-7.01 -55.79,-7.01 -81.99,0 -26.2,7 -55.79,7 -81.99,0 z"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path136" />
|
||||
<path
|
||||
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 250,559.91 c 0,-3.67 4.71,-6.64 10.51,-6.64 h 142.96 c 5.8,0 10.51,2.97 10.51,6.64 v 53.08 c -26.21,-7 -55.79,-7 -81.99,0 -26.2,7.01 -55.79,7.01 -81.99,0 z"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="none"
|
||||
id="path138" />
|
||||
</g>
|
||||
<g
|
||||
id="g144"
|
||||
transform="translate(285.39195,531.63454)">
|
||||
<switch
|
||||
id="switch142">
|
||||
<foreignObject
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
|
||||
height="27"
|
||||
width="140"
|
||||
pointer-events="all"
|
||||
style="overflow:visible;">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 141px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
|
||||
<xhtml:div>generated_dts_board.conf,</xhtml:div>
|
||||
<xhtml:div>generated C headers.<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
|
||||
id="text140"
|
||||
font-size="12px"
|
||||
y="20"
|
||||
x="70">
|
||||
<tspan
|
||||
y="20"
|
||||
x="70"
|
||||
id="tspan4298"
|
||||
sodipodi:role="line">Generated C code</tspan>
|
||||
<tspan
|
||||
y="35"
|
||||
x="70"
|
||||
id="tspan4300"
|
||||
sodipodi:role="line">(generated_dts_board_<foo>.h)</tspan>
|
||||
<tspan
|
||||
y="50"
|
||||
x="70"
|
||||
id="tspan4302"
|
||||
sodipodi:role="line">Include via <generated_dts_board.h></tspan>
|
||||
<tspan
|
||||
y="65"
|
||||
x="70"
|
||||
id="tspan4304"
|
||||
sodipodi:role="line">only, as _<foo> names may change.</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<text
|
||||
id="text244"
|
||||
y="270.52966"
|
||||
x="664.5752"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="305.92029"
|
||||
x="664.5752"
|
||||
id="tspan242"
|
||||
sodipodi:role="line" /></text>
|
||||
<g
|
||||
transform="translate(576.21504,203.74048)"
|
||||
id="g258">
|
||||
<switch
|
||||
id="switch256">
|
||||
<foreignObject
|
||||
style="overflow:visible;"
|
||||
pointer-events="all"
|
||||
width="148"
|
||||
height="56"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
|
||||
<xhtml:div
|
||||
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
|
||||
<xhtml:div>In zephyr/dts/bindings.</xhtml:div>
|
||||
<xhtml:div>Extensible with DTS_ROOT.</xhtml:div>
|
||||
<xhtml:div>Contain rules for DTS to C</xhtml:div>
|
||||
<xhtml:div>code generation step.<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="74"
|
||||
y="34"
|
||||
font-size="12px"
|
||||
id="text254"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000">
|
||||
<tspan
|
||||
y="34"
|
||||
x="74"
|
||||
id="tspan266"
|
||||
sodipodi:role="line">DTS file in build/zephyr/.</tspan>
|
||||
<tspan
|
||||
y="49"
|
||||
x="74"
|
||||
id="tspan268"
|
||||
sodipodi:role="line">Intermediate output,</tspan>
|
||||
<tspan
|
||||
y="64"
|
||||
x="74"
|
||||
id="tspan270"
|
||||
sodipodi:role="line">combination of base</tspan>
|
||||
<tspan
|
||||
y="79"
|
||||
x="74"
|
||||
id="tspan272"
|
||||
sodipodi:role="line">devicetree and any</tspan>
|
||||
<tspan
|
||||
y="94"
|
||||
x="74"
|
||||
id="tspan274"
|
||||
sodipodi:role="line">overlays.</tspan>
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 35 KiB |