Six Practical Ways to Debug Device Tree and Device Registration in Linux Drivers
This guide outlines six effective debugging techniques—including dtdiff, kernel device‑tree inspection, U‑Boot fdt commands, dtc decompilation, kernel fdt inspection, and of_property APIs—to help developers quickly locate and resolve device‑tree‑related issues during driver development.
6. Accessing device‑tree properties from kernel code
The kernel provides a set of helper functions in include/linux/of.h to query nodes and read properties. Typical usage patterns include:
#include <linux/of.h>
struct device_node *np;
const char *status;
np = of_find_node_by_path("/soc/driver-test");
if (!np) return -ENODEV;
/* Read a string property */
of_property_read_string(np, "status", &status);
/* Read a 32‑bit integer */
u32 clk_phandle;
of_property_read_u32(np, "clocks", &clk_phandle);
/* Check if the node is enabled */
if (of_device_is_available(np)) {
/* probe the driver */
}These APIs are essential for drivers that need to adapt to different hardware configurations described by the device tree.
Liangxu Linux
Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
