Skip to main content

pydevicetree

This is a Python 3 library for parsing, querying, and modifying Devicetree Source v1 files as described in the Devicetree Specification v0.2.

Tutorial

The Devicetree

Let's say you have a file design.dts with the contents

/dts-v1/;

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "my,design";
	chosen {
		stdout-path = "/soc/uart@10000000:115200";
	};
	cpus {
		cpu@0 {
			#size-cells = <0>;
			compatible = "sifive,rocket0", "riscv";
			device_type = "cpu";
			reg = <0>;
			riscv,isa = "rv32imac";
			status = "okay";
			timebase-frequency = <1000000>;
			sifive,dtim = <&dtim>;
			interrupt-controller {
				#interrupt-cells = <1>;
				compatible = "riscv,cpu-intc";
				interrupt-controller;
			};
		};
	};
	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "my,design-soc";
		ranges;
		dtim: dtim@20000000 {
			compatible = "sifive,dtim0";
			reg = <0x20000000 0x10000000>;
			reg-names = "mem";
		};
		uart: uart@10000000 {
			compatible = "sifive,uart0";
			reg = <0x10000000 0x1000>;
			reg-names = "control";
		};
	};
};

Parsing the Tree

Parsing the tree is as easy as 1, 2...

>>> from pydevicetree import Devicetree
>>> tree = Devicetree.parseFile("design.dts")
>>> tree
<Devicetree my,design>

Querying the Tree

By compatible string

>>> tree.match("sifive,rocket0")
[<Node cpu>]

Getting Node properties

>>> tree.match("sifive,rocket0")[0].get_field("timebase-frequency")
1000000
>>> tree.match("sifive,rocket0")[0].get_fields("compatible")
<StringList ['sifive,rocket0', 'riscv']>

Getting chosen properties

>>> tree.chosen("stdout-path")
<StringList ['/soc/uart@10000000:115200']>

Converting back to Devicetree

Any tree or subtree can be converted back to Devicetree by calling Node.to_dts() or simply by printing it:

>>> print(tree.match("sifive,rocket0")[0])
cpu@0 {
        #size-cells = <0>;
        compatible = "sifive,rocket0", "riscv";
        device_type = "cpu";
        reg = <0x0>;
        riscv,isa = "rv32imac";
        status = "okay";
        timebase-frequency = <1000000>;
        sifive,dtim = <&dtim>;
        interrupt-controller {
                #interrupt-cells = <1>;
                compatible = "riscv,cpu-intc";
                interrupt-controller;
        };
};

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydevicetree-0.0.5.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydevicetree-0.0.5-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file pydevicetree-0.0.5.tar.gz.

File metadata

  • Download URL: pydevicetree-0.0.5.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.1

File hashes

Hashes for pydevicetree-0.0.5.tar.gz
Algorithm Hash digest
SHA256 37d121e0572a8ac2185c9ab1eb662c9f2d02b514ed81b49c4a27e024fe45b635
MD5 46829ff6ca4bceb58afb59e94054efaa
BLAKE2b-256 b22a6d96cc873046570af53b48ef950829c0bf4cf8e7d874cc1fed87d44b4daf

See more details on using hashes here.

File details

Details for the file pydevicetree-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: pydevicetree-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.1

File hashes

Hashes for pydevicetree-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e7884214dd008c708d31e0fa877445fb77ccdf7f71004c089e99180ff82b271a
MD5 e30cb1e056d0c31e4323e0cdcb72b5cd
BLAKE2b-256 dcac006e92f7d88eefb6a9b7d426816853d96025d64dc86b8b5a55981bd84a1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page