66 lines
2.4 KiB
Batchfile
66 lines
2.4 KiB
Batchfile
# Pinecube u-boot script
|
|
# Adapted from Armbian
|
|
|
|
echo "[+] Helium u-boot script for Pinecube"
|
|
echo "[+] Congratulations! Boot ROM has found and started the bootloader."
|
|
|
|
# Setup
|
|
setenv load_addr "0x45000000"
|
|
setenv overlay_error "false"
|
|
|
|
# Default options
|
|
setenv verbosity "7"
|
|
setenv console "on"
|
|
setenv disp_mem_reserves "off"
|
|
setenv docker_optimizations "on"
|
|
setenv earlycon "on"
|
|
|
|
# Deault rootfs
|
|
setenv devnum "0"
|
|
setenv rootdev "/dev/mmcblk${devnum}p1"
|
|
setenv rootfstype "ext4"
|
|
|
|
# Print boot source
|
|
itest.b *0x28 == 0x00 && setenv boot_source "Primary SD card"
|
|
itest.b *0x28 == 0x02 && setenv boot_source "eMMC/Secondary SD card"
|
|
itest.b *0x28 == 0x03 && setenv boot_source "SPI ROM"
|
|
echo "[+] Boot source: ${boot_source}"
|
|
|
|
# Set up boot device info
|
|
if test "${devtype}" = "mmc"; then
|
|
part uuid mmc ${devnum}:1 partuuid;
|
|
setenv devnum ${mmc_bootdev}
|
|
setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
|
|
fi
|
|
echo "[+] Boot script loaded from ${devtype}:${devnum}"
|
|
|
|
# Load boot configuration
|
|
if test -e ${devtype} ${devnum} ${prefix}boot.cfg; then
|
|
load ${devtype} ${devnum} ${load_addr} ${prefix}boot.cfg
|
|
env import -t ${load_addr} ${filesize}
|
|
echo "[+] Loaded boot configuration: ${devtype}:${devnum}:${prefix}boot.cfg"
|
|
else
|
|
echo "[-] No boot configuration found, running defaults"
|
|
fi
|
|
|
|
# Apply boot configuration
|
|
if test "${console}" = "on"; then setenv consoleargs "console=ttyS0,115200 console=tty1"; fi
|
|
if test "${earlyconsole}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi
|
|
|
|
setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=${devtype} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
|
|
|
|
if test "${disp_mem_reserves}" = "off"; then setenv bootargs "${bootargs} sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16"; fi
|
|
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi
|
|
|
|
# Load boot files
|
|
echo "[+] Loading kernel image ${devtype}:${devnum}:${prefix}zImage @ ${kernel_addr_r}"
|
|
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
|
|
echo "[+] Loading device tree ${devtype}:${devnum}:${prefix}${fdtfile} @ ${fdt_addr_r}"
|
|
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}${fdtfile}
|
|
fdt addr ${fdt_addr_r}
|
|
fdt resize 65536
|
|
|
|
echo "[+] Setup finished, booting..."
|
|
# We're booting without initramfs
|
|
bootz ${kernel_addr_r} - ${fdt_addr_r}
|