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)
1 year ago
..
Documentation Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fuzzing Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
libfdt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
pylibfdt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
scripts Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tests Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.cirrus.yml Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.editorconfig Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.gitignore Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.travis.yml Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Android.bp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
BSD-2-Clause Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
CONTRIBUTING.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
GPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
LGPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
LICENSE Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
MANIFEST.in Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
METADATA Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
MODULE_LICENSE_BSD Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
MODULE_LICENSE_GPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
MODULE_LICENSE_LGPL Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile.convert-dtsv0 Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile.dtc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile.utils Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
OWNERS Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README.license Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README.version Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
TODO Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
checks.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
convert-dtsv0-lexer.l Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
data.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dtc-lexer.l Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dtc-parser.y Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dtc.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dtc.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dtdiff Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fdtdump.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fdtget.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fdtoverlay.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fdtput.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
flattree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fstree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
livetree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
meson.build Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
meson_options.txt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
setup.py Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
srcpos.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
srcpos.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
treesource.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
util.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
util.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
version_gen.h.in Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
version_non_gen.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
yamltree.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year 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