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.6.tar.gz (20.8 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.6-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pydevicetree-0.0.6.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.1

File hashes

Hashes for pydevicetree-0.0.6.tar.gz
Algorithm Hash digest
SHA256 27dd4b18e72dc2133d6ea279d1d9e16c7fdde3c9768e2729b5b5601990c28e36
MD5 65083becdade4e9b2af1210a83600344
BLAKE2b-256 d0c10633e77346d8506a018ea3908d0ddbe30d88c272912edcb27446654f941b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pydevicetree-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.1

File hashes

Hashes for pydevicetree-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b17b091cd104b10c55b375fcba88c2c71043582d319de1c99c8cd9c9c57a9c5c
MD5 a6a523115b19c63d1a949c13d2e932da
BLAKE2b-256 0b9237276b0cc7f8ba0391235891db2099423056dc6bcd76bd64b5fcadd7e6fe

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