Boot Environment

From FDTWiki

Jump to: navigation, search

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

Personal tools