Blame README

Packit Service 87beb7
The source tree contains the Device Tree Compiler (dtc) toolchain for
Packit Service 87beb7
working with device tree source and binary files and also libfdt, a
Packit Service 87beb7
utility library for reading and manipulating the binary format.
Packit Service 87beb7
Packit Service 87beb7
DTC and LIBFDT are maintained by:
Packit Service 87beb7
Packit Service 87beb7
David Gibson <david@gibson.dropbear.id.au>
Packit Service 87beb7
Jon Loeliger <jdl@jdl.com>
Packit Service 87beb7
Packit Service 87beb7
Packit Service 87beb7
Python library
Packit Service 87beb7
--------------
Packit Service 87beb7
Packit Service 87beb7
A Python library is also available. To build this you will need to install
Packit Service 87beb7
swig and Python development files. On Debian distributions:
Packit Service 87beb7
Packit Service 87beb7
   sudo apt-get install swig python3-dev
Packit Service 87beb7
Packit Service 87beb7
The library provides an Fdt class which you can use like this:
Packit Service 87beb7
Packit Service 87beb7
$ PYTHONPATH=../pylibfdt python3
Packit Service 87beb7
>>> import libfdt
Packit Service 87beb7
>>> fdt = libfdt.Fdt(open('test_tree1.dtb', mode='rb').read())
Packit Service 87beb7
>>> node = fdt.path_offset('/subnode@1')
Packit Service 87beb7
>>> print(node)
Packit Service 87beb7
124
Packit Service 87beb7
>>> prop_offset = fdt.first_property_offset(node)
Packit Service 87beb7
>>> prop = fdt.get_property_by_offset(prop_offset)
Packit Service 87beb7
>>> print('%s=%s' % (prop.name, prop.as_str()))
Packit Service 87beb7
compatible=subnode1
Packit Service 87beb7
>>> node2 = fdt.path_offset('/')
Packit Service 87beb7
>>> print(fdt.getprop(node2, 'compatible').as_str())
Packit Service 87beb7
test_tree1
Packit Service 87beb7
Packit Service 87beb7
You will find tests in tests/pylibfdt_tests.py showing how to use each
Packit Service 87beb7
method. Help is available using the Python help command, e.g.:
Packit Service 87beb7
Packit Service 87beb7
    $ cd pylibfdt
Packit Service 87beb7
    $ python3 -c "import libfdt; help(libfdt)"
Packit Service 87beb7
Packit Service 87beb7
If you add new features, please check code coverage:
Packit Service 87beb7
Packit Service 87beb7
    $ sudo apt-get install python3-coverage
Packit Service 87beb7
    $ cd tests
Packit Service 87beb7
    # It's just 'coverage' on most other distributions
Packit Service 87beb7
    $ python3-coverage run pylibfdt_tests.py
Packit Service 87beb7
    $ python3-coverage html
Packit Service 87beb7
    # Open 'htmlcov/index.html' in your browser
Packit Service 87beb7
Packit Service 87beb7
Packit Service 87beb7
To install the library via the normal setup.py method, use:
Packit Service 87beb7
Packit Service 87beb7
    ./pylibfdt/setup.py install [--prefix=/path/to/install_dir]
Packit Service 87beb7
Packit Service 87beb7
If --prefix is not provided, the default prefix is used, typically '/usr'
Packit Service 87beb7
or '/usr/local'. See Python's distutils documentation for details. You can
Packit Service 87beb7
also install via the Makefile if you like, but the above is more common.
Packit Service 87beb7
Packit Service 87beb7
To install both libfdt and pylibfdt you can use:
Packit Service 87beb7
Packit Service 87beb7
    make install [SETUP_PREFIX=/path/to/install_dir] \
Packit Service 87beb7
            [PREFIX=/path/to/install_dir]
Packit Service 87beb7
Packit Service 87beb7
To disable building the python library, even if swig and Python are available,
Packit Service 87beb7
use:
Packit Service 87beb7
Packit Service 87beb7
    make NO_PYTHON=1
Packit Service 87beb7
Packit Service 87beb7
Packit Service 87beb7
More work remains to support all of libfdt, including access to numeric
Packit Service 87beb7
values.
Packit Service 87beb7
Packit Service 87beb7
Packit Service 87beb7
Tests
Packit Service 87beb7
-----
Packit Service 87beb7
Packit Service 87beb7
Test files are kept in the tests/ directory. Use 'make check' to build and run
Packit Service 87beb7
all tests.
Packit Service 87beb7
Packit Service 87beb7
If you want to adjust a test file, be aware that tree_tree1.dts is compiled
Packit Service 87beb7
and checked against a binary tree from assembler macros in trees.S. So
Packit Service 87beb7
if you change that file you must change tree.S also.
Packit Service 87beb7
Packit Service 87beb7
Packit Service 87beb7
Mailing list
Packit Service 87beb7
------------
Packit Service 87beb7
The following list is for discussion about dtc and libfdt implementation
Packit Service 87beb7
mailto:devicetree-compiler@vger.kernel.org
Packit Service 87beb7
Packit Service 87beb7
Core device tree bindings are discussed on the devicetree-spec list:
Packit Service 87beb7
mailto:devicetree-spec@vger.kernel.org