Boot Environment
From FDTWiki
This page documents the operating system independent setup for passing a flattened device tree blob when booting an operating system.
Contents |
ARM
Draft This spec is based on Nico's proposal sent to the devicetree-discuss mailing list BootingLinuxOnArm.
Required System State
- Quiesce all DMA
- CPU register contents
- r0 = 0
- r1 = Linux SOC family DT machine number (as defined in the ARM Linux machine database). Unlike legacy ATAG booting, there is one unique ID is per SOC family not per machine.
- r2 = Physical address of FDT blob in system RAM
- IRQs disabled
- MMU off
- Instruction cache either on or off
- Data cache(s) turned off
ATAG to Device Tree Node Mapping
For DT booting, there are no ATAGs so information passed via ATAGs in legacy boot are passed via the device tree blob.
| Device Tree Node | Legacy ATAG | Legacy ATAG description and payload format |
|---|---|---|
|
TBD | ATAG_MEM | Physical memory region
struct tag_mem32 {
u32 size;
u32 start;
};
|
|
TBD | ATAG_VIDEOTEXT | VGA text display |
|
TBD | ATAG_RAMDISK | Location and size of Linux ramdisk image
struct tag_ramdisk {
u32 flags;
u32 size;
u32 start;
};
|
|
TBD | ATAG_INITRD2 | Linux initrd image
struct tag_initrd {
u32 start;
u32 size;
};
|
|
TBD | ATAG_SERIAL | 64 bit machine serial number
struct tag_serialnr {
u32 low;
u32 high;
};
|
|
TBD | ATAG_REVISION | 32 bit board revision number
struct tag_revision {
u32 rev;
};
|
|
TBD | ATAG_VIDEOLFB | |
|
TBD | ATAG_CMDLINE | Boot parameter string
struct {
char cmdline[1];
};
|
Microblaze
PowerPC
See ePAPR standard for details
