| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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:
- David Gibson <david@gibson.dropbear.id.au>
- Jon Loeliger <loeliger@gmail.com>
- Python library
- --------------
- A Python library 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.
- Adding a new function to libfdt.h
- ---------------------------------
- The shared library uses libfdt/version.lds to list the exported functions, so
- add your new function there. Check that your function works with pylibfdt. If
- it cannot be supported, put the declaration in libfdt.h behind #ifndef SWIG so
- that swig ignores it.
- Tests
- -----
- Test files are kept in the tests/ directory. Use 'make check' to build and run
- all tests.
- If you want to adjust a test file, be aware that tree_tree1.dts is compiled
- and checked against a binary tree from assembler macros in trees.S. So
- if you change that file you must change tree.S also.
- Mailing list
- ------------
- The following list is for discussion about dtc and libfdt implementation
- mailto:devicetree-compiler@vger.kernel.org
- Core device tree bindings are discussed on the devicetree-spec list:
- mailto:devicetree-spec@vger.kernel.org
|