[U-Boot] FDT pointer value, passed by the PI firmware, is not set in u-boot

dh at synoia.com dh at synoia.com
Sun Sep 18 02:26:22 CEST 2016


I'm willing to make this change to set the FDT address and test this. Where in the u-boot code should the change be made?

per this thread: https://www.raspberrypi.org/forums/viewtopic.php?t=134018
The DTB start address is size dependent. The aim is to copy the DTB as high as possible. Once the kernel starts it will "unflatten" the DTB into allocated memory and then re-use the space.

ARM memory starts at 0 in the VPU physical address space. The GPU memory sits at the top. This is how it works:Code: Select all
 ARMMEM_END = MEM_SIZE - GPU_MEM// Leave 64KB for GRUB
free_end = ALIGN_DOWN(ARMMEM_END - 0x10000, 0x1000)

// Leave space for initramfs, if there is one
free_end = ALIGN_DOWN(free_end - initramfs_size, 0x1000)

device_tree_address = ALIGN_DOWN(free_end - device_tree_size, 0x100)
Don't forget that the address of the DTB is passed in register r2 to the kernel/U-boot entry point, with r0 holding 0 and r1 being 3138 (the BCM2708 machine id). Duncan Hare

714 931 7952


More information about the U-Boot mailing list