| ## pyfdt : Python Flattened Device Tree Manipulation ## |
| ---------- |
| The pyfdt library is aimed to facilitate manipulation of the flattened device tree in order to parse it and generate output in various formats. |
| |
| It is highly based on fdtdump for the dtc compiler package. |
| |
| Support Inputs : |
| - Device Tree Blob (.dtb) |
| - Filesystem |
| - JSON (See JSONDeviceTree.md) |
| |
| Supported Outputs : |
| - Device Tree Blob (DTB) |
| - Device Tree Structure (text DTS) |
| - JSON (See JSONDeviceTree.md) |
| |
| Device Tree filesystem 'output' is available via the fusemount.py FUSE sample using [fusepy](https://github.com/terencehonles/fusepy) library. |
| |
| The object data permits : |
| - add/delete/pop nodes and attributes |
| - create attributes dynamically with native python types |
| - walk throught the tree |
| - resolve and generate "paths" |
| - parse from DTB or filesystem |
| - output DTB or DTS |
| - output JSON |
| - compare two tree |
| - merge two trees |
| |
| Any API, code, syntax, tests or whatever enhancement is welcomed, but consider this an alpha version project not yet used in production. |
| |
| No DTS parser/compiler is event considered since "dtc" is the official compiler, but i'm open to any compiler implementation over pyfdt... |
| |
| Typical usage is : |
| ``` |
| from pyfdt import FdtBlobParse |
| with open("myfdt.dtb") as infile: |
| dtb = FdtBlobParse(infile) |
| print dtb.to_fdt().to_dts() |
| ``` |
| |
| Will open a binary DTB and output an human readable DTS structure. |
| |
| The samples directory shows how to : |
| - checkpath.py : resolve a FDT path to get a node object |
| - dtbtodts.py : how to convert from DTB to DTS |
| - fusemount.py : how to mount the DTB into a Device Tree filesystem you can recompile using dtc |
| - python-generate.py : generate a FDT in 100% python and generate a DTS from it |
| - walktree.py : List all paths of the device tree |
| - fstodtb.py : Device Tree blob creation from Filesystem device tree like DTC |
| |
| [Device Tree Wiki](http://www.devicetree.org) |
| [Device Tree Compiler](http://www.devicetree.org/Device_Tree_Compiler) |
| |
| [](https://travis-ci.org/superna9999/pyfdt) |