| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /* SPDX-License-Identifier: GPL-2.0+ */
- /* environment for Raspberry Pi boards */
- dhcpuboot=usb start; dhcp u-boot.uimg; bootm
- /* Environment */
- stdin=serial,usbkbd
- stdout=serial,vidconsole
- stderr=serial,vidconsole
- /* DFU over USB/UDC */
- #ifdef CONFIG_CMD_DFU
- dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;
- config.txt fat 0 1;
- #ifdef CONFIG_ARM64
- dfu_alt_info+=Image fat 0 1
- #else
- dfu_alt_info+=zImage fat 0 1
- #endif
- #endif /* CONFIG_CMD_DFU */
- /*
- * Memory layout for where various images get loaded by boot scripts:
- *
- * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this.
- *
- * Older versions of the boot firmware place the firmware-loaded DTB at 0x100,
- * newer versions place it in high memory. So prevent U-Boot from doing its own
- * DTB + initrd relocation so that we won't accidentally relocate the initrd
- * over the firmware-loaded DTB and generally try to lay out things starting
- * from the bottom of RAM.
- *
- * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM,
- * it must be within the first 128M of RAM in order for the kernel's
- * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed
- * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The
- * decompressor also likes to relocate itself to right past the end of the
- * decompressed kernel, so in total the sum of the compressed and
- * decompressed kernel needs to be reserved.
- *
- * For Aarch64, the kernel image is uncompressed and must be loaded at
- * text_offset bytes (specified in the header of the Image) into a 2MB
- * boundary. The 'booti' command relocates the image if necessary. Linux uses
- * a default text_offset of 0x80000. In summary, loading at 0x80000
- * satisfies all these constraints and reserving memory up to 0x02400000
- * permits fairly large (roughly 36M) kernels.
- *
- * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
- * conflict with something else. Reserving 1M for each of them at
- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
- *
- * On ARM, both the DTB and any possible initrd must be loaded such that they
- * fit inside the lowmem mapping in Linux. In practice, this usually means not
- * more than ~700M away from the start of the kernel image but this number can
- * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
- * parameter given to the kernel. So reserving memory from low to high
- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
- * Even with the smallest possible CPU-GPU memory split of the CPU getting
- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
- * large initrds before they start colliding with U-Boot.
- */
- #ifdef CONFIG_ARM64
- fdt_high=ffffffffffffffff
- initrd_high=ffffffffffffffff
- #else
- fdt_high=ffffffff
- initrd_high=ffffffff
- #endif
- kernel_addr_r=0x00080000
- scriptaddr=0x02400000
- pxefile_addr_r=0x02500000
- fdt_addr_r=0x02600000
- ramdisk_addr_r=0x02700000
- boot_targets=mmc usb pxe dhcp
|