Dtb Firmware -
tftpboot $fdt_addr my_board.dtb
/ model = "ACME, Custom Board v2"; compatible = "acme,custom-board";memory@80000000 device_type = "memory"; reg = <0x80000000 0x10000000>; /* 256 MB at 0x8000_0000 */ ; uart@fe001000 compatible = "ns16550a"; reg = <0xfe001000 0x1000>; interrupts = <0 10 4>; clock-frequency = <1843200>; ;
;
Compiled via dtc -I dts -O dtb -o board.dtb board.dts.
On x86 servers and PCs, ACPI (Advanced Configuration and Power Interface) provides runtime hardware enumeration. But ACPI requires AML bytecode to be executed by the OS, which is heavy, complex, and historically buggy. Embedded systems favor DTB because: dtb firmware
The tradeoff: changes to hardware (like plugging into a different carrier board) require loading a different DTB—hence the need for firmware to select the correct one.
The compiled .dtb file must be made available to your bootloader. In U-Boot, you typically: tftpboot $fdt_addr my_board
Like device firmware updates, overlays apply delta changes to the base DTB at boot. Popular on Raspberry Pi and Jetson platforms, overlays enable pluggable HATs or capes. The boot firmware (e.g., start4.elf on RPi) loads overlays before launching the kernel.
fdtdump myboard.dtb | head -20
bootz $kernel_addr - $fdt_addr