You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 36ed224bac
Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
2 years ago
..
Documentation Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fuzzing Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
libfdt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
pylibfdt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
scripts Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
tests Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
.cirrus.yml Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
.editorconfig Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
.gitignore Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
.travis.yml Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
Android.bp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
BSD-2-Clause Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
CONTRIBUTING.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
GPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
LGPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
LICENSE Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
MANIFEST.in Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
METADATA Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
MODULE_LICENSE_BSD Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
MODULE_LICENSE_GPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
MODULE_LICENSE_LGPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
Makefile Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
Makefile.convert-dtsv0 Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
Makefile.dtc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
Makefile.utils Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
OWNERS Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
README.license Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
README.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
README.version Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
TODO Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
checks.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
convert-dtsv0-lexer.l Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
data.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
dtc-lexer.l Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
dtc-parser.y Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
dtc.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
dtc.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
dtdiff Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fdtdump.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fdtget.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fdtoverlay.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fdtput.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
flattree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
fstree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
livetree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
meson.build Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
meson_options.txt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
setup.py Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
srcpos.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
srcpos.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
treesource.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
util.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
util.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
version_gen.h.in Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
version_non_gen.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago
yamltree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 2 years ago

README.md

Device Tree Compiler and libfdt

The source tree contains the Device Tree Compiler (dtc) toolchain for working with device tree source and binary files and also libfdt, a utility library for reading and manipulating the binary format.

dtc and libfdt are maintained by:

Python library

A Python library wrapping libfdt is also available. To build this you will need to install swig and Python development files. On Debian distributions:

$ sudo apt-get install swig python3-dev

The library provides an Fdt class which you can use like this:

$ PYTHONPATH=../pylibfdt python3
>>> import libfdt
>>> fdt = libfdt.Fdt(open('test_tree1.dtb', mode='rb').read())
>>> node = fdt.path_offset('/subnode@1')
>>> print(node)
124
>>> prop_offset = fdt.first_property_offset(node)
>>> prop = fdt.get_property_by_offset(prop_offset)
>>> print('%s=%s' % (prop.name, prop.as_str()))
compatible=subnode1
>>> node2 = fdt.path_offset('/')
>>> print(fdt.getprop(node2, 'compatible').as_str())
test_tree1

You will find tests in tests/pylibfdt_tests.py showing how to use each method. Help is available using the Python help command, e.g.:

$ cd pylibfdt
$ python3 -c "import libfdt; help(libfdt)"

If you add new features, please check code coverage:

$ sudo apt-get install python3-coverage
$ cd tests
# It's just 'coverage' on most other distributions
$ python3-coverage run pylibfdt_tests.py
$ python3-coverage html
# Open 'htmlcov/index.html' in your browser

The library can be installed with pip from a local source tree:

$ pip install . [--user|--prefix=/path/to/install_dir]

Or directly from a remote git repo:

$ pip install git+git://git.kernel.org/pub/scm/utils/dtc/dtc.git@main

The install depends on libfdt shared library being installed on the host system first. Generally, using --user or --prefix is not necessary and pip will use the default location for the Python installation which varies if the user is root or not.

You can also install everything via make if you like, but pip is recommended.

To install both libfdt and pylibfdt you can use:

$ make install [PREFIX=/path/to/install_dir]

To disable building the python library, even if swig and Python are available, use:

$ make NO_PYTHON=1

More work remains to support all of libfdt, including access to numeric values.

Mailing lists