diff --git a/notes/chapter3-page-tables b/notes/chapter3-page-tables index a469820..0bbc4eb 100644 --- a/notes/chapter3-page-tables +++ b/notes/chapter3-page-tables @@ -169,3 +169,17 @@ How exec works `loadseg` uses `walkaddr` to find the phy@ of the allocated memory at which to write ELF segments To read sections from a binary: objdump -p file + +DEVICE TREE (devicetree, DT or DTB for device tree blob or even Flattened Devicetree Blob) + => file representing the hardware so the kernel can initialize devices and provide them to the users. + +Before DTs: + hardware was either hardcoded (with each system-on-chip being listed and their devices enumerated) or + detected with A LOT OF plateform-specific features such as BIOS, EFI, ACPI, etc. + +DTs are an improvement over ACPI since ACPI isn't properly standardized and implementations are often buggy. + +IN QEMU: this file can be created by QEMU and loaded by a bootloader somewhere in RAM, or provided to qemu. +IN REAL LIFE: this file may be generated statically then loaded by the +bootloader (or EFI?) in RAM then the address is provided to the kernel. +Real kernels will get their configuration from different sources anyway.