r/embeddedlinux • u/Mindless-Attempt4187 • 53m ago
I’m building a semantic engine for Linux Device Trees
One thing I've found increasingly frustrating when working with Linux Device Trees is that the information you need is rarely in one place.
A node in a .dts file might depend on information from:
- DTS/DTSI includes
- YAML bindings
- dt-schema
- kernel drivers
- SoC documentation
- board-specific files
- phandles and references
- Device Tree overlays
The information is there, but understanding how all these pieces relate often means jumping between different files, repositories and tools.
There are already tools that handle some of these problems individually. What I couldn't find was something that connects the different layers of Device Tree knowledge together.
So I've been building DTstudio, a semantic engine for Linux Device Trees.
Instead of treating a Device Tree simply as a text file or a hierarchy, I'm trying to build a semantic model of what the nodes, properties, bindings and references actually mean.
For example, the goal is to go from:
node → compatible → binding → property definition → constraints → referenced nodes → related hardware
and keep that context available while working on the tree.
The editor is essentially the interface for exploring that knowledge.
Here's a short GIF of the current implementation:

It's still in beta and there is a lot more I want to figure out.
For people working with Linux Device Trees:
What information do you usually have to look up manually when working on a DTS?
I'm particularly interested in the things that technically exist somewhere in the kernel, bindings or documentation, but are difficult to discover or connect together.
Free download on: dt-studio.dev